Category: Performance

  • Performance Testing with k6

    Performance Testing with k6

    Stuart Bingë | May 13, 2020

    There’s an old adage in the software industry – premature optimization is the root of all evil. A corollary to this should be – no optimization is just as bad as premature optimization.

    Read More
  • Next Generation Virtual Scrolling

    Next Generation Virtual Scrolling

    Dylan Schiemann | September 25, 2019

    Rendering large data sets in the browser while optimizing for performance and accessibility is a complex problem. The current approach to handling long lists of data is using an infinite scroll pattern to incrementally load and render data just before the data enters the view.

    Read More
  • Using WebAssembly with Web Workers

    Using WebAssembly with Web Workers

    James Milner | July 22, 2019

    When building web apps, writing processing intensive code can be a challenge. One issue is getting predictable running times across browsers and JavaScript engines that optimise different code paths differently, as well as producing code that doesn’t interfere with user experience.

    Read More
  • Deploying a Dojo App with Docker

    Deploying a Dojo App with Docker

    Rory Mulligan | July 16, 2019

    So you’ve built an amazing app using Dojo and now you are ready to go live. After a bit of research, you learn that traditional deployments are challenging! Luckily, the days of FTPing files are long gone, and we can rely on Docker for fast, reliable deployments.

    Read More
  • Getting Started with AssemblyScript

    Getting Started with AssemblyScript

    James Milner | April 23, 2019

    In a previous post we looked at how to compile the popular programming language Go to WebAssembly. WebAssembly is a new programming language which provides a compact binary format for the web. In this post we’ll explore another WebAssembly target language called AssemblyScript.

    Read More
  • Compiling Go to WebAssembly

    Compiling Go to WebAssembly

    James Milner | January 15, 2019

    For many years there has been the only way to write client-side logic for the web; JavaScript. WebAssembly provides another way, as a low-level language similar to assembly, with a compact binary format. Go, a popular open source programming language focused on simplicity, readability and efficiency, recently gained the ability to compile to WebAssembly.

    Read More
  • Reflecting on ffconf 2018

    Reflecting on ffconf 2018

    James Milner | November 14, 2018

    Last Thursday I was lucky enough to get over to the highly regarded web development conference ffconf in Brighton. This was my first time at the event and I can say that it lived up to and even exceeded my expectations.

    Read More
  • The Return of SharedArrayBuffers and Atomics

    The Return of SharedArrayBuffers and Atomics

    James Milner | September 19, 2018

    A common complaint of modern web apps is the concept of jank; web pages being unresponsive to user input and frame rates being low. Left unmitigated, this problem leads to a poor quality experience for end users of our web applications.

    Read More
  • FullStack London 2018 – Improving User Experience With Web Workers

    FullStack London 2018 – Improving User Experience With Web Workers

    Lisa Flood | July 27, 2018

    At this months’s FullStack London 2018, SitePen Engineer James Milner presented the talk “Improving User Experience With Web Workers”. Web browsers use single-threaded JavaScript to perform tasks; business logic, layout, reflows, and garbage collection. This means complex and heavy JavaScript functions can block the main thread from rendering.

    Read More
  • Improving Performance with the Paint Timing API

    Improving Performance with the Paint Timing API

    Umar Hansa | October 6, 2017

    Introduction Outline Accessing paint metrics from JavaScript Reporting paint timing metrics to a server Viewing paint metrics in the Chrome DevTools Browser Implementations Traditionally, front-end performance focused primarily on page load times as an important performance metric.

    Read More
  • Blockchain Basics

    Blockchain Basics

    Paul Bouchon | September 21, 2017

    “Blockchain” is the newest term to enter the tech industry’s buzzword repertoire. Whether a company is processing sub-second banking transactions or transporting artisanal goat cheeses across state lines, it seems as though any company not investigating this technology, the same technology that powers infamous cryptocurrencies like Bitcoin, will surely go the way of the dodo.

    Read More
  • Event Delegation: Pattern or Anti-Pattern?

    Event Delegation: Pattern or Anti-Pattern?

    Neil Roberts | July 11, 2017

    A significant amount of work on JavaScript toolkits and frameworks has centered around trying to fix, normalize, and optimize browser implementations. Doing so requires making many assumptions about what the problems are, how our tools will be used by developers, and what we expect of the future.

    Read More
  • Dojo FAQ: How do I optimize a Dojo app for mobile?

    Dojo FAQ: How do I optimize a Dojo app for mobile?

    Nick Nisi | February 14, 2017

    Web applications can be deployed to many environments, including desktops, tablets, and mobile devices. We can even deploy web applications natively using a wrapper such as Apache Cordova to gain access to device features such as GPS, battery, and accelerometer data.

    Read More
  • Moving 4-ward with Intern

    Moving 4-ward with Intern

    Jason Cheatham | February 10, 2017

    The motivation for Intern 4 is to make it easier to author tests with ES6+ features within tests, with or without transpilation. Want to skim? Here’s the Intern Roadmap which lists our high level status for each Intern release going forward.

    Read More
  • Accessibility Testing with Intern

    Accessibility Testing with Intern

    Jason Cheatham | December 13, 2016

    Intern already has a wide array of capabilities and today we’re pleased to announce one more: accessibility testing. Thanks to a generous award from Mozilla Open Source Support we’ve created the intern-a11y plugin, which allows users to run accessibility tests on pages or components using Intern.

    Read More
  • FullStack 2016

    FullStack 2016

    Dylan Schiemann | July 20, 2016

    FullStack is a large London JavaScript conference hosted at the Skills Matter CodeNode. The conference brings together an impressive line-up of speakers and workshops covering five tracks over three full days of festivities. We were invited to speak at FullStack, and also enjoyed many of the other sessions and met many great engineers.

    Read More
  • Building Better Enterprise Web Applications Part 3: SitePen solutions

    Building Better Enterprise Web Applications Part 3: SitePen solutions

    Dylan Schiemann | June 30, 2016

    In this installment of our series on building web applications, we look at the SitePen approach to solving challenges in web application development. We employ all of the solutions described in part 2 of the blog series. Additionally, we have some overarching principles we apply to our work.

    Read More
  • Building Better Enterprise Web Applications: Challenges

    Building Better Enterprise Web Applications: Challenges

    Dylan Schiemann | June 28, 2016

    Web applications provide many benefits. Most organizations seek to improve the efficiency and effectiveness of business processes through the use of software. The benefits of web applications include: Simple distribution model for end users (e.g. no installation required) Instant propagation of changes Unified code base to support many platforms (desktop, tablet, mobile, etc.

    Read More
  • Stronger JavaScript?

    Stronger JavaScript?

    Kit Kelly | October 8, 2015

    The V8 team (the JavaScript engine that powers Chrome, Opera, Node.js, MongoDB, etc…) are moving forward with an experiment in defining a stronger version of JavaScript that ensures that code being run is behaving well, and introducing run-time typing based on TypeScript’s typings.

    Read More
  • Minimizing Dijit Instances in dgrid

    Minimizing Dijit Instances in dgrid

    Kris Zyp | April 14, 2015

    Dijit and dgrid provide a powerful set of user interface components, allowing for fast construction of sophisticated web applications with excellent performance and interactivity. However, one particular configuration of dgrid that can impact memory and performance: heavy use of persistent Dijit editors within grid cells.

    Read More
  • Legitimate, memory-efficient privacy with ES6 WeakMaps

    Legitimate, memory-efficient privacy with ES6 WeakMaps

    Matthew Wistrand | March 19, 2015

    When writing object-oriented source code, you generally only want to expose a very specific API to whomever is using it. In many languages you would control this by marking methods and properties you do not want other developers to use as private.

    Read More
  • Memory Consumption: the Externality of Programming

    Memory Consumption: the Externality of Programming

    Kris Zyp | March 17, 2015

    Performance is a critical part of most applications. Research continually shows that good performance is essential for a good user experience. Reasonable load times, smooth animations, and responsive interaction gives user a sense of interaction and immersion, whereas slow load times frustrate users, and choppy animation and interaction quickly makes an experience awkward and disconcerting.

    Read More
  • Robust JavaScript Application Architecture

    Robust JavaScript Application Architecture

    Dylan Schiemann | January 8, 2015

    In October, 2014, I was coerced invited to deliver a talk at the first FullStack conference in London, a conference focused on Node.js, JavaScript and hackable electronics. The conference was an interesting cross-section of all things related to JavaScript.

    Read More
  • REST tips

    REST tips

    Kris Zyp | June 24, 2014

    At SitePen, we have long been advocates for building web applications on a RESTful architecture. Over the last several years, it has been exciting to see organizations increasingly provide RESTful endpoints for the Dojo-based front-ends that we support and develop.

    Read More
  • Local Database Stores

    Local Database Stores

    Kris Zyp | June 17, 2014

    Modern browsers have powerful new database capabilities that enable applications to store data locally, and perform advanced indexed queries without a network connection. Applications can be built with offline support without any disruption to data interaction, including searching.

    Read More
  • Dojo Tutorial: Feature Detection and Device Optimized Builds

    Dojo Tutorial: Feature Detection and Device Optimized Builds

    Dylan Schiemann | January 25, 2013

    As part of our great updates to the Dojo Tutorials for Dojo 1.8, we’ve been busy creating several new tutorials. Feature Detection and Device Optimized Builds Dojo 1.7+ now uses the popular has() pattern for feature detection in combination with a has()-aware build system.

    Read More
  • Working with Dojo and AMD in Production

    Working with Dojo and AMD in Production

    Dylan Schiemann | August 27, 2012

    In our recent post on dgrid and Dojo Nano, we showed a technique of using nested require statements in order to make use of optimized layers using the Dojo build system. As a refresher, a layer is Dojo’s terminology for a file that combines many JavaScript resources into a single file.

    Read More
  • How To Migrate a Module to AMD

    How To Migrate a Module to AMD

    Kris Zyp | July 24, 2012

    Dojo 1.7 added full support for asynchronous module loading, defined with the widely adopted asynchronous module definition (AMD) format. The new module loader and module format offer faster module loading, better performance, and wide interoperability.

    Read More
  • AMD for the Business-Side

    AMD for the Business-Side

    Dylan Schiemann | July 10, 2012

    You may have seen our recent blog entitled “AMD: The Definitive Source” which exhaustively explained Asynchronous Module Definition. AMD is a topic with significant technical nuances but the purpose of THIS article is to explain the value of AMD for your business.

    Read More
  • AMD: The Definitive Source

    AMD: The Definitive Source

    Kris Zyp | June 25, 2012

    So what is AMD? As web applications continue to grow more advanced and more heavily rely on JavaScript, there has been a growing movement towards using modules to organize code and dependencies. Modules give us a way to make clearly distinguished components and interfaces that can easily be loaded and connected to dependencies.

    Read More
  • dgrid and Dojo Nano Build

    dgrid and Dojo Nano Build

    Dylan Schiemann | June 11, 2012

    You’ve likely read that the new dgrid can be as small as 32KB gzipped when including just its minimal dependencies. However, if you use the standard settings for the Dojo Web Builder or a standard Dojo build profile, you end up with a build that’s closer to 100KB gzipped.

    Read More
  • Understanding dojo.require

    Understanding dojo.require

    Cody Lindley | March 29, 2010

    Dojo provides a feature-rich system for including JavaScript modules. Before we begin this journey to explore this concept in depth, you should know that absolutely no knowledge of the Dojo module, packaging, and build system are required to use Dojo.

    Read More
  • Efficient Lazy Loading of a Tree

    Efficient Lazy Loading of a Tree

    Kris Zyp | January 27, 2010

    Dojo 1.4 sports a fantastic tree widget, complete with ARIA compliance, keyboard accessibility, and internationalization (including right-to-left layout for appropriate countries and languages). For large tree data sets, we want to be able to only load the necessary data for the visible nodes of the tree.

    Read More
  • Managing Widget Templates in Dojo 1.4

    Managing Widget Templates in Dojo 1.4

    Sam Foster | January 20, 2010

    This article introduces dojo.cache and presents a technique for externalizing your widget templates in swappable configuration files, where they can be referenced by a custom templateKey widget property. Introducing dojo.cache Dojo 1.4 adds a new core utility called dojo.cache. To appreciate it we first have to review how Dijit’s templatePath works.

    Read More
  • Why We Love Chrome Frame

    Why We Love Chrome Frame

    Dylan Schiemann | September 22, 2009

    Google today announced Chrome Frame, a plug-in that selectively upgrades Internet Explorer without breaking existing sites. Think of it as working like Flash, but for open web technologies, replacing Internet Explorer’s entire rendering engine for sites that include a single meta tag indicating that they would prefer to use Chrome Frame rather than IE.

    Read More
  • Dynamic Stylesheets

    Dynamic Stylesheets

    Sam Foster | March 13, 2009

    New to Dojo 1.2+ is This is a collection of methods which give you the ability to query the stylesheets collection in a document, add and remove rules, and dynamically create new sheets.

    Read More
  • Dojo Toolbox First Look

    Dojo Toolbox First Look

    Kevin Dangoor | July 8, 2008

    In the middle of May, we were given a mission: create a speedy, offline API documentation viewer and a graphical Dojo build tool. Here we are at the beginning of July, and the result is the Dojo Toolbox 1.0. This article is a first look at this new application.

    Read More
  • A Quick JavaScript Load Profiler

    A Quick JavaScript Load Profiler

    Mike Wilcox | July 1, 2008

    I was doing some research on script loading speed tests. Each script load required the page to be refreshed, making it difficult to log the time to Firebug and get an average.

    Read More
  • String Performance: an Analysis

    String Performance: an Analysis

    Tom Trenka | May 9, 2008

    Recently I was writing a “tips and tricks” blog post that was going to focus on the idea that it is better to use an object as a “string buffer”; the idea was that by passing this object around to various functions and pushing string fragments into it, you can get better performance from a

    Read More
  • Why Apple is Investing in WebKit Performance

    Why Apple is Investing in WebKit Performance

    Kevin Dangoor | March 24, 2008

    Today, I was eating lunch alone at a restaurant and reading some news via my iPhone’s EDGE connection. Suddenly, Surfin’ Safari – Blog Archive » Optimizing Page Loading in the Web Browser made even more sense. Apple has been putting actual dollars into making Safari and the underlying open source WebKit really, really fast.

    Read More
  • Mobile Gears could help network latency

    Mobile Gears could help network latency

    Jason Cline | March 5, 2008

    Mobile application development has many challenges. The announcement of Google Gears on Mobile Devices will help solve the problems of network connectivity, network latency, and limited bandwidth. On the desktop, a lot of the focus on Gears was its ability to allow applications to function when your computer was not connected to the network.

    Read More
  • Dojo 0.9 Update: M2

    Dojo 0.9 Update: M2

    Alex Russell | May 13, 2007

    This past Friday, we pushed Dojo 0.9 Milestone Release 2 out of the nest. This is the last milestone before Beta and the system is starting to take a recognizable shape. Only thinner. Here’s what’s new and awesome in M2: Dijit has landed! Holy cow is it fast. Stay tuned for themes and more widgets.

    Read More
  • Going Data-Driven

    Going Data-Driven

    Alex Russell | January 7, 2007

    Dylan’s last post on performance is only one in a series we’ll be running on the topic, and as promised this post is all about the tools of the trade for doing Ajax app performance tuning and how to use them.

    Read More
We use cookies to ensure that we give you the best experience on our website. If you continue to use this site we will assume that you are happy with it.Privacy Policy