The document discusses techniques for optimizing JavaScript and AJAX performance. It recommends planning for performance from the start, measuring performance during development, reducing unnecessary code, optimizing assets, and handling long-running processes by breaking work into chunks. Specific tips include minimizing HTTP requests, leveraging caching, optimizing regular expressions, and using innerHTML for document modifications instead of DOM methods.
The secret web performance metric no one is talking about
As presented as JSConf Korea. https://2022.jsconf.kr/en/speakers/anna-migas
Web performance and its impact on the user experience has been a huge topic over past few years. After working for over a year on a project directed towards emerging markets (namely Nigeria and Kenya), I came to realise that the popular web performance metrics are all centred around a specific type of person: someone who is used to the fast and reliable connection. In my talk I want to share my experience on how to look at the overall web performance with the new metric in mind - user’s patience.
During my talk, I want to give an insight on my work with the app that is dedicated towards the users who are working with it in not-so-ideal conditions with an unreliable connection and how to guide them through this experience. I want to chat about the cases when web performance metrics as we know it will not be applicable and what can we do to ensure the user will be able to successfully navigate the app using the well designed information and some performance tricks. I will also share details about the background of users in Africa and how their perception might differ from the users we typically develop for—since these are the fastest growing markets, maybe soon this knowledge come useful to you too
Scaling SEO by Building Products - Search London Meetup Nov 17
My talk at November 2017 Search London Meetup.
Covering how we scaled organic search growth by building products together with full stack engineers & how we operate an autonomous & independent SEO team.
Cómo Desarrollar Auditorías que Maximicen el éxito SEO #SEODay
En esta presentación aprenderás cómo desarrollar auditorías SEO que sean estratégicas, contextuales, segmentadas, priorizadas, accionables, iterativas e incrementales para maximizar el éxito del proceso SEO.
Canonicalization for SEO BrightonSEO April 2023 Patrick Stox
Canonicalization is a process that webmasters use to tell search engines which URL is the preferred version for a page that may have duplicate content across different URLs. It helps search engines understand which version of a page should be considered the original and primary version for things like search rankings. Properly implementing canonicalization can help avoid duplicate content penalties and ensure the right URL receives credit in search results.
Core Web Vitals is a guidance from Google to delivering a great user experience on the web. There're three new metrics to define the website has a good experience or not. The metrics are Largest Contentful Paint, First Input Delay, and Cumulative Layout Shift.
Brighton SEO 2021 - A Deep Dive into the Depths of DevTools
Brighton SEO 2021 - A Deep Dive into the Depths of DevTools
Resources for all the code snippets and more from this talk can be found here: https://defaced.dev/talks/brightonseo-depths-of-devtools/
How to Use Search Intent to Dominate Google Discover
In this talk you will learn how search intent can help you benefit from the growing popularity of Google Discover. You’ll get actionable tips, a case study example and exclusive data from SEMrush.
How to get more traffic with less content - BrightonSEO
I want you to go away after this with a really clear view on why less definitely is more, what you can do to decide what actually is too much content to have on your site, and how to go about reducing the number of pages you’ve got.
Ultimately, you’re here to find out how to reduce the amount of work you have to do in the long-run to get the same amount or more traffic.
We must have equality by now? Why unconscious bias in the agency world is holding you back.
We still live in a world where your boss is more likely to be called Steve, than to be a woman. In the US, 48% of African American women report being mistaken for administrative or custodial staff, whilst in meetings women are interrupted 33 percent more often than men.
Have you ever felt that your opinions and expertise are valued less that your colleagues, that you’re being talked over in meetings, or not invited to give your opinion? Sexism and discrimination has changed from being something blatant and obvious, to more of an undertone of challenge that makes life that little bit harder for certain sectors of the population. Men get more airtime in the boardroom, and women are more likely to get interrupted. It’s not always the unpleasant chauvinist who is being sexist, it can come from other women, or the man that you actually like and respect.
This sort of unconscious bias leaves us experiencing self-doubt which negatively affects our performance, our confidence and chances of promotion. Yet often we can’t put our fingers on why we feel this way, because of its very nature being more discreet.
Cheryl Luzet became fascinated about unconscious bias having experienced it herself running a marketing agency. From people assuming that her male staff member must be the boss, to having her opinions questioned and challenged by male clients – challenges that mysteriously disappear when a man backs them up.
With real examples from agency life, Cheryl highlights the challenges that exist for anyone working in an agency, who doesn’t fit the white, male mould.
This talk isn’t just for women, if you’re a man you absolutely need to attend to find out how unconscious bias has perpetuated society that we assume is now ‘equal’. Find out how you can help to support your female colleagues get an equal opportunity.
Organigrama del concejo municipal de sucre del estado bolivariano de miranda
El documento presenta el organigrama del Concejo Municipal de Sucre del Estado Bolivariano de Miranda. El organigrama muestra que el Concejo Municipal está compuesto por la Presidencia, Vicepresidencia, Secretaría Municipal, Comisiones Permanentes y Cronistas. La Secretaría Municipal supervisa varias oficinas como la de Atención al Ciudadano, Protocolo, Tecnología y Análisis Financieros. La Secretaría también tiene su propio organigrama interno con unidades de Archivo, Telecomunicaciones, Correspondencia y Reproducción.
2018년 6월 24일 "백수들의 Conference"에서 발표한 개발자를 위한 (블로그) 글쓰기 intro입니다
좋은 글을 많이 보는 노하우 + 꾸준히 글을 작성하는 노하우에 대해 주로 이야기했습니다! (어떻게 글을 작성하는가는 없어요!)
피드백은 언제나 환영합니다 :)
Performance budgets have been around for more than ten years. Over those years, we’ve learned a lot about what works, what doesn’t, and what we need to improve. In this session, I revisit old assumptions about performance budgets and offers some new practices. Topics include:
• Aligning budgets with user experience
• Pros and cons of Core Web Vitals
• Budgets for beginners
The Big SEO Migration - Learnings from a first time hiker
In this presentation Rene will cover the highs and lows of managing a large Ecommerce website migration for the first time. Migrations can be overwhelming so in this talk Rene will cover how to tackle the SEO essentials, stakeholder and developer management as well as how to to gain key learnings. Of course, redirects, how to change the URL structure for the better and server-side rendering will all feature. This is a high level inspirational talk centered around the highs and lows of the hike to the migration finish line with hopefully some key take-aways along the way.
Hannah Rogers - Facing Your SEO Fears: Forecasting
A run through of the importance of accountability in SEO forecasting, an example of how to incorporate this into your processes and how it can help your work in the long term
No More "It Depends" - Learn to Set your Visual SEO Resources #LondonSEOMeetu...
This document discusses how SEOs often answer questions with the vague response of "it depends" and provides better alternatives. It recommends developing reusable resources like diagrams, charts and frameworks to more clearly explain SEO scenarios, processes and criteria. This helps avoid vague answers, establish trust, and facilitate decision making. It also encourages analyzing activities and setting replicable systems to improve services and grow expertise.
This document outlines a new way to learn physics and chemistry in English for 4th year ESO students. Students will study physics and chemistry concepts using an English textbook and online course, practicing their English skills while learning science. Although the teacher is not an English instructor, the course is designed to improve students' communication in English without formally evaluating their language level, with exams also conducted in English.
The document discusses topic models like Latent Dirichlet Allocation (LDA) and Correlated Topic Models (CTM). LDA is a generative probabilistic model that can discover topics in a collection of documents and represent documents as mixtures over latent topics. CTM extends LDA by allowing topic correlations, since LDA assumes topic independence. CTM models topic proportions using a logistic normal distribution rather than LDA's Dirichlet distribution, allowing dependencies between topics.
Testers are under big new pressure to use Agile software methods, Ajax environments, and Mobile environments. In this session, Frank Cohen of Appvance will show how Best Buy and PepsiCo cope with the changes: How they select test tools, test management tools, and create operational test data. See how this all fits together in an Agile environment using Continuous Integration, Source Repository, Test Scripting, and Agile Test Management for Agile Stories. Frank will show practical examples - to the code level - to deal with desktop browsers, iOS and Android native apps, WebKit and Mobile Web browsers.
The document discusses optimizing Node.js applications for production environments. It describes how as user numbers increase, challenges arise regarding stability and downtime that can be addressed through clustering. It also explains how an in-memory database like Redis can be used to share memory across clusters, and how a reverse proxy like Nginx can serve static files, SSL certificates, and gzip to optimize performance.
Presentation by Richard Bishop and Gordon Appleby at HP Discover 2014 in Barcelona. In the presentation, Richard and Gordon described their experiences in cloud-based performance testing. They discussed the increased adoption of the cloud as an application-testing platform as well as the evolution of HP’s cloud-based testing products including LoadRunner, Performance Center and StormRunner.
The document provides an overview of text mining presented by Yi-Shin Chen. It discusses preprocessing text data which includes language detection, removing noise, stemming, POS tagging, and other techniques. It then covers basic concepts in natural language processing and parsing. Finally, it introduces basic data modeling concepts like the entity-relationship model and its use of entities, attributes, and relationships to represent data.
Talk given at http://jsconf.eu 2009.
You serve up your code gzipped. Your caches are properly configured. Your data (and scripts) are loaded on-demand. That's awesome—so don't stop there. Runtime is another source of slowdowns, and you can learn to conquer those, too.
Learn how to benchmark your code to isolate performance issues, and what to do when you find them. The techniques you'll learn range from the normal (function inlining) to the extreme (unrolling loops).
Lo Mejor de Cibeles Madrid Fashion Week - Otoño/Invierno 2010 - 2011
Lo mejor de los mejores diseñadores (bajo mi criterio) de la Pasarela Cibeles para este Otoño/Invierno 2010 - 2011.
Un resumen bastante completo de las nuevas tendencias e ideas para el próximo invierno, y para "oler" hacia donde va el mercado.
Miss Compulsiva
The document discusses what is required to enable digital government in South Africa. It summarizes that key building blocks include enterprise architecture and governance, performance management, organizational KPI reporting, application development, process-driven governance, risk and compliance management, and IT portfolio management. It then discusses capabilities requested by national, provincial and local departments and outlines the journey to digital government with increasing levels of automation and integration.
Some of the nation’s leading CRM thought leaders joined together for a lively and entertaining discussion about top marketing and CRM trends and best practices. This presentation is geared for social sector practitioners looking to take top lessons from different industries and apply them to their organization or campus. Tap over 75 years of combined experience on strategies to make customer initiatives successful from these featured thought leaders.
The document discusses yeast molecular biology and genetics. It provides information on commonly used yeast species Saccharomyces cerevisiae and Schizosaccharomyces pombe. It discusses yeast genome, life cycle, vectors, cloning, transformation methods, and applications including gene expression and making mutants.
1) The Avengers gather for a gala celebrating the opening of their new headquarters in New York City. Meanwhile, there is a security breach detected in the command center.
2) Captain America, Vision, and Sandman investigate and find an intruder claiming to be Doctor Doom in the sub-basement. After several fights and escapes, the real Doctor Doom is discovered disguised as Iron Man.
3) The issue ends with Doctor Doom taking control of the Avengers headquarters in a cliffhanger moment.
Jen Penaluna: Red Light, Green Light Interviewing Potential Employers | Brigh...JenPenaluna
Interviews definitely work both ways and it’s important to get off on the right foot with an employer that matches your values.
Jen will help you to put potential employers through a Squid Games style game of ‘Red Light, Green Light’ to see which interviewers fall and which make the final cut for your new role.
Interviewers can also take note of what interviewees are really looking for in SEO job ads and throughout the interview process!
Core Web Vitals and Your Search Rankings Michael King
This document discusses Core Web Vitals and their importance to search engine rankings. It begins by introducing Core Web Vitals and their measurement metrics. It then explains how page speed has long been a ranking factor for Google, especially on mobile. The document dives into details on each Core Web Vital metric and how sites can optimize to improve scores. It also summarizes a study that found the vast majority of sites had poor Core Web Vitals scores prior to the Page Experience update rollout. The document stresses the importance of page speed and stability to users and search engines.
The secret web performance metric no one is talking aboutAnna Migas
As presented as JSConf Korea. https://2022.jsconf.kr/en/speakers/anna-migas
Web performance and its impact on the user experience has been a huge topic over past few years. After working for over a year on a project directed towards emerging markets (namely Nigeria and Kenya), I came to realise that the popular web performance metrics are all centred around a specific type of person: someone who is used to the fast and reliable connection. In my talk I want to share my experience on how to look at the overall web performance with the new metric in mind - user’s patience.
During my talk, I want to give an insight on my work with the app that is dedicated towards the users who are working with it in not-so-ideal conditions with an unreliable connection and how to guide them through this experience. I want to chat about the cases when web performance metrics as we know it will not be applicable and what can we do to ensure the user will be able to successfully navigate the app using the well designed information and some performance tricks. I will also share details about the background of users in Africa and how their perception might differ from the users we typically develop for—since these are the fastest growing markets, maybe soon this knowledge come useful to you too
Scaling SEO by Building Products - Search London Meetup Nov 17Fabrizio Ballarini
My talk at November 2017 Search London Meetup.
Covering how we scaled organic search growth by building products together with full stack engineers & how we operate an autonomous & independent SEO team.
Cómo Desarrollar Auditorías que Maximicen el éxito SEO #SEODayAleyda Solís
En esta presentación aprenderás cómo desarrollar auditorías SEO que sean estratégicas, contextuales, segmentadas, priorizadas, accionables, iterativas e incrementales para maximizar el éxito del proceso SEO.
Canonicalization for SEO BrightonSEO April 2023 Patrick StoxAhrefs
Canonicalization is a process that webmasters use to tell search engines which URL is the preferred version for a page that may have duplicate content across different URLs. It helps search engines understand which version of a page should be considered the original and primary version for things like search rankings. Properly implementing canonicalization can help avoid duplicate content penalties and ensure the right URL receives credit in search results.
Core Web Vitals is a guidance from Google to delivering a great user experience on the web. There're three new metrics to define the website has a good experience or not. The metrics are Largest Contentful Paint, First Input Delay, and Cumulative Layout Shift.
Brighton SEO 2021 - A Deep Dive into the Depths of DevToolsChrisJohnson792
Brighton SEO 2021 - A Deep Dive into the Depths of DevTools
Resources for all the code snippets and more from this talk can be found here: https://defaced.dev/talks/brightonseo-depths-of-devtools/
How to Use Search Intent to Dominate Google DiscoverFelipe Bazon
In this talk you will learn how search intent can help you benefit from the growing popularity of Google Discover. You’ll get actionable tips, a case study example and exclusive data from SEMrush.
How to get more traffic with less content - BrightonSEOAnna Gregory-Hall
I want you to go away after this with a really clear view on why less definitely is more, what you can do to decide what actually is too much content to have on your site, and how to go about reducing the number of pages you’ve got.
Ultimately, you’re here to find out how to reduce the amount of work you have to do in the long-run to get the same amount or more traffic.
We must have equality by now? Why unconscious bias in the agency world is holding you back.
We still live in a world where your boss is more likely to be called Steve, than to be a woman. In the US, 48% of African American women report being mistaken for administrative or custodial staff, whilst in meetings women are interrupted 33 percent more often than men.
Have you ever felt that your opinions and expertise are valued less that your colleagues, that you’re being talked over in meetings, or not invited to give your opinion? Sexism and discrimination has changed from being something blatant and obvious, to more of an undertone of challenge that makes life that little bit harder for certain sectors of the population. Men get more airtime in the boardroom, and women are more likely to get interrupted. It’s not always the unpleasant chauvinist who is being sexist, it can come from other women, or the man that you actually like and respect.
This sort of unconscious bias leaves us experiencing self-doubt which negatively affects our performance, our confidence and chances of promotion. Yet often we can’t put our fingers on why we feel this way, because of its very nature being more discreet.
Cheryl Luzet became fascinated about unconscious bias having experienced it herself running a marketing agency. From people assuming that her male staff member must be the boss, to having her opinions questioned and challenged by male clients – challenges that mysteriously disappear when a man backs them up.
With real examples from agency life, Cheryl highlights the challenges that exist for anyone working in an agency, who doesn’t fit the white, male mould.
This talk isn’t just for women, if you’re a man you absolutely need to attend to find out how unconscious bias has perpetuated society that we assume is now ‘equal’. Find out how you can help to support your female colleagues get an equal opportunity.
Organigrama del concejo municipal de sucre del estado bolivariano de mirandaJosé Rivas
El documento presenta el organigrama del Concejo Municipal de Sucre del Estado Bolivariano de Miranda. El organigrama muestra que el Concejo Municipal está compuesto por la Presidencia, Vicepresidencia, Secretaría Municipal, Comisiones Permanentes y Cronistas. La Secretaría Municipal supervisa varias oficinas como la de Atención al Ciudadano, Protocolo, Tecnología y Análisis Financieros. La Secretaría también tiene su propio organigrama interno con unidades de Archivo, Telecomunicaciones, Correspondencia y Reproducción.
2018년 6월 24일 "백수들의 Conference"에서 발표한 개발자를 위한 (블로그) 글쓰기 intro입니다
좋은 글을 많이 보는 노하우 + 꾸준히 글을 작성하는 노하우에 대해 주로 이야기했습니다! (어떻게 글을 작성하는가는 없어요!)
피드백은 언제나 환영합니다 :)
Performance budgets have been around for more than ten years. Over those years, we’ve learned a lot about what works, what doesn’t, and what we need to improve. In this session, I revisit old assumptions about performance budgets and offers some new practices. Topics include:
• Aligning budgets with user experience
• Pros and cons of Core Web Vitals
• Budgets for beginners
The Big SEO Migration - Learnings from a first time hiker ReneHarris7
In this presentation Rene will cover the highs and lows of managing a large Ecommerce website migration for the first time. Migrations can be overwhelming so in this talk Rene will cover how to tackle the SEO essentials, stakeholder and developer management as well as how to to gain key learnings. Of course, redirects, how to change the URL structure for the better and server-side rendering will all feature. This is a high level inspirational talk centered around the highs and lows of the hike to the migration finish line with hopefully some key take-aways along the way.
Hannah Rogers - Facing Your SEO Fears: ForecastingHannahRogers52
A run through of the importance of accountability in SEO forecasting, an example of how to incorporate this into your processes and how it can help your work in the long term
No More "It Depends" - Learn to Set your Visual SEO Resources #LondonSEOMeetu...Aleyda Solís
This document discusses how SEOs often answer questions with the vague response of "it depends" and provides better alternatives. It recommends developing reusable resources like diagrams, charts and frameworks to more clearly explain SEO scenarios, processes and criteria. This helps avoid vague answers, establish trust, and facilitate decision making. It also encourages analyzing activities and setting replicable systems to improve services and grow expertise.
This document outlines a new way to learn physics and chemistry in English for 4th year ESO students. Students will study physics and chemistry concepts using an English textbook and online course, practicing their English skills while learning science. Although the teacher is not an English instructor, the course is designed to improve students' communication in English without formally evaluating their language level, with exams also conducted in English.
Topic Models - LDA and Correlated Topic ModelsClaudia Wagner
The document discusses topic models like Latent Dirichlet Allocation (LDA) and Correlated Topic Models (CTM). LDA is a generative probabilistic model that can discover topics in a collection of documents and represent documents as mixtures over latent topics. CTM extends LDA by allowing topic correlations, since LDA assumes topic independence. CTM models topic proportions using a logistic normal distribution rather than LDA's Dirichlet distribution, allowing dependencies between topics.
Testers are under big new pressure to use Agile software methods, Ajax environments, and Mobile environments. In this session, Frank Cohen of Appvance will show how Best Buy and PepsiCo cope with the changes: How they select test tools, test management tools, and create operational test data. See how this all fits together in an Agile environment using Continuous Integration, Source Repository, Test Scripting, and Agile Test Management for Agile Stories. Frank will show practical examples - to the code level - to deal with desktop browsers, iOS and Android native apps, WebKit and Mobile Web browsers.
The document discusses optimizing Node.js applications for production environments. It describes how as user numbers increase, challenges arise regarding stability and downtime that can be addressed through clustering. It also explains how an in-memory database like Redis can be used to share memory across clusters, and how a reverse proxy like Nginx can serve static files, SSL certificates, and gzip to optimize performance.
Presentation by Richard Bishop and Gordon Appleby at HP Discover 2014 in Barcelona. In the presentation, Richard and Gordon described their experiences in cloud-based performance testing. They discussed the increased adoption of the cloud as an application-testing platform as well as the evolution of HP’s cloud-based testing products including LoadRunner, Performance Center and StormRunner.
The document provides an overview of text mining presented by Yi-Shin Chen. It discusses preprocessing text data which includes language detection, removing noise, stemming, POS tagging, and other techniques. It then covers basic concepts in natural language processing and parsing. Finally, it introduces basic data modeling concepts like the entity-relationship model and its use of entities, attributes, and relationships to represent data.
Talk given at http://jsconf.eu 2009.
You serve up your code gzipped. Your caches are properly configured. Your data (and scripts) are loaded on-demand. That's awesome—so don't stop there. Runtime is another source of slowdowns, and you can learn to conquer those, too.
Learn how to benchmark your code to isolate performance issues, and what to do when you find them. The techniques you'll learn range from the normal (function inlining) to the extreme (unrolling loops).
Lo Mejor de Cibeles Madrid Fashion Week - Otoño/Invierno 2010 - 2011Compulsiva Accesorios
Lo mejor de los mejores diseñadores (bajo mi criterio) de la Pasarela Cibeles para este Otoño/Invierno 2010 - 2011.
Un resumen bastante completo de las nuevas tendencias e ideas para el próximo invierno, y para "oler" hacia donde va el mercado.
Miss Compulsiva
The document discusses what is required to enable digital government in South Africa. It summarizes that key building blocks include enterprise architecture and governance, performance management, organizational KPI reporting, application development, process-driven governance, risk and compliance management, and IT portfolio management. It then discusses capabilities requested by national, provincial and local departments and outlines the journey to digital government with increasing levels of automation and integration.
Thought Leadership from Social Sector MastersSalesforce.org
Some of the nation’s leading CRM thought leaders joined together for a lively and entertaining discussion about top marketing and CRM trends and best practices. This presentation is geared for social sector practitioners looking to take top lessons from different industries and apply them to their organization or campus. Tap over 75 years of combined experience on strategies to make customer initiatives successful from these featured thought leaders.
The document discusses yeast molecular biology and genetics. It provides information on commonly used yeast species Saccharomyces cerevisiae and Schizosaccharomyces pombe. It discusses yeast genome, life cycle, vectors, cloning, transformation methods, and applications including gene expression and making mutants.
1) The Avengers gather for a gala celebrating the opening of their new headquarters in New York City. Meanwhile, there is a security breach detected in the command center.
2) Captain America, Vision, and Sandman investigate and find an intruder claiming to be Doctor Doom in the sub-basement. After several fights and escapes, the real Doctor Doom is discovered disguised as Iron Man.
3) The issue ends with Doctor Doom taking control of the Avengers headquarters in a cliffhanger moment.
This presentation from the Congressional Budget Office summarizes two reports on the distribution of household income, federal taxes, and government spending. It finds that income is highly skewed towards the top, inequality has increased over time, and the tax system is progressive, though average tax rates are low. It also shows that examining both taxes and spending is important, as the elderly receive more in spending than they pay in taxes, and allocating public goods is challenging but necessary.
This document provides tips for adapting gardens for climate change, focusing on soil health, water conservation, and plant selection. It recommends improving soil fertility through composting and adding nutrients naturally rather than using chemicals. Techniques include green manures, biochar, mycorrhizal fungi, and plant-based liquid feeds. It also stresses water conservation through water butts, drip irrigation, mulching, and choosing drought-resistant plants. The overall message is that small adaptations can help gardens thrive with less water and more extreme weather.
The document discusses the Semantic Web and how it provides a common framework to share and reuse data across applications and organizations. It describes Resource Description Framework (RDF) and how it represents relationships in a simple data structure using graphs. It also discusses Linked Data design principles and standards like RDFa and Microformats that embed semantics into web pages. Finally, it provides examples of how search engines like Google and Yahoo utilize structured data from RDFa and Microformats to enhance search results.
El documento proporciona información sobre los requerimientos y actividades académicas para los estudiantes de cuarto año básico de la semana del 25 al 29 de abril. Se detallan las asignaturas, objetivos de aprendizaje, materiales requeridos y evaluaciones. Algunas actividades incluyen la celebración del día del libro, un proyecto de aprendizaje y la entrega de un formulario de consentimiento para exámenes de salud.
The document discusses lessons the PR industry can learn from Kung Fu Panda. It suggests that PR agencies need to focus less on what PR is defined as and question if their agency structures inhibit change. Agencies also need to embrace new players in the marketing ecosystem, become data-driven, and focus on creativity, impact, and new techniques like video over press releases. Learning is also emphasized as the industry and client needs continuously change.
LAST Conference - The Mickey Mouse model of leadership for software delivery ...Nish Mahanty
Leading an agile team can be rewarding and also challenging. It is an opportunity to apply your leadership and vision, and to introduce those the ideas and behaviours that are important to you. One of the main benefits is the opportunity to grow and develop the careers of your teams, and to have an impact wider than your own individual technical skills.
It is also a challenge. Often the skills that got you the promotion, or new job, aren't the ones you need to be successful in the new role. If you are inheriting an existing team, they usually have work in-flight so it’s important to be up to speed with what the team is doing, and whether they are on track for meeting their (now your) objectives. Every team, company, and situation is different, with unique challenges so it is important that you quickly identify where to focus your energies.
I'll outline a framework (with themes and a checklist) for assessing the situation, and constructing a 30 day plan to set yourself, and the team, up for success:
Theme 1: Build the things right (The technical aspects of delivering quality solutions)
Theme 2. Build the right thing (validating the planned deliverables against the desired business outcomes)
Theme 3. Build the right Team (building a resilient, highly engaged, highly skilled team, who work well together and who can efficiently adjust to unforseen changes, whilst still delivering the outcomes)
I believe that a successful agile team achieves a conscious balance between these themes. If they aren't focussed on all three, then they are unlikely to be as successful as they could be.
Against these three themes I'll present and discuss a 6 point checklist that will help the new leader develop a 30 day plan:
1. Business objectives and environment – assess whether the team is doing productive work that aligns with the business needs.
2. Team – build a highly engaged, resilient team that understand their contribution to the larger business outcomes
3. Metrics –continually visualise progress against your goals
4. Stakeholders – build a strong relationship, and clear lines of communication
5. Continual improvement – no team should stand still and no team has reached perfection, so continuously analyse performance and focus on getting better.
6. Budget – understand the financial commitment to help plan activities and team dynamics
The aim of the talk is to be educational, offering up a set of ideas, supported with real-world examples, that the attendees can adopt in their own organisations, to help them and their teams become more successful.
Driving school,Driving school in mentone,Driving Instructor Melbourne,mentone driving school,Melbourne driving schools,Driving school in clayton,Driving school in Dandenong,Driving license,Driving school in glenhuntly
Angular Optimization Web Performance MeetupDavid Barreto
This document summarizes techniques for optimizing Angular applications, including ahead-of-time compilation, lazy loading, change detection strategies, avoiding memory leaks, and server-side rendering. It provides code examples and compares the performance of different approaches by measuring load times. The main takeaways are that ahead-of-time compilation, lazy loading, and server-side rendering can each significantly improve load performance, and that change detection strategies and unsubscribing from observables are important for memory usage and efficiency.
This document summarizes techniques for optimizing Angular application performance, including ahead of time compilation, lazy loading, change detection strategies, avoiding memory leaks, and server side rendering. It provides code examples and compares boot times between different configurations. The techniques can improve first meaningful paint time by up to 86% compared to the default configuration.
Silicon Valley CodeCamp 2008: High performance Ajax with ExtJS and ASP.NETMats Bryntse
This document provides an overview and introduction to using ExtJS with ASP.NET for building high performance AJAX applications. It covers setting up Visual Studio for JavaScript development, debugging techniques, an introduction to ExtJS, examples of ExtJS components like grids and form panels, handling errors, and tips for optimizing AJAX performance.
Talk given at JavaOne 2009 discussing how to build web applications using OSGi. The source for the demo found at http://github.com/mrdon/jforum-plugins/tree/master
Session Abstract: Enterprise Web applications tend to grow like weeds in monolithic complexity. OSGi, although more often associated with Java™ technology-based clients and application servers, can bring a new level of modularity, uptime, and stability that is needed with today's always-on hosted Web applications. OSGi gets really interesting when the pretty architecture diagrams meet the real world, because it consists of various deployment platforms, development environments, and application architectures. This presentation, for Java 2 Platform, Enterprise Edition (J2EE™ platform)-savvy architects and senior developers, provides a practical guide to the Web on OSGi, from integration approach to bundle development, to real-world code you can use today.
The session discusses
• What benefits OSGi brings to the J2EE platform
• Three integration strategies
• How to use Spring DM and Maven to ease development
• Lessons learned from Atlassian's recent OSGi deployment
• A production-ready example to use immediately
The document discusses optimizing performance for Ajax applications. It recommends:
- Keeping client-side code light by only requesting necessary data from the server via JSON messages.
- Avoiding unnecessary DOM touches and reflows which are computationally expensive.
- Measuring performance before and after optimizations to validate improvements rather than relying on intuition.
- Optimizing algorithms and avoiding unnecessary work rather than prematurely optimizing without evidence of need.
- The original vision of the World Wide Web was as a hyperlinked document retrieval system, not for presentation, sessions, or interactivity. If it had stayed true to this vision, modern sites like Yahoo would not exist.
- Browser wars in the 1990s led to proprietary technologies that frustrated developers. The introduction of JavaScript in 1995 allowed for dynamic and interactive web pages.
- By the 2000s, Microsoft's Internet Explorer dominated the browser market, bringing some stability through standards like DOM and DHTML. However, cross-browser differences still posed challenges for developers.
Nobody likes to wait for web pages to load in the browser. The longer it takes, the more dissatisfied the users become. Slow web pages lead to a higher bounce rate and the loss of customers. To solve this kind of problems can be very hard sometimes. Before you even start to optimise your page, you have to understand the workflows a browser performs in order to display a page on the screen. In this talk you will get some insights in the critical rendering path and the javascript engine of your browser that help you to find performance problems and solve them. I will show you also some tools and best practices that make your life easier when it comes to performance.
The document provides an overview of developing high performance web applications, focusing on optimizing front-end performance. It discusses why front-end performance matters, and provides best practices for optimizing page load time, developing responsive interfaces, and efficiently loading and executing JavaScript. The document also covers DOM scripting techniques, tools for profiling and analyzing performance, and how the performance monitoring service Gomez can be extended to better measure client-side metrics.
Writing and Testing JavaScript-heavy Web 2.0 apps with JSUnitAlex Chaffee
With the advent of the so-called Web 2.0 platform, more and more applications are using client-side JavaScript for vital features. In fact, some applications are so JS-heavy that they redefine JavaScript as a full-fledged application development language. In this tutorial we discuss some architectural considerations of JS- and AJAX-heavy applications and present in detail our testing framework, with plenty of code examples.
This document discusses optimizing jQuery and front-end performance. It covers minimizing HTTP requests, file size, and blocking behavior to improve dependency loading. It discusses optimizing initial page rendering through asset ordering, lazy loading, and avoiding reflows and repaints. The document also covers post-load responsiveness techniques like JavaScript optimizations. It provides an overview of jQuery internals and optimizations like chaining selections and avoiding empty sets. Tools mentioned include Google Closure Compiler, dynaTrace AJAX Edition, and Cuzillion.
The document discusses the benefits of using Google Web Toolkit (GWT) for building AJAX applications. It summarizes key features of GWT like cross-compiling Java to JavaScript, deferred binding, compiler optimizations, and UI improvements in GWT 2.x like CSS resources, image inlining, and UiBinder. It encourages adopting GWT for its speed advantages like file caching and reduced payload sizes.
This document provides tips for improving the performance of ASP.NET applications. It discusses ways to optimize ASP.NET pages by reducing page size, minimizing viewstate, and adding caching. It also recommends optimizing database queries, using asynchronous calls judiciously, and profiling SQL to identify inefficient queries. Configuration tips include enabling compression, removing unnecessary HTTP modules, and setting the application pool start mode to AlwaysRunning.
Javascript unit testing, yes we can e bigAndy Peterson
This document discusses test-driven development for JavaScript using ScrewUnit and BlueRidge. It introduces the Carbon Five consulting firm and covers why JavaScript unit testing is important. It then demonstrates how to write behavioral tests using ScrewUnit's BDD style and shows a live example testing a wizard component. Some challenges of JavaScript testing like DOM cleanup and structure are addressed. The document emphasizes that JavaScript testing is possible and can be integrated into the development process.
The document discusses various techniques for enhancing web performance, including:
- Making fewer HTTP requests by combining CSS, JavaScript, and image files
- Placing stylesheets in the <head> for faster page loads
- Moving scripts to the bottom of the page to allow above-the-fold content to load first
- Avoiding CSS expressions and using event handlers instead
- Minifying JavaScript and CSS files to reduce file sizes
- Making AJAX requests cacheable for better performance
Top 7 Angular Best Practices to Organize Your Angular AppKaty Slemon
Learn about Angular best practices to improve the performance of your existing Angular application. Tried and tested clean code checklist for your Angular app.
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
Javascript allows interactive content on web pages and control of the browser and document. It is an interpreted scripting language that is cross-platform but support varies. Javascript can provide interactive content, control document appearance and content, and interact with the user through event handlers.
This document provides an overview of Firefox extension development using JavaScript. It discusses JavaScript basics like variables, functions, and debugging with alerts. It also covers how to access and manipulate the DOM to work with XUL elements in the extension's GUI. Developers are instructed to place JavaScript code files in the extension's content directory and link them to XUL files using the chrome URI. Further reading links are included to learn more about XUL elements and JavaScript.
Similar to High Performance Ajax Applications (20)
Paradigm Shifts in User Modeling: A Journey from Historical Foundations to Em...Erasmo Purificato
Slide of the tutorial entitled "Paradigm Shifts in User Modeling: A Journey from Historical Foundations to Emerging Trends" held at UMAP'24: 32nd ACM Conference on User Modeling, Adaptation and Personalization (July 1, 2024 | Cagliari, Italy)
Measuring the Impact of Network Latency at TwitterScyllaDB
Widya Salim and Victor Ma will outline the causal impact analysis, framework, and key learnings used to quantify the impact of reducing Twitter's network latency.
How Social Media Hackers Help You to See Your Wife's Message.pdfHackersList
In the modern digital era, social media platforms have become integral to our daily lives. These platforms, including Facebook, Instagram, WhatsApp, and Snapchat, offer countless ways to connect, share, and communicate.
Best Practices for Effectively Running dbt in Airflow.pdfTatiana Al-Chueyr
As a popular open-source library for analytics engineering, dbt is often used in combination with Airflow. Orchestrating and executing dbt models as DAGs ensures an additional layer of control over tasks, observability, and provides a reliable, scalable environment to run dbt models.
This webinar will cover a step-by-step guide to Cosmos, an open source package from Astronomer that helps you easily run your dbt Core projects as Airflow DAGs and Task Groups, all with just a few lines of code. We’ll walk through:
- Standard ways of running dbt (and when to utilize other methods)
- How Cosmos can be used to run and visualize your dbt projects in Airflow
- Common challenges and how to address them, including performance, dependency conflicts, and more
- How running dbt projects in Airflow helps with cost optimization
Webinar given on 9 July 2024
An invited talk given by Mark Billinghurst on Research Directions for Cross Reality Interfaces. This was given on July 2nd 2024 as part of the 2024 Summer School on Cross Reality in Hagenberg, Austria (July 1st - 7th)
Best Programming Language for Civil EngineersAwais Yaseen
The integration of programming into civil engineering is transforming the industry. We can design complex infrastructure projects and analyse large datasets. Imagine revolutionizing the way we build our cities and infrastructure, all by the power of coding. Programming skills are no longer just a bonus—they’re a game changer in this era.
Technology is revolutionizing civil engineering by integrating advanced tools and techniques. Programming allows for the automation of repetitive tasks, enhancing the accuracy of designs, simulations, and analyses. With the advent of artificial intelligence and machine learning, engineers can now predict structural behaviors under various conditions, optimize material usage, and improve project planning.
Details of description part II: Describing images in practice - Tech Forum 2024BookNet Canada
This presentation explores the practical application of image description techniques. Familiar guidelines will be demonstrated in practice, and descriptions will be developed “live”! If you have learned a lot about the theory of image description techniques but want to feel more confident putting them into practice, this is the presentation for you. There will be useful, actionable information for everyone, whether you are working with authors, colleagues, alone, or leveraging AI as a collaborator.
Link to presentation recording and transcript: https://bnctechforum.ca/sessions/details-of-description-part-ii-describing-images-in-practice/
Presented by BookNet Canada on June 25, 2024, with support from the Department of Canadian Heritage.
Choose our Linux Web Hosting for a seamless and successful online presencerajancomputerfbd
Our Linux Web Hosting plans offer unbeatable performance, security, and scalability, ensuring your website runs smoothly and efficiently.
Visit- https://onliveserver.com/linux-web-hosting/
TrustArc Webinar - 2024 Data Privacy Trends: A Mid-Year Check-InTrustArc
Six months into 2024, and it is clear the privacy ecosystem takes no days off!! Regulators continue to implement and enforce new regulations, businesses strive to meet requirements, and technology advances like AI have privacy professionals scratching their heads about managing risk.
What can we learn about the first six months of data privacy trends and events in 2024? How should this inform your privacy program management for the rest of the year?
Join TrustArc, Goodwin, and Snyk privacy experts as they discuss the changes we’ve seen in the first half of 2024 and gain insight into the concrete, actionable steps you can take to up-level your privacy program in the second half of the year.
This webinar will review:
- Key changes to privacy regulations in 2024
- Key themes in privacy and data governance in 2024
- How to maximize your privacy program in the second half of 2024
YOUR RELIABLE WEB DESIGN & DEVELOPMENT TEAM — FOR LASTING SUCCESS
WPRiders is a web development company specialized in WordPress and WooCommerce websites and plugins for customers around the world. The company is headquartered in Bucharest, Romania, but our team members are located all over the world. Our customers are primarily from the US and Western Europe, but we have clients from Australia, Canada and other areas as well.
Some facts about WPRiders and why we are one of the best firms around:
More than 700 five-star reviews! You can check them here.
1500 WordPress projects delivered.
We respond 80% faster than other firms! Data provided by Freshdesk.
We’ve been in business since 2015.
We are located in 7 countries and have 22 team members.
With so many projects delivered, our team knows what works and what doesn’t when it comes to WordPress and WooCommerce.
Our team members are:
- highly experienced developers (employees & contractors with 5 -10+ years of experience),
- great designers with an eye for UX/UI with 10+ years of experience
- project managers with development background who speak both tech and non-tech
- QA specialists
- Conversion Rate Optimisation - CRO experts
They are all working together to provide you with the best possible service. We are passionate about WordPress, and we love creating custom solutions that help our clients achieve their goals.
At WPRiders, we are committed to building long-term relationships with our clients. We believe in accountability, in doing the right thing, as well as in transparency and open communication. You can read more about WPRiders on the About us page.
Quantum Communications Q&A with Gemini LLM. These are based on Shannon's Noisy channel Theorem and offers how the classical theory applies to the quantum world.
Fluttercon 2024: Showing that you care about security - OpenSSF Scorecards fo...Chris Swan
Have you noticed the OpenSSF Scorecard badges on the official Dart and Flutter repos? It's Google's way of showing that they care about security. Practices such as pinning dependencies, branch protection, required reviews, continuous integration tests etc. are measured to provide a score and accompanying badge.
You can do the same for your projects, and this presentation will show you how, with an emphasis on the unique challenges that come up when working with Dart and Flutter.
The session will provide a walkthrough of the steps involved in securing a first repository, and then what it takes to repeat that process across an organization with multiple repos. It will also look at the ongoing maintenance involved once scorecards have been implemented, and how aspects of that maintenance can be better automated to minimize toil.
Comparison Table of DiskWarrior Alternatives.pdfAndrey Yasko
To help you choose the best DiskWarrior alternative, we've compiled a comparison table summarizing the features, pros, cons, and pricing of six alternatives.
Transcript: Details of description part II: Describing images in practice - T...BookNet Canada
This presentation explores the practical application of image description techniques. Familiar guidelines will be demonstrated in practice, and descriptions will be developed “live”! If you have learned a lot about the theory of image description techniques but want to feel more confident putting them into practice, this is the presentation for you. There will be useful, actionable information for everyone, whether you are working with authors, colleagues, alone, or leveraging AI as a collaborator.
Link to presentation recording and slides: https://bnctechforum.ca/sessions/details-of-description-part-ii-describing-images-in-practice/
Presented by BookNet Canada on June 25, 2024, with support from the Department of Canadian Heritage.
3. Planning and designing for high performance Plan for performance from day 1 Work closely with designers and product managers Understand design rationale Explain the tradeoffs between design and performance Offer alternatives and show what is possible (prototype) Challenge yourself to implement challenging designs (don't just say no) Help simplify the design and interaction if needed (compromise)
4. Engineering high performance: A few basic rules Less is more Don’t do anything unnecessary. Don’t do anything until it becomes absolutely necessary. Break the rules Make compromises and break best practices, but only as a last resort! Work on improving perceived performance Users can deal with some reasonable amount of slowness if: They are informed appropriately that an operation is pending. The user interface remains reactive at all time. Cheat whenever you can by first updating the UI and then do the work. Need to “lock” all or part of the user interface.
5. Measuring performance Test performance using a setup similar to your users’ environment Profile your code during development Automate profiling/performance testing Keep historical records of how features perform Consider keeping some (small amount of) profiling code in production
7. Yahoo!'s Exceptional Performance rules Make Fewer HTTP Requests Use a Content Delivery Network Add an Expires Header Gzip Components (including JS!) Put CSS at the Top Move Scripts to the Bottom Avoid CSS Expressions Make JavaScript and CSS External Reduce DNS Lookups Minify JavaScript Avoid Redirects Remove Duplicate Scripts Configure ETags Make Ajax Cacheable See http://developer.yahoo.com/performance/ for more information. A web page works in 3 (sometimes imbricated) stages: load render run These rules cover mostly the first stage.
8. Asset optimization Minify CSS and JavaScript files: Use the YUI Compressor [ http://developer.yahoo.com/yui/compressor/ ] Stay away from so-called advanced compression schemes - like Packer Combine CSS and JavaScript files: At build time [ http://www.julienlecomte.net/blog/2007/09/16/ ] At run time Optimize image assets: PngCrush [ http://pmt.sourceforge.net/pngcrush/ ] PngOptimizer [ http://psydk.org/PngOptimizer.php ] etc.
9. Reduce unminified code size Loading and parsing HTML, CSS and JavaScript code is costly. Be concise and write less code. Make good use of JavaScript libraries. Consider splitting your large JavaScript files into smaller files (bundles) when the parsing and compilation of the script takes an excessive amount of time ( Firefox bug #313967 ) Load code (HTML, CSS and JavaScript) on demand (a.k.a “lazy loading”) See http://ajaxpatterns.org/On-Demand_Javascript Use the YUI Loader Dojo's package system JSAN Import System
10. Optimize initial rendering (1/4) Miscellaneous tips... Consider rendering the first view on the server: Be aware of the added page weight You will still need to attach event handlers once the DOM is ready Close Your HTML Tags to Speed Up Parsing: Implicitly closed tags add cost to HTML parsing http://msdn2.microsoft.com/en-us/library/ms533020.aspx#Close_Your_Tags Consider flushing the apache buffer very early on: The download of external CSS files (should be at the top of the page!) may get a head start. May not influence the rendering speed however. Browsers buffer their input before displaying it. Load only essential assets / load assets on a delay or on demand Use the YUI Image Loader
11. Optimize initial rendering (2/4) Don’t always wait for onload ... Most DOM operations can be accomplished before the onload event has fired. If you have control over where your code is going to be inserted in the page, write your init code in a <script> block located right before the closing </body> tag. Otherwise, use the YUI Event utility’s onDOMReady method: YAHOO.util.Event.onDOMReady( function () { // Do something here... // e.g., attach event handlers. });
12. Optimize initial rendering (3/4) Post-load script loading A well designed site should be fully functional, even without JavaScript enabled. Therefore, you may be able to load scripts on a delay. Doing so benefits the loading of other assets (style sheets, images, etc.) Which makes your site load faster Right before the closing </body> tag, insert the following: <script> window.onload = function () { var script = document.createElement( "script" ); script.src = ...; document.body.appendChild(script); }; </script>
13. Optimize initial rendering (4/4) Conditional preloading Preloading assets (JavaScript, CSS, Images, etc.) has the potential to really enhance the user experience. However, one must be smart about when the preloading takes place. Otherwise, the preloading may actually worsen the user experience... http://www.sitepoint.com/article/web-site-optimization-steps/3 Try it at http://search.yahoo.com/
15. Reduce the amount of symbolic look-up: The scope chain (1/2) var g = 7 ; function f(a) { var v = 8 ; x = v + a + g; } f(6); parent Look-up is performed every time a variable is accessed. Variables are resolved backwards from most specific to least specific scope.
16. Reduce the amount of symbolic look-up: The scope chain (2/2) Therefore, declare (with the var keyword) and use variables in the same scope whenever possible, and avoid global variables at all costs. Never use the with keyword, as it prevents the compiler from generating code for fast access to local variables (traverse the object prototype chain first, and then up the scope chain, and so on) Cache the result of expensive look-ups in local variables: var arr = ...; var globalVar = 0 ; ( function () { var i; for (i = 0 ; i < arr.length; i++) { globalVar++; } })(); var arr = ...; var globalVar = 0 ; ( function () { var i, l, localVar; l = arr.length; localVar = globalVar; for (i = 0 ; i < l; i++) { localVar++; } globalVar = localVar; })(); (faster on all A-grade browsers)
17. Reduce the amount of symbolic look-up: The prototype chain function A () {} A.prototype.prop1 = ...; function B () { this .prop2 = ...; } B.prototype = new A(); var b = new B(); B.prototype Accessing members bound to the primary object is about 25% faster than accessing members defined anywhere in the prototype chain. The longer the traversal of the prototype chain, the slower the look-up.
18. Optimize object instantiation If you need to create many objects, consider adding members to the prototype instead of adding them to each individual object in the object constructor (properties are bound once, to the prototype object) This also reduces memory consumption. However, it slows down the look-up of object members. function Foo () {...} Foo.prototype.bar = function () {...}; function Foo () { this .bar = function () {...}; }
19. Don’t use eval ! The string passed to eval (and its relatives, the Function constructor and the setTimeout and setInterval functions) needs to be compiled and interpreted. Extremely slow! Never pass a string to the setTimeout and setInterval functions. Instead, pass an anonymous function like so: setTimeout( function () { // Code to execute on a timeout }, 50 ); Never use eval and the Function constructor (except in some extremely rare cases, and only in code blocks where performance is not critical)
20. Optimize string concatenation On Internet Explorer (JScript), concatenating two strings causes a new string to be allocated, and the two original strings to be copied: var s = “xxx” + “yyy” ; s += “zzz” ; Therefore, it is much faster on Internet Explorer to append strings to an array, and then use Array.join (don’t use this for simple concatenations!) var i, s = “” ; for (i = 0 ; i < 10000 ; i++) { s += “x” ; } var i, s = []; for (i = 0 ; i < 10000 ; i++) { s[i] = “x” ; } s = s.join( “” ); Other JavaScript engines (WebKit, SpiderMonkey) have been optimized to handle string concatenations by doing a realloc + memcpy whenever possible. Use the YUI Compressor!
21. Optimize regular expressions Don’t use the RegExp constructor, unless your regular expression is assembled at runtime. Instead, use regular expression literals. Use the test method if all you want to do is test for a pattern (the exec method carries a small performance penalty) Use non-capturing groups (?: ... ) Stick to simple patterns. If your regular expression looks like the following, reconsider... if ( /loaded|complete/ .test(document.readyState)) {...} (?:(?:)?[])*(?:(?:(?:[^()<>@,;:".00-31]+(?:(?:(?:)?[])+||(?=["()<>@,;:".]))|" (?:[^amp;quot;]|.|(?:(?:)?[]))*"(?:(?:)?[])*)(?:(?:(?:)?[])*(?:[^()<>@,;:".00-31 ]+(?:(?:(?:)?[])+||(?=["()<>@,;:".]))|"(?:[^amp;quot;]|.|(?:(?:)?[]))*"(?:(?:)?[]) *))*@(?:(?:)?[])*(?:[^()<>@,;:".00-31]+(?:(?:(?:)?[])+||(?=["()<>@,;:".]))| ([^]|.)*(?:(?:)?[])*)(?:(?:(?:)?[])*(?:[^()<>@,;:".00-31]+(?:(?:(?:)? [])+||(?=["()<>@,;:".]))|([^]|.)*(?:(?:)?[])*))*|(?:[^()<>@,;:".00- 31]+(?:(?:(?:)?[])+||(?=["()<>@,;:".]))|"(?:[^amp;quot;]|.|(?:(?:)?[]))*"(?:(?:)?[ ])*)*lt;(?:(?:)?[])*(?:@(?:[^()<>@,;:".00-31]+(?:(?:(?:)?[])+||(?=["()<>@,;:". ]))|([^]|.)*(?:(?:)?[])*)(?:(?:(?:)?[])*(?:[^()<>@,;:".00-31]+(?:(?:(?: )?[])+||(?=["()<>@,;:".]))|([^]|.)*(?:(?:)?[])*))*(?:,@(?:(?:)?[]))
22. Caching Caching can be justified by: High cost (CPU or network latency) associated with getting a value Value will be read many times And will not change often! Increases memory consumption tradeoff Memoization: var fn = ( function () { var b = false , v; return function () { if (!b) { v = ...; b = true ; } return v; }; })(); function fn () { if (!fn.b) { fn.v = ...; fn.b = true ; } return fn.v; } var fn = function () { var v = ...; return (fn = function () { return v; })(); }; Module pattern Store value in function object Lazy function definition
23. How to handle long running JavaScript processes (1/2) During long running JavaScript processes, the entire browser UI is frozen Therefore, to maintain a decent user experience, make sure that JavaScript threads never take more than ~ 300 msec (at most) to complete. You can break long running processes into smaller units of work, and chain them using setTimeout . You can also process the data on the server. More info at http://www.julienlecomte.net/blog/2007/10/28 Demo
24. How to handle long running JavaScript processes (2/2) function doSomething (callbackFn) { // Initialize a few things here... ( function () { // Do a little bit of work here... if ( termination condition ) { // We are done callbackFn(); } else { // Process next chunk setTimeout(arguments.callee, 0); } })(); }
25. Miscellaneous tips (1/2) Primitive operations are often faster than the corresponding function calls: var a = 1 , b = 2 , c; c = Math.min(a, b); c = a < b ? a : b; If possible, avoid using try...catch in performance-critical sections: var i; for (i = 0 ; i < 100000 ; i++) { try { ... } catch (e) { ... } } var i; try { for (i = 0 ; i < 100000 ; i++) { ... } } catch (e) { ... } myArray.push(value); myArray[myArray.length] = value; myArray[idx++] = value;
26. Miscellaneous tips (2/2) If possible, avoid for...in in performance-critical sections: var key, value; for (key in myArray) { value = myArray[key]; ... } var i, value, length = myArray.length; for (i = 0 ; i < length; i++) { value = myArray[i]; ... } Branch outside, not inside, whenever the branching condition does not change: function fn () { if (...) { ... } else { ... } } var fn; if (...) { fn = function () {...}; } else { fn = function () {...}; }
28. Document tree modification Using innerHTML var i, j, el, table, tbody, row, cell; el = document.createElement( "div" ); document.body.appendChild(el); table = document.createElement( "table" ); el.appendChild(table); tbody = document.createElement( "tbody" ); table.appendChild(tbody); for (i = 0 ; i < 1000 ; i++) { row = document.createElement( "tr" ); for (j = 0 ; j < 5 ; j++) { cell = document.createElement( "td" ); row.appendChild(cell); } tbody.appendChild(row); } var i, j, el, idx, html; idx = 0 ; html = []; html[idx++] = "<table>" ; for (i = 0 ; i < 1000 ; i++) { html[idx++] = "<tr>" ; for (j = 0 ; j < 5 ; j++) { html[idx++] = "<td></td>" ; } html[idx++] = "</tr>" ; } html[idx++] = "</table>" ; el = document.createElement( "div" ); document.body.appendChild(el); el.innerHTML = html.join( "" ); ( much faster on all A-grade browsers) Warning: See http://www.julienlecomte.net/blog/2007/12/38/
29. Document tree modification Using cloneNode var i, j, el, table, tbody, row, cell; el = document.createElement( "div" ); document.body.appendChild(el); table = document.createElement( "table" ); el.appendChild(table); tbody = document.createElement( "tbody" ); table.appendChild(tbody); for (i = 0 ; i < 1000 ; i++) { row = document.createElement( "tr" ); for (j = 0 ; j < 5 ; j++) { cell = document.createElement( "td" ); row.appendChild(cell); } tbody.appendChild(row); } var i, el, table, tbody, template, row, cell; el = document.createElement( "div" ); document.body.appendChild(el); table = document.createElement( "table" ); el.appendChild(table); tbody = document.createElement( "tbody" ); table.appendChild(tbody); template = document.createElement( "tr" ); for (i = 0 ; i < 5 ; i++) { cell = document.createElement( "td" ); template.appendChild(cell); } for (i = 0 ; i < 1000 ; i++) { row = template.cloneNode(true); tbody.appendChild(row); } (faster on all A-grade browsers – sometimes much faster) Warning: expando properties/attached event handlers are lost!
30. Document tree modification Using DocumentFragment A DocumentFragment (DOM Level 1 Core) is a lightweight Document object. It supports only a subset of the regular DOM methods and properties. IE’s implementation of the DocumentFragment interface does not comply with the W3C specification and returns a regular Document object. var i, j, el, table, tbody, row, cell, docFragment; docFragment = document.createDocumentFragment(); el = document.createElement( "div" ); docFragment.appendChild(el); table = document.createElement( "table" ); el.appendChild(table); tbody = document.createElement( "tbody" ); table.appendChild(tbody); for (i = 0 ; i < 1000 ; i++) { ... } document.body.appendChild(docFragment);
31. Limit the number of event handlers (1/2) Attaching an event handler to hundreds of elements is very costly Multiplying event handlers augments the potential for memory leaks Solution: Use event delegation , a technique that relies on event bubbling <div id= "container" > <ul> <li id= "li-1" > List Item 1 </li> <li id= "li-2" > List Item 2 </li> <li id= "li-3" > List Item 3 </li> <li id= "li-4" > List Item 4 </li> <li id= "li-5" > List Item 5 </li> ... </ul> </div> div#container ul li#li- x text node
32. Limit the number of event handlers (2/2) YAHOO.util.Event.addListener( "container" , "click" , function (e) { var el = YAHOO.util.Event.getTarget(e); while (el.id !== "container" ) { if (el.nodeName.toUpperCase() === "LI" ) { // Do something here... break; } else { el = el.parentNode; } } });
33. Limiting reflows Reflows happen whenever the DOM tree is manipulated. Browsers have optimizations you may take advantage of to minimize reflow: Modifying an invisible element (display:none) does not trigger reflow Modifying an element “off-DOM” does not trigger reflow Batch style changes: Change the value of the style attribute using setAttribute (does not work on Internet Explorer) Example: Change the value of the cssText property of the style object. Example: More maintainable: Change the CSS class name of an element. Example: el.style.cssText = "display:block;width:auto;height:100px;..." ; YAHOO.util.Dom.replaceClass(el, "foo" , "bar" ); el.setAttribute( "style" , "display:block;width:auto;height:100px;..." );
34. Miscellaneous tips... Consider using the onmousedown event instead of the onclick event Get a head start by making use of the small delay between the time a user presses the mouse button and the time he/she releases it. “ Downshift your code”: throttle frequent and expensive actions See http://yuiblog.com/blog/2007/07/09/downshift-your-code/
36. Miscellaneous tips... Use CSS Sprites for Snappy Image Replacement. Avoid using JavaScript for layout. window.onresize is throttled... Use pure CSS instead! Side benefits: improves maintainability, degrades more gracefully, etc. Avoid using Internet Explorer expressions Expressions are constantly evaluated in order to react to environment changes. There are ways to more safely use expressions, but in general, you shouldn’t need/use them. Avoid using Internet Explorer filters (or keep their use to a minimum) Optimize Table Layout Goal: allow the rendering engine to start rendering a table before it has received all the data Use table-layout:fixed Explicitly define a COL element for each column Set the WIDTH attribute on each col Optimize your CSS selectors [ http://developer.mozilla.org/en/docs/Writing_Efficient_CSS ]
38. Ajax Best Practices Never resort to using synchronous XMLHttpRequest http://yuiblog.com/blog/2006/04/04/synchronous-v-asynchronous/ Asynchronous programming model slightly more complicated. Need to lock all or part of the UI while the transaction is pending. Programmatically handle network timeouts. Solution: Use the YUI Connection Manager: var callback = { success: function () { /* Do something */ }, failure: function () { /* Do something */ }, timeout: 5000 }; YAHOO.util.Connect.asyncRequest( "GET" , url, callback);
39. Improving perceived network latency using the optimistic pattern If the data is validated locally (on the client, using JavaScript) before being sent to the server, the request will be successful in 99.9% of the cases. Therefore, in order to optimize the user experience, we should assume a successful outcome and adopt the following pattern: Update the UI when the request gets sent. Lock the UI/data structures with the finest possible granularity. Let the user know that something is happening. Let the user know why a UI object is locked. Unlock the UI/data structures when the outcome is successful. Handle error cases gracefully.
40. Miscellaneous tips... Be aware of the maximum number of concurrent HTTP/1.1 connections. Multiplex Ajax requests whenever possible, and if your backend supports it. Piggyback unsollicited notifications in a response to an Ajax request. Favor JSON over XML as your data exchange format Accessing a JSON data structure is easier and cheaper than accessing XML data. JSON has less overhead than XML. Push, don’t poll. Use COMET to send real-time notifications to the browser. Consider using local storage to cache data locally, request a diff from the server: Internet Explorer’s userData Flash local storage DOM:Storage (WhatWG persistent storage API, implemented in Firefox 2) Google Gears etc.