SlideShare a Scribd company logo
1 of 79
Download to read offline
www.JLP.community
Early December 2015
Optimization Tooling for
Modern Web App
Development
☑ Optimize Code Development
☑ Optimize Development Operation
☑ Optimize Production Site
☒ Conversion Optimization
☒ Search Engine Optimization
☒ User Experience Optimization
☒ Browser Rendering Optimization
☒ Website Performance Optimization
ANYTHING
But before we continue,
let’s introduce
ourselves first
M Haidar Hanif
Knowledge Connector,
Technology Generalist,
Technical Lead of Agnium
@mhaidarh | mhaidarhanif.com
As usual,
please CMIIW
First,
why?
Optimize our
work and result
Always be careful on
your options
Pertamax!
Maybe you like
a case study
Hackathon Merdeka 3.0
Website
(Even though it's not a web app)
github.com/Code4Nation/hackathon → code4nation.github.io/hackathon → hackathonmerdeka.id
github.com/Code4Nation/hackathon → code4nation.github.io/hackathon → hackathonmerdeka.id
How much request and
data transferred?
(for each homepage load)
85 requests
10.5 MB
(Even on mobile)
Let’s have some ideas to
fix those kind of things
(Especially yours if you have)
“The Hacker Way is an approach to building
that involves continuous improvement and iteration.
Hackers believe that something can always be
better, and that nothing is ever complete.”
―Mark Zuckerberg
Let’s start from
the ground up
Optimization Level of
Step and Structure
Test
Step
Measure
Optimize
Repeat
1. Baseline on trivial assets
a. Image optimization
b. Code minification
c. File concatenation
d. Compression (gzip/Zopfli)
e. Async scripts
f. Leverage caching
g. Light font format (WOFF2)
h. Image sprites
i. Avoid redirection
Structure
2. Further on assets processing
a. Inline critical CSS
b. Remove unused CSS
c. Remove duplicated or combine similar
attributes (selector, color, size, font family)
d. Offline with service worker
e. Set performance budget
f. etc
Structure
We will talk just
the essentials
(Everything else can be googled)
3 Worlds
Global | Automation | Preprocessing
The global world
(Quick and simple)
http://w3.org
Final Landscape
PageSpeed
by Google
https://developers.google.com/speed/pagespeed
Speed
https://cloudflare.com
Network
Application Performance Management & Monitoring
http://newrelic.com
Chrome DevTools
by Google
https://developers.google.com/chrome-developer-tools
Developer Tools Suite
JPEG
http://larahogan.me/design
The Right Image Assets at The Right Condition
PNG
GIF
PNG-8
PNG-24
WebP
SVG
CSS
Image Compression Tools
JPEG ⇒ jpegoptim, jpegmini, etc
PNG ⇒ PNGOptim, OptiPNG,
TinyPNG
SVG ⇒ SVGO / SVGOMG!
All in one ⇒ Trimage or ImageOptim
Super Magic ⇒ ImageMagick (mogrify)
The world of
Node.js, Modularity,
and Automation
Language, Platform, Packages
http://javascript.com | https://nodejs.org | http://npmjs.com | http://bower.io
Bower
nvm
Automated System/Process/Runner for Build/Task
http://gulpjs.com | http://gruntjs.com
Gulp
(stream code)
Grunt
(configuration)
gulp-grunt
Gulp v Grunt
var gulp = require('gulp');
var rename = require('gulp-rename');
gulp.task('default', function() {
gulp.src('*.htm')
.pipe(rename({ extname: '.html'}))
.pipe(gulp.dest('./folder'));
});
module.exports = function(grunt) {
grunt.initConfig({
rename: { main: { files: [ {src: ['*.htm'], dest: './folder/*.html'}, ]
} }
});
grunt.loadNpmTasks('grunt-contrib-rename');
grunt.registerTask('default', ['rename']);
};
Live Editing
http://browsersync.io
Code Style, Syntax, and Potential Error Checking:
Linting / Hinting
http://eslint.org | http://standardjs.com
A. JSLint
B. JSHint
C. ESLint
D. JSCS
E. standard
Reducement of Assets
A. Concatenation
B. Minification/Uglification
C. Compression and gzipping
Automated Generator
http://yeoman.io
Yeoman
(scaffold)
Automated Generator
http://slushjs.github.io
Slush
Generators
http://yeoman.io/generators
$ npm install -g generator-*
# generator-generator
# generator-webapp
# generator-angular
# generator-backbone
# generator-ember
# generator-mobile
# generator-ionic
# generator-wordpress
# generator-express
# etc
The world of
preprocessing
http://coffeescript.org
JavaScript Preprocessing
JavaScript v CoffeeScript
var listen;
listen = function(el, event, handler) {
if (el.addEventListener) {
return el.addEventListener(event, handler);
} else {
return el.attachEvent('on' + event, function() {
return handler.call(el);
});
}
};
listen = (el, event, handler) ->
if el.addEventListener
el.addEventListener event, handler
else
el.attachEvent 'on' + event, ->
handler.call el
http://jade-lang.com | http://haml.info
HTML Preprocessing (Template Engine)
Jade v Haml
doctype html
html(lang="en")
head
title= pageTitle
body
h1 Heading
#container.col
p.
Jade is a terse and simple
templating language with a
strong focus on performance
and powerful features.
!!!
%html{:lang => "en"}
%head
%title Page Title
%body
%h1 Heading
#container.col
%p
Haml is a beautiful, DRY,
well-indented, clear
markup: templating haiku.
http://lesscss.org | http://sass-lang.com | https://github.com/postcss/postcss
CSS Preprocessing
Autoprefixer
PostCSS
Less/Scss v Stylus
.opacity(@opacity) {
opacity: @opacity / 100;
}
a {
&:hover {
.opacity(70);
}
}
.opacity(@opacity)
opacity @opacity / 100
a
&:hover
.opacity(70)
We can also add those
preprocessors into our
build process
Gulp and Grunt Plugins for Preprocessing
http://browsersync.io | http://imagemagick.org
$ npm install --save-dev gulp-*
$ npm install --save-dev grunt-contrib-*
# gulp-coffee # grunt-contrib-coffee
# gulp-jade # grunt-contrib-jade
# gulp-haml # grunt-haml
# gulp-less # grunt-contrib-less
# gulp-sass # grunt-contrib-sass
# gulp-stylus # grunt-contrib-stylus
# gulp-autoprefixer # grunt-autoprefixer
Let's install them
Gotta Install Them All!
# Install Node.js from OS package manager or nvm
$ sudo apt-get install nodejs # or brew install node
$ nvm install v4
# Install tools globally as a CLI app
$ npm install -g bower gulp grunt yo
# Initialize npm and Bower config file
$ cd path/to/repo
$ npm init && bower init
# Install npm and Bower dependencies
$ npm install && bower install
Getting Started with Gulp/Grunt
# Install Gulp/Grunt
$ npm install -g gulp grunt
# Install in repo development dependencies
$ npm install --save-dev gulp grunt
# Create a gulpfile.js or Gruntfile at the root of repo
$ vim gulpfile.js
$ vim Gruntfile
# Install Yeoman and Slush
$ npm install -g yo slush
# Install a generator
$ npm install -g generator-*
$ npm install -g slush-*
# Using a generator
$ cd path/to/repo
$ yo <generator-name>
$ slush <generator-name>
Getting Started with Yeoman/Slush
Run Them
# Check out our installed Node.js
$ node -v
# Run Gulp/Grunt to do something
$ gulp <command>
$ grunt <command>
# Serve our web app for development
$ gulp serve
$ grunt serve
# Build our web app for production
$ gulp build
$ grunt build
The result should
be what we expected:
a web app
Is it too much?
Google Developers and Udacity
have you covered
https://developers.google.com/web/fundamentals
Web Fundamentals
http://developers.google.com/web/starter-kit
Web Starter Kit
https://www.udacity.com/course/web-tooling-automation--ud892
Web Tooling & Automation
Now,
are you ready for
some action?
Let’s try them all
in a single
live action demo!
That’s a wrap!
Final advice:
Search, try, and
experiment
● IDE and/or code editor choice and plugins
● Unit, integration, functional, acceptance, e2e testing
● Continuous Integration with Jenkins, Travis, Drone
● Browser tweaks, extensions, or plugins
● Splitting environments (dev, staging, production)
● JS transpilation to CoffeeScript, TypeScript, ES6, JSX
● JS source maps for debugging
● Responsive web design
What I couldn’t cover today
Something like...
★ https://javascript.com
★ http://jankfree.org
★ http://singlepageappbook.com
★ http://yeoman.io/blog/performance-optimization.html
★ http://addyosmani.com/blog/performance-optimisation-with-timeline-profiles
★ https://speakerdeck.com/addyosmani/css-performance-tooling
★ https://css-tricks.com/the-difference-between-minification-and-gzipping
★ http://automateyourworkflow.com
★ http://wesbos.com/modern-javascript-workflow-tooling
★ http://engineroom.teamwork.com/10-things-to-know-about-gulp
★ https://developers.google.com/cloud-test-lab
★ https://github.com/addyosmani/critical
★ EXTRA BOOKMARK LINKS ★
Congratulations!
We just finished
a supposedly
18-24 hours of learning
https://speakerdeck.com/JLPcommunity
Any question or
more ideas?
www.JLP.community

More Related Content

What's hot

Angular workflow with gulp.js
Angular workflow with gulp.jsAngular workflow with gulp.js
Angular workflow with gulp.js
Cihad Horuzoğlu
 
Building a desktop app with HTTP::Engine, SQLite and jQuery
Building a desktop app with HTTP::Engine, SQLite and jQueryBuilding a desktop app with HTTP::Engine, SQLite and jQuery
Building a desktop app with HTTP::Engine, SQLite and jQuery
Tatsuhiko Miyagawa
 
PDXPortland - Dockerize Django
PDXPortland - Dockerize DjangoPDXPortland - Dockerize Django
PDXPortland - Dockerize Django
Hannes Hapke
 

What's hot (20)

Angular workflow with gulp.js
Angular workflow with gulp.jsAngular workflow with gulp.js
Angular workflow with gulp.js
 
Modern web applications infrastructure
Modern web applications infrastructureModern web applications infrastructure
Modern web applications infrastructure
 
GraphQL IN Golang
GraphQL IN GolangGraphQL IN Golang
GraphQL IN Golang
 
Automating Large Applications on Modular and Structured Form with Gulp
Automating Large Applications on Modular and Structured Form with GulpAutomating Large Applications on Modular and Structured Form with Gulp
Automating Large Applications on Modular and Structured Form with Gulp
 
Plack at OSCON 2010
Plack at OSCON 2010Plack at OSCON 2010
Plack at OSCON 2010
 
Building a desktop app with HTTP::Engine, SQLite and jQuery
Building a desktop app with HTTP::Engine, SQLite and jQueryBuilding a desktop app with HTTP::Engine, SQLite and jQuery
Building a desktop app with HTTP::Engine, SQLite and jQuery
 
Plack at YAPC::NA 2010
Plack at YAPC::NA 2010Plack at YAPC::NA 2010
Plack at YAPC::NA 2010
 
Service Workers for Performance
Service Workers for PerformanceService Workers for Performance
Service Workers for Performance
 
Grunt to automate JS build
Grunt to automate JS buildGrunt to automate JS build
Grunt to automate JS build
 
Yeoman
YeomanYeoman
Yeoman
 
60分鐘完送百萬edm,背後雲端ci/cd實戰大公開
60分鐘完送百萬edm,背後雲端ci/cd實戰大公開60分鐘完送百萬edm,背後雲端ci/cd實戰大公開
60分鐘完送百萬edm,背後雲端ci/cd實戰大公開
 
PDXPortland - Dockerize Django
PDXPortland - Dockerize DjangoPDXPortland - Dockerize Django
PDXPortland - Dockerize Django
 
Big query - Command line tools and Tips - (MOSG)
Big query - Command line tools and Tips - (MOSG)Big query - Command line tools and Tips - (MOSG)
Big query - Command line tools and Tips - (MOSG)
 
Vagrant and Configuration Management
Vagrant and Configuration ManagementVagrant and Configuration Management
Vagrant and Configuration Management
 
Deploying Symfony | symfony.cat
Deploying Symfony | symfony.catDeploying Symfony | symfony.cat
Deploying Symfony | symfony.cat
 
Front-end development automation with Grunt
Front-end development automation with GruntFront-end development automation with Grunt
Front-end development automation with Grunt
 
Grunt - The JavaScript Task Runner
Grunt - The JavaScript Task RunnerGrunt - The JavaScript Task Runner
Grunt - The JavaScript Task Runner
 
TDC2016SP - Esqueça Grunt ou Gulp. Webpack and NPM rule them all!
TDC2016SP -  Esqueça Grunt ou Gulp. Webpack and NPM rule them all!TDC2016SP -  Esqueça Grunt ou Gulp. Webpack and NPM rule them all!
TDC2016SP - Esqueça Grunt ou Gulp. Webpack and NPM rule them all!
 
PSGI/Plack OSDC.TW
PSGI/Plack OSDC.TWPSGI/Plack OSDC.TW
PSGI/Plack OSDC.TW
 
JavaScript Task Runners - Gulp & Grunt
JavaScript Task Runners - Gulp & GruntJavaScript Task Runners - Gulp & Grunt
JavaScript Task Runners - Gulp & Grunt
 

Similar to JLPDevs - Optimization Tooling for Modern Web App Development

Quest for the Perfect Workflow for McrFRED
Quest for the Perfect Workflow for McrFREDQuest for the Perfect Workflow for McrFRED
Quest for the Perfect Workflow for McrFRED
Andi Smith
 

Similar to JLPDevs - Optimization Tooling for Modern Web App Development (20)

Gulp - The Streaming Build System
Gulp - The Streaming Build SystemGulp - The Streaming Build System
Gulp - The Streaming Build System
 
Grunt & Front-end Workflow
Grunt & Front-end WorkflowGrunt & Front-end Workflow
Grunt & Front-end Workflow
 
ZendCon 2015 - DevOps for Small Teams
ZendCon 2015 - DevOps for Small TeamsZendCon 2015 - DevOps for Small Teams
ZendCon 2015 - DevOps for Small Teams
 
Quest for the Perfect Workflow for McrFRED
Quest for the Perfect Workflow for McrFREDQuest for the Perfect Workflow for McrFRED
Quest for the Perfect Workflow for McrFRED
 
Madison PHP 2015 - DevOps For Small Teams
Madison PHP 2015 - DevOps For Small TeamsMadison PHP 2015 - DevOps For Small Teams
Madison PHP 2015 - DevOps For Small Teams
 
Toolbox of a Ruby Team
Toolbox of a Ruby TeamToolbox of a Ruby Team
Toolbox of a Ruby Team
 
Mojolicious
MojoliciousMojolicious
Mojolicious
 
Automated Development Workflow with Gulp
Automated Development Workflow with GulpAutomated Development Workflow with Gulp
Automated Development Workflow with Gulp
 
Instrumentación de entrega continua con Gitlab
Instrumentación de entrega continua con GitlabInstrumentación de entrega continua con Gitlab
Instrumentación de entrega continua con Gitlab
 
The Secrets of The FullStack Ninja - Part A - Session I
The Secrets of The FullStack Ninja - Part A - Session IThe Secrets of The FullStack Ninja - Part A - Session I
The Secrets of The FullStack Ninja - Part A - Session I
 
2015 - Basta! 2015, DE: JavaScript und build
2015 - Basta! 2015, DE: JavaScript und build2015 - Basta! 2015, DE: JavaScript und build
2015 - Basta! 2015, DE: JavaScript und build
 
Automating WordPress Plugin Development with Gulp
Automating WordPress Plugin Development with GulpAutomating WordPress Plugin Development with Gulp
Automating WordPress Plugin Development with Gulp
 
2014-11-11 Multiple Approaches to Managing Puppet Modules @ Puppet Camp Seattle
2014-11-11 Multiple Approaches to Managing Puppet Modules @ Puppet Camp Seattle2014-11-11 Multiple Approaches to Managing Puppet Modules @ Puppet Camp Seattle
2014-11-11 Multiple Approaches to Managing Puppet Modules @ Puppet Camp Seattle
 
Gulp and bower Implementation
Gulp and bower Implementation Gulp and bower Implementation
Gulp and bower Implementation
 
Develop Android app using Golang
Develop Android app using GolangDevelop Android app using Golang
Develop Android app using Golang
 
DevOps For Small Teams
DevOps For Small TeamsDevOps For Small Teams
DevOps For Small Teams
 
Let Grunt do the work, focus on the fun! [Open Web Camp 2013]
Let Grunt do the work, focus on the fun! [Open Web Camp 2013]Let Grunt do the work, focus on the fun! [Open Web Camp 2013]
Let Grunt do the work, focus on the fun! [Open Web Camp 2013]
 
Modern Web Application Development Workflow - EclipseCon France 2014
Modern Web Application Development Workflow - EclipseCon France 2014Modern Web Application Development Workflow - EclipseCon France 2014
Modern Web Application Development Workflow - EclipseCon France 2014
 
From Zero to Hadoop: a tutorial for getting started writing Hadoop jobs on Am...
From Zero to Hadoop: a tutorial for getting started writing Hadoop jobs on Am...From Zero to Hadoop: a tutorial for getting started writing Hadoop jobs on Am...
From Zero to Hadoop: a tutorial for getting started writing Hadoop jobs on Am...
 
Manual google page speed
Manual google page speedManual google page speed
Manual google page speed
 

Recently uploaded

CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICECHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
9953056974 Low Rate Call Girls In Saket, Delhi NCR
 
The title is not connected to what is inside
The title is not connected to what is insideThe title is not connected to what is inside
The title is not connected to what is inside
shinachiaurasa2
 
TECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providerTECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service provider
mohitmore19
 
introduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdf
introduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdfintroduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdf
introduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdf
VishalKumarJha10
 
AI Mastery 201: Elevating Your Workflow with Advanced LLM Techniques
AI Mastery 201: Elevating Your Workflow with Advanced LLM TechniquesAI Mastery 201: Elevating Your Workflow with Advanced LLM Techniques
AI Mastery 201: Elevating Your Workflow with Advanced LLM Techniques
VictorSzoltysek
 

Recently uploaded (20)

CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICECHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
 
The title is not connected to what is inside
The title is not connected to what is insideThe title is not connected to what is inside
The title is not connected to what is inside
 
10 Trends Likely to Shape Enterprise Technology in 2024
10 Trends Likely to Shape Enterprise Technology in 202410 Trends Likely to Shape Enterprise Technology in 2024
10 Trends Likely to Shape Enterprise Technology in 2024
 
Payment Gateway Testing Simplified_ A Step-by-Step Guide for Beginners.pdf
Payment Gateway Testing Simplified_ A Step-by-Step Guide for Beginners.pdfPayment Gateway Testing Simplified_ A Step-by-Step Guide for Beginners.pdf
Payment Gateway Testing Simplified_ A Step-by-Step Guide for Beginners.pdf
 
TECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providerTECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service provider
 
Azure_Native_Qumulo_High_Performance_Compute_Benchmarks.pdf
Azure_Native_Qumulo_High_Performance_Compute_Benchmarks.pdfAzure_Native_Qumulo_High_Performance_Compute_Benchmarks.pdf
Azure_Native_Qumulo_High_Performance_Compute_Benchmarks.pdf
 
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfLearn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
 
VTU technical seminar 8Th Sem on Scikit-learn
VTU technical seminar 8Th Sem on Scikit-learnVTU technical seminar 8Th Sem on Scikit-learn
VTU technical seminar 8Th Sem on Scikit-learn
 
%in Midrand+277-882-255-28 abortion pills for sale in midrand
%in Midrand+277-882-255-28 abortion pills for sale in midrand%in Midrand+277-882-255-28 abortion pills for sale in midrand
%in Midrand+277-882-255-28 abortion pills for sale in midrand
 
A Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docxA Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docx
 
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
 
%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein
%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein
%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein
 
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdfThe Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
 
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
 
introduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdf
introduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdfintroduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdf
introduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdf
 
OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...
OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...
OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...
 
Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...
Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...
Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...
 
AI Mastery 201: Elevating Your Workflow with Advanced LLM Techniques
AI Mastery 201: Elevating Your Workflow with Advanced LLM TechniquesAI Mastery 201: Elevating Your Workflow with Advanced LLM Techniques
AI Mastery 201: Elevating Your Workflow with Advanced LLM Techniques
 
8257 interfacing 2 in microprocessor for btech students
8257 interfacing 2 in microprocessor for btech students8257 interfacing 2 in microprocessor for btech students
8257 interfacing 2 in microprocessor for btech students
 
%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisa%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisa
 

JLPDevs - Optimization Tooling for Modern Web App Development