Presentation on how Meetup tackles web performance. Given on:
- Nov 17th, 2009 for the NY Web Performance Group (http://www.meetup.com/Web-Performance-NY/)
- Jan 26th, 2010 for NYC Tech Talks Meetup Group (http://www.meetup.com/NYC-Tech-Talks/)
Java & containers: What I wish I knew before I used it | DevNation Tech TalkRed Hat Developers
They told you that using Java with containers was great, but they never mentioned that it wouldn't be that easy, right? You have all the advantages of containers like isolation, scalability, ease of deployment, and version management, but what about the pitfalls when using it with Java? Memory management, image size, initialization time … sometimes they can be tricky. But there's a way out. Luckily, there are some best practices that will rescue your application from failing. From the Dockerfile to the Java updates (from 9 to 14 and beyond), you can have the best of both worlds right in your hands. Join this practical session to transform the way you deal with Java and containers today.
WildFly core is fully modular application server, which is used as base to build WildFly EE container and much more. Functionalities such as EE are implemented as sets of extensions also known as subsystems.
Extensions give you low level access to application server’s functionalities such as
JBoss Modules for class loading
Domain management model
Deployment processors
Modular Service Container (aka service kernel)
Java & containers: What I wish I knew before I used it | DevNation Tech TalkRed Hat Developers
They told you that using Java with containers was great, but they never mentioned that it wouldn't be that easy, right? You have all the advantages of containers like isolation, scalability, ease of deployment, and version management, but what about the pitfalls when using it with Java? Memory management, image size, initialization time … sometimes they can be tricky. But there's a way out. Luckily, there are some best practices that will rescue your application from failing. From the Dockerfile to the Java updates (from 9 to 14 and beyond), you can have the best of both worlds right in your hands. Join this practical session to transform the way you deal with Java and containers today.
WildFly core is fully modular application server, which is used as base to build WildFly EE container and much more. Functionalities such as EE are implemented as sets of extensions also known as subsystems.
Extensions give you low level access to application server’s functionalities such as
JBoss Modules for class loading
Domain management model
Deployment processors
Modular Service Container (aka service kernel)
Building highly scalable website requires to understand the core building blocks of your applicative environment. In this talk we dive into Jahia core components to understand how they interact and how by (1) respecting a few architectural practices and (2) fine tuning Jahia components and the JVM, you will be able to build a highly scalable service
"MySQL on AWS RDS and its Myth" Kabilesh ( Co-founder Mydbops ). RDS has Proces and Con's , Kabilesh shares his experience on RDS and busted a few myths.
Using advanced options in MariaDB Connector/JMariaDB plc
MariaDB Connector/J is our widely used Type 4 JDBC driver for Java. This session covers the basics of getting started with Java and MariaDB, and moves quickly to more advanced topics, including connection pooling, automatic failover and debugging. Diego Dupin also includes an overview of popular object/relational mapping (ORM) and programming frameworks for Java. Even if you have been using the MariaDB Connector/J for years, come to this session to learn about the latest release, see where the connector is going and discover the latest tips and tricks.
Migrate your EOL MySQL servers to HA Complaint GR Cluster / InnoDB Cluster Wi...Mydbops
This talk focuses on the challenges and strategies to be followed when you're planning for a MySQL upgrade from the End of life versions of MySQL 5.5, 5.6, Even 5.7.
Event: Mywebinar (Mydbops)
Topic:
High Availability with InnoDB Cluster (This presentation deals with the transaction flow in InnoDB Cluster and how it can be deployed on a WAN based network for High Availability.)
Presenter: Karthik P R (Founder / CEO - Mydbops )
Wars of MySQL Cluster ( InnoDB Cluster VS Galera ) Mydbops
MySQL Clustering over InnoDB engines has grown a lot over the last decade. Galera began working with InnoDB early and then Group Replication came to the environment later, where the features are now rich and robust. This presentation offers a technical comparison of both of them.
Continuous Integration has improved software development process, while deployment of software often does not get as much attention. In this presentation we describe an approach for efficient cloud deployment of highly distributed system which can be quite complex to deal with. DeploymentManager(DM) tool is developed as internal project of Infobip company for managing large number(cca. 250 instances) of internal services in our data centers using automated deployment and controling load balancing software(Apache, HaProxy). With DM tool it is possible to deploy build(jar, war, egg…) on any environment(Windows, Linux) in max 5 minutes, without technical knowledge about deployment process, making Continuous Delivery process fast and simple.
About Logical Backups
Available Backup Tools for taking Logical backup
Mydumper/Myloader with Options
MySQL Shell utility with Options
Working with MySQL Shell utility taking logical backup
and restore.
This is a presentation at Bengaluru TechDay -October2019 for Oracle Database Admin and Architects presented by Karthik P R ( CEO Mydbops ). He explains the possible High Availability options in MySQL ecosystem.
https://www.meetup.com/All-India-Oracle-Users-Group-Bangalore-Chapter/events/265252214/
The talk will elaborate on how to detect and Heal your MySQL topology with MySQL Orchestrator .This talk was delivered on Mydbops database Meetup on 27-04-2019 by Anil Yadav, Lead Database Engineer with OLA and Krishna Ramanathan Database Administrator III with OLA.
Building better Node.js applications on MariaDBMariaDB plc
In this session, Diego Dupin teaches tips and tricks for using the new Node.js connector for MariaDB. Recent driver updates include exciting new features such as a promise-based API, pipelining and insert streaming. Targeted at beginner to intermediate Node.js developers, this session includes basics for getting started with Node.js before focusing on best practices and more advanced topics. The session finishes with an overview of integration with well-known Node.js frameworks, including the popular objection/relational mapping (ORM) frameworks.
Presented at Bucharest Java User Group, http://www.bjug.ro/editii/5.html . Project source code available at: https://github.com/bucharest-jug/dropwizard-todo
Building highly scalable website requires to understand the core building blocks of your applicative environment. In this talk we dive into Jahia core components to understand how they interact and how by (1) respecting a few architectural practices and (2) fine tuning Jahia components and the JVM, you will be able to build a highly scalable service
"MySQL on AWS RDS and its Myth" Kabilesh ( Co-founder Mydbops ). RDS has Proces and Con's , Kabilesh shares his experience on RDS and busted a few myths.
Using advanced options in MariaDB Connector/JMariaDB plc
MariaDB Connector/J is our widely used Type 4 JDBC driver for Java. This session covers the basics of getting started with Java and MariaDB, and moves quickly to more advanced topics, including connection pooling, automatic failover and debugging. Diego Dupin also includes an overview of popular object/relational mapping (ORM) and programming frameworks for Java. Even if you have been using the MariaDB Connector/J for years, come to this session to learn about the latest release, see where the connector is going and discover the latest tips and tricks.
Migrate your EOL MySQL servers to HA Complaint GR Cluster / InnoDB Cluster Wi...Mydbops
This talk focuses on the challenges and strategies to be followed when you're planning for a MySQL upgrade from the End of life versions of MySQL 5.5, 5.6, Even 5.7.
Event: Mywebinar (Mydbops)
Topic:
High Availability with InnoDB Cluster (This presentation deals with the transaction flow in InnoDB Cluster and how it can be deployed on a WAN based network for High Availability.)
Presenter: Karthik P R (Founder / CEO - Mydbops )
Wars of MySQL Cluster ( InnoDB Cluster VS Galera ) Mydbops
MySQL Clustering over InnoDB engines has grown a lot over the last decade. Galera began working with InnoDB early and then Group Replication came to the environment later, where the features are now rich and robust. This presentation offers a technical comparison of both of them.
Continuous Integration has improved software development process, while deployment of software often does not get as much attention. In this presentation we describe an approach for efficient cloud deployment of highly distributed system which can be quite complex to deal with. DeploymentManager(DM) tool is developed as internal project of Infobip company for managing large number(cca. 250 instances) of internal services in our data centers using automated deployment and controling load balancing software(Apache, HaProxy). With DM tool it is possible to deploy build(jar, war, egg…) on any environment(Windows, Linux) in max 5 minutes, without technical knowledge about deployment process, making Continuous Delivery process fast and simple.
About Logical Backups
Available Backup Tools for taking Logical backup
Mydumper/Myloader with Options
MySQL Shell utility with Options
Working with MySQL Shell utility taking logical backup
and restore.
This is a presentation at Bengaluru TechDay -October2019 for Oracle Database Admin and Architects presented by Karthik P R ( CEO Mydbops ). He explains the possible High Availability options in MySQL ecosystem.
https://www.meetup.com/All-India-Oracle-Users-Group-Bangalore-Chapter/events/265252214/
The talk will elaborate on how to detect and Heal your MySQL topology with MySQL Orchestrator .This talk was delivered on Mydbops database Meetup on 27-04-2019 by Anil Yadav, Lead Database Engineer with OLA and Krishna Ramanathan Database Administrator III with OLA.
Building better Node.js applications on MariaDBMariaDB plc
In this session, Diego Dupin teaches tips and tricks for using the new Node.js connector for MariaDB. Recent driver updates include exciting new features such as a promise-based API, pipelining and insert streaming. Targeted at beginner to intermediate Node.js developers, this session includes basics for getting started with Node.js before focusing on best practices and more advanced topics. The session finishes with an overview of integration with well-known Node.js frameworks, including the popular objection/relational mapping (ORM) frameworks.
Presented at Bucharest Java User Group, http://www.bjug.ro/editii/5.html . Project source code available at: https://github.com/bucharest-jug/dropwizard-todo
Grâce aux tags Varnish, j'ai switché ma prod sur Raspberry PiJérémy Derussé
Le moyen le plus rapide d'obtenir une réponse d'un Backend est de ne pas l'appeler ;-) Une solution fournie par les "reverse-proxy" me direz-vous, mais pas si simple d'invalider le cache...
Ce talk aborde une fonctionnalité méconnue de Varnish: les tags. Nous verrons comment en tirer partie via les "event listeners" d'une application Symfony standard. Au menu, un cluster de Rasberry Pi, une API, et des données toujours fraîches sous la milliseconde.
CollabSphere 2021 - DEV114 - The Nuts and Bolts of CI/CD With a Large XPages ...Jesse Gallagher
Though Domino makes working with build servers and CI/CD pipelines difficult, it is possible to do so even with complex applications. This session will discuss the specifics of using several OpenNTF projects - NSF ODP Tooling, the Jakarta XPages Runtime, and XPages Jakarta EE Support - as well as open-source technologies such as Docker to build, test, and deploy Java-based Domino applications for testing and staging. This builds on previous sessions about the NSF ODP Tooling and Maven generally.
Organizations focus process optimization of
Data Tier
Application Tier
Presentation Tier is usually ignored.
Presentation Tier is responsible for more than 30% of Client/Server application performance.
A complete guide of optimizing Magento performance systematically, including LAMP(Linux, Apache, MySQL, PHP) optimization, tuning inside Magento and useful tools.
Deploying configurable frontend web application containersJosé Moreira
Deploying containerized client-side web applications requires a different configuration strategy compared to system applications. The runtime of client-side web applications is the client-side web browser and, unlike other applications which can utilize environment values, configuration has to be hard-coded in the Javascript source code.
Web Performance Part 4 "Client-side performance"Binary Studio
The presentation is devoted to client side performance of a web app. All 4 presentations will help you reduce latency, enrich optimization of javascript code, discover tricky parts when working with API browser, see best practices of networking and learn lots of other important and interesting things. Enjoy! =)
In this session we will present an overview from the point of view 'system that implementative on how to get the best performance from your drupal application.
We will also show examples of use cases for drupal scalable infrastructure.
Derek Willian Stavis (Pagar.me)
Todo mundo diz que Webpack é só um module bundler. Mas o que é um módulo? O que é um bundler? Porque precisamos disso? Vamos caminhar pela história do desenvolvimento web para entender estes conceitos, e no final vamos dissecar a configuração e o output do Webpack para entendermos como ele funciona e como ele pode facilitar o seu processo de desenvolvimento.
Vale do Carbono Conference
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...DanBrown980551
Do you want to learn how to model and simulate an electrical network from scratch in under an hour?
Then welcome to this PowSyBl workshop, hosted by Rte, the French Transmission System Operator (TSO)!
During the webinar, you will discover the PowSyBl ecosystem as well as handle and study an electrical network through an interactive Python notebook.
PowSyBl is an open source project hosted by LF Energy, which offers a comprehensive set of features for electrical grid modelling and simulation. Among other advanced features, PowSyBl provides:
- A fully editable and extendable library for grid component modelling;
- Visualization tools to display your network;
- Grid simulation tools, such as power flows, security analyses (with or without remedial actions) and sensitivity analyses;
The framework is mostly written in Java, with a Python binding so that Python developers can access PowSyBl functionalities as well.
What you will learn during the webinar:
- For beginners: discover PowSyBl's functionalities through a quick general presentation and the notebook, without needing any expert coding skills;
- For advanced developers: master the skills to efficiently apply PowSyBl functionalities to your real-world scenarios.
JMeter webinar - integration with InfluxDB and GrafanaRTTS
Watch this recorded webinar about real-time monitoring of application performance. See how to integrate Apache JMeter, the open-source leader in performance testing, with InfluxDB, the open-source time-series database, and Grafana, the open-source analytics and visualization application.
In this webinar, we will review the benefits of leveraging InfluxDB and Grafana when executing load tests and demonstrate how these tools are used to visualize performance metrics.
Length: 30 minutes
Session Overview
-------------------------------------------
During this webinar, we will cover the following topics while demonstrating the integrations of JMeter, InfluxDB and Grafana:
- What out-of-the-box solutions are available for real-time monitoring JMeter tests?
- What are the benefits of integrating InfluxDB and Grafana into the load testing stack?
- Which features are provided by Grafana?
- Demonstration of InfluxDB and Grafana using a practice web application
To view the webinar recording, go to:
https://www.rttsweb.com/jmeter-integration-webinar
Securing your Kubernetes cluster_ a step-by-step guide to success !KatiaHIMEUR1
Today, after several years of existence, an extremely active community and an ultra-dynamic ecosystem, Kubernetes has established itself as the de facto standard in container orchestration. Thanks to a wide range of managed services, it has never been so easy to set up a ready-to-use Kubernetes cluster.
However, this ease of use means that the subject of security in Kubernetes is often left for later, or even neglected. This exposes companies to significant risks.
In this talk, I'll show you step-by-step how to secure your Kubernetes cluster for greater peace of mind and reliability.
Transcript: Selling digital books in 2024: Insights from industry leaders - T...BookNet Canada
The publishing industry has been selling digital audiobooks and ebooks for over a decade and has found its groove. What’s changed? What has stayed the same? Where do we go from here? Join a group of leading sales peers from across the industry for a conversation about the lessons learned since the popularization of digital books, best practices, digital book supply chain management, and more.
Link to video recording: https://bnctechforum.ca/sessions/selling-digital-books-in-2024-insights-from-industry-leaders/
Presented by BookNet Canada on May 28, 2024, with support from the Department of Canadian Heritage.
DevOps and Testing slides at DASA ConnectKari Kakkonen
My and Rik Marselis slides at 30.5.2024 DASA Connect conference. We discuss about what is testing, then what is agile testing and finally what is Testing in DevOps. Finally we had lovely workshop with the participants trying to find out different ways to think about quality and testing in different parts of the DevOps infinity loop.
Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...Jeffrey Haguewood
Sidekick Solutions uses Bonterra Impact Management (fka Social Solutions Apricot) and automation solutions to integrate data for business workflows.
We believe integration and automation are essential to user experience and the promise of efficient work through technology. Automation is the critical ingredient to realizing that full vision. We develop integration products and services for Bonterra Case Management software to support the deployment of automations for a variety of use cases.
This video focuses on the notifications, alerts, and approval requests using Slack for Bonterra Impact Management. The solutions covered in this webinar can also be deployed for Microsoft Teams.
Interested in deploying notification automations for Bonterra Impact Management? Contact us at sales@sidekicksolutionsllc.com to discuss next steps.
Neuro-symbolic is not enough, we need neuro-*semantic*Frank van Harmelen
Neuro-symbolic (NeSy) AI is on the rise. However, simply machine learning on just any symbolic structure is not sufficient to really harvest the gains of NeSy. These will only be gained when the symbolic structures have an actual semantics. I give an operational definition of semantics as “predictable inference”.
All of this illustrated with link prediction over knowledge graphs, but the argument is general.
Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024Tobias Schneck
As AI technology is pushing into IT I was wondering myself, as an “infrastructure container kubernetes guy”, how get this fancy AI technology get managed from an infrastructure operational view? Is it possible to apply our lovely cloud native principals as well? What benefit’s both technologies could bring to each other?
Let me take this questions and provide you a short journey through existing deployment models and use cases for AI software. On practical examples, we discuss what cloud/on-premise strategy we may need for applying it to our own infrastructure to get it to work from an enterprise perspective. I want to give an overview about infrastructure requirements and technologies, what could be beneficial or limiting your AI use cases in an enterprise environment. An interactive Demo will give you some insides, what approaches I got already working for real.
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024Albert Hoitingh
In this session I delve into the encryption technology used in Microsoft 365 and Microsoft Purview. Including the concepts of Customer Key and Double Key Encryption.
Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...Ramesh Iyer
In today's fast-changing business world, Companies that adapt and embrace new ideas often need help to keep up with the competition. However, fostering a culture of innovation takes much work. It takes vision, leadership and willingness to take risks in the right proportion. Sachin Dev Duggal, co-founder of Builder.ai, has perfected the art of this balance, creating a company culture where creativity and growth are nurtured at each stage.
The Art of the Pitch: WordPress Relationships and SalesLaura Byrne
Clients don’t know what they don’t know. What web solutions are right for them? How does WordPress come into the picture? How do you make sure you understand scope and timeline? What do you do if sometime changes?
All these questions and more will be explored as we talk about matching clients’ needs with what your agency offers without pulling teeth or pulling your hair out. Practical tips, and strategies for successful relationship building that leads to closing the deal.
The Art of the Pitch: WordPress Relationships and Sales
Meetup Performance
1. Meetup Performance
Greg Whalin, CTO Meetup (@gwhalin), Justin Cataldo, Lead UI Engineer (@jcataldo), Will Howard, Lead UI Engineer
2. Meetup
Platform for local groups
Mission is MEME (Meetup Everywhere About Most Everything)
~6.2m members
~70k Groups
~500k group joins every month
~5 million Meetups have happened
~53 million RSVPs
3. General Architecture and Back-
end Performance
(just a tiny bit - this could and
should be another presentation)
4. Data
MySQL (any RDBMs store) biggest pain
replication
use InnoDB!
smart indexing (take advantage of clustered indexes)
server side conn pools and short timeouts on connections
smart about fs choice on Linux (we use XFS after benchmarking)
Hardware - relatively expensive boxes
multi-core (8 or 16) Opteron
lots of ram (32/64GB)
fast drives (lots of spindles, RAID10)
Cache, cache, cache!
innodb buffer cache
memcache
local app server memory
Shrink data when possible
archive unused data
custom serialization when serializing
data partitioning/sharding
5. Storage
Over half a million photos uploaded to Meetup every month
Scaled and processed into 4 different sizes (plus original)
6. Storage solutions
Options for growth include NAS, SAN, or something else
NAS and SAN are single point of failure and possibly $$$
Only postpones problem
7. MogileFS
developed by Brand Fitzpatrick (i.e. Memcached)
OSS distributed filesystem (built in Perl)
any hard drive on network can easily be added to cluster
scales easily and cheaply
13. Why does performance matter?
Slow site
Bad User Experience
Drop in Member
Activity
14. Why focus on front end performance?
Back end only accounts for 10-15% of the response time
Less time and resources
Costs less
http://developer.yahoo.net/blog/archives/2007/03/high_performanc.html
19. 3 Steps to improving performance
1. Externalize script
2. Move scripts to the bottom of the page
3. Reduce requests
20. 3 Steps to improving performance
1. Externalize script
2. Move scripts to the bottom of the page
3. Reduce requests
21. Why externalize scripts
Prevents blocking
Inline scripts prevent asynchronous downloads
Downloads must wait for the script to be executed
Caching
Inline JavaScript is downloaded every time
External scripts are cached by the browser
Reduced overall page size
Reusable
Can use the same code somewhere else on the site
easily
23. 3 Steps to improving performance
1. Externalize script
2. Move scripts to the bottom of the page
3. Reduce requests
24. Web:script
Custom tag built in house
Moves inline and external script to the bottom of the page
Allows UI engineers to not have to worry about where they
place scripts
Compresses inline script using YUICompressor
/***** Load External Script *****/
<web:script src="/script/Meetup/packed/EventDetails.js" />
/***** Load Inline Script *****/
<web:script>
Meetup.Copy.noMembersMarkedAttended = "<trn:message key="event.attendance.noMembersMarkedAttended">No
members have been marked attended</trn:message>";
Meetup.Copy.noMembersMarkedAttendedDynam = '<trn:message key="event.attendance.
noMembersMarkedAttendedDynam"><trn:param name="GROUPING">__GROUPING__</trn:param>No members in
"{GROUPING}" have been marked attended</trn:message>';
Meetup.Copy.noMembersMarkedAbsent = "<trn:message key="event.attendance.noMembersMarkedAbsent">No
members have been marked absent</trn:message>";
</web:script>
25. 3 Steps to improving performance
1. Externalize script
2. Move scripts to the bottom of the page
3. Reduce requests
27. Concatenation using Sprockets
Sprockets (www.getsprockets.com)
Created by 37Signals
Ruby library that preprocesses and concatenates JavaScript
files
Baked into our build process
30. Lazy Loading
Defer loading of javascript files until they are needed
Reduces the initial upfront requests
Helps reduce blocking by downloading files asynchronously
Precaching
31. Lazy Loading: How it works
Inserts scripts into the head dynamically
var scriptNode = function(src) {
return createDOM("script", {
"type": "text/javascript",
"src": src
});
}
var load = function(id, src, n) {
var script = scriptNode(url);
head.appendChild(script);
script.onload = script.onreadystatechange = function() {
if (!this.readyState || this.readyState == "loaded" || this.readyState == "complete") {
script.onload = script.onreadystatechange = null;
}
}
}
Meetup.Script.include("http://static2.meetupstatic.com/script/Meetup/DomDeco/LinkDecorator.js",callback);
38. Execute early: DOMReady
Libraries that have a DOM ready solution:
jQuery
YUI
Prototype
Pretty much every modern JS library (not MochiKit)
Meetup uses MochiKit, so we rolled our own.
39. Execute early: DOMReady
And by rolled our own, I mean we're using the Dean
Edwards/Matthias Miller/John Resig implementation.
http://dean.edwards.name/weblog/2006/06/again/#comment5338
With a few changes.
Meetup.DOMReady.ready(function(){
Meetup.EventDetails.init();
if(Meetup.EventDetails.isCanceled != 4 && Meetup.EventDetails.rsvp != 0){
deletePopup = new Meetup.CommentDeleteConfirm();
deletePopup.pagerOffsetFieldName = "p_commentsList";
deletePopup._decorate();
}
});
40. Execute early: Even earlier
Do you need to wait for the DOM to be ready?
If you aren't manipulating the DOM, there's no reason to
wait until it's ready.
41. Automated Image Optimization
Using smush.it
http://developer.yahoo.com/yslow/smushit/
Smusher Ruby gem
http://github.com/grosser/smusher (gem install smusher)
BASH script that watches our image directories for
changes and executes smusher.
./filescan.sh /usr/local/meetup/static/img/ 'smusher -q @' 'jpg,png'&
43. Event Delegation
But first, a little bit about event bubbling...
From: http://www.quirksmode.org/js/events_order.html
44. Event Delegation
Pros Cons
Does not work well with nested elements
Much faster on load (not
Doesn't work with all events
connecting DOM elements)
Slight performance hit with execution
No need to disconnect /
reconnect with AJAX calls
Fewer memory leaks
A lot of JS libraries already have plug-ins for event
delegation (jQuery, YUI, prototype).
But, it's pretty easy to write your own (we did).
47. Event Delegation: Meetup.Dispatcher
<div id="C_page">
...
<span class="meetup-topic"><a class="topic-id-7029 topic-link J_onClick topic-info-hover" href="
http://javascript.meetup.com/cities/us/ny/brooklyn/">JavaScript</a></span>
...
</div>
// Inits a new instance of dispatcher
// Connects a mouseover event to the parent container "C_page"
var mdp = Meetup.Dispatcher.init("C_page", "onmouseover");
// Calls Meetup.UI.infoHover.mouseOver() when target element has "topic-info-hover" class.
mdp.registerFunc("topic-info-hover", Meetup.UI.InfoHover.mouseOver);
Meetup.UI.infoHover.mouseOver = function(e) {
topicId = _getTopicId(e.target());
if (!topicId || topicId == "") return;
_primeCache(topicId);
var activeEl = _getActiveEl(e.target());
var pos = getElementPosition(activeEl);
...
}
48. Speeding up DOM crawling with Sizzle
sizzlejs.com
Internet Explorer 7
MochiKit: 6623.94ms
Sizzle: 306.03ms
Firefox 3.5
MochiKit: 210.524ms
Sizzle: 111.553ms
49. Where do we go from here?
More concatenation and lazy loading where it makes sense
Defer image loading where it makes sense
Reduce DOM elements
Reduce CSS and improved selector efficiency
and more
51. Launches
Launch multiple times a day (sometimes)
Need launches to be quick / no downtime
Optimize static resources only at deploy time and only if
modified
52. Deployment of static content
Sprockets (reduce requests)
YUICompressor for js (local mod to speed up optimizing
multiple files)
Pre-compress css and jsp
Set cache-control to be fresh for over a year (indefinite)
All links on site generate programatically and versioned