background preloader

Web Performance

Facebook Twitter

All performance related contents

Cubism.js. Time Series Visualization foo7.6 bar−6.2 foo + bar1.4 foo - bar14 Cubism.js is a D3 plugin for visualizing time series. Use Cubism to construct better realtime dashboards, pulling data from Graphite, Cube and other sources. Scalable Cubism fetches time series data incrementally: after the initial display, Cubism reduces server load by polling only the most recent values. Effective Cubism also scales in terms of perception: small multiples aligned by time facilitate rapid comparison. Area (120px)7.6 Area (30px)7.6 In contrast, horizon charts reduce vertical space without losing resolution.

Horizon, 1-band (120px)7.6 Horizon, 2-band (60px)7.6 Horizon, 3-band (40px)7.6 Horizon, 4-band (30px)7.6 By combining position and color, horizon charts improve perception: position is highly effective at discriminating small changes, while color differentiates large changes. Flexible Cubism is data-source agnostic. Want to learn more? Powering big data at Pinterest. Mohammad Big data plays a big role at Pinterest. With more than 30 billion Pins in the system, we’re building the most comprehensive collection of interests online. One of the challenges associated with building a personalized discovery engine is scaling our data infrastructure to traverse the interest graph to extract context and intent for each Pin. We currently log 20 terabytes of new data each day, and have around 10 petabytes of data in S3. We use Hadoop to process this data, which enables us to put the most relevant and recent content in front of Pinners through features such as Related Pins, Guided Search, and image processing.

It also powers thousands of daily metrics and allows us to put every user-facing change through rigorous experimentation and analysis. In order to build big data applications quickly, we’ve evolved our single cluster Hadoop infrastructure into a ubiquitous self-serving platform. Building a self-serve platform for Hadoop 1. 2. 3. 4. 5. 6. 7. 1. 2. 3. Bolshchikov/js-must-watch. Broken by Design: MongoDB Fault Tolerance. As you're undoubtedly well-aware, there are some very strong geek fashion trends in the valley.

I don't mean fashion in the sense of geek haute-couture -- the fashion trends we're talking about here have to do with tech components. You've heard of it before: "here's how we built using X, Y and Z. " The blogosphere regurgitates this dreck, and people base their adoption strategies on how much noise they have heard about various X's, Y'z and Z's. A mockery of good engineering. This kind of software construction is the modern equivalent of the bolt-on motorcycle shows on TV. MongoCycle: unsafe at any speed. For a while, I thought that the problem with this approach was that the engineering had been outsourced. And us geeks are no better. How is Mongo Broken?

MongoDB is a NoSQL data store. It lies So, let's imagine that you're building an Instagram clone that you'll eventually sell to Facebook for $1B, and see if we can accomplish that with MongoDB. A. C. B. D. GetLastError won't. Programming analysis and commentary: O'Reilly Radar. Questioning the Lambda Architecture The Lambda Architecture has its merits, but alternatives are worth exploring. Nathan Marz wrote a popular blog post describing an idea he called the Lambda Architecture (“How to beat the CAP theorem“). The Lambda Architecture is an approach to building stream processing applications on top of MapReduce and Storm or similar systems. This has proven to be a surprisingly popular idea, with a dedicated website and an upcoming book. Since I’ve been involved in building out the real-time data processing infrastructure at LinkedIn using Kafka and Samza, I often get asked about the Lambda Architecture.

I thought I would describe my thoughts and experiences. What is a Lambda Architecture and how do I become one? The Lambda Architecture looks something like this: Read more… Revisiting “What is DevOps” If all companies are software companies, then all companies must learn to manage their online operations. Two years ago, I wrote What is DevOps. Read more… Read more… Web Performance Matters - Journal. Local Euler: Now with all 476 puzzles and images. Concurrency is the New Memory Management - Aaron Schlesinger. These days, we all need to build "cloud apps. " We've heard "cloud" so many times at this point that it's a buzz word, but underneath the hype lives a real fact for us developers: everything we build needs to be a distributed system.

For our apps to run, we must have servers and they need to respond to requests from our apps, all the time. So we need to build systems that have many computers to provide all the fault tolerance, throughput, etc... we need. You've probably heard this all before. This is a fact that we all know by now. Computers die, networks get congested, etc... The bottom line is that our programs are deployed onto multiple nodes as a process on each, and each process communicates with all the others.

The process model is still powerful but it has changed on the server side. Cluster is just a fancy word for distributed systems, so they come with the same pitfalls. We need to address them or the thing will crash. Regardless, none are well suited to build clusters. Kahun/awesome-sysadmin. Case Interview. Java to the Limit. Let it crash. In Akka. Concurrency and distributed systems are probably among the hardest parts of software engineering. Basic Java EE apps usually don’t need to deal with these issues that much, but increasing parallel computing resources in servers and constantly open client-server connections, like WebSockets, bring these problems closer to web app developers as well.

Although average web developers don’t that often need to fight with these hard “academic” problems, there are some areas of engineering where the problems of concurrency, distributed systems and their reliability play possibly the most important role. In e.g. telecom, nodes must be working tightly together, but one failing node can’t take the whole system down. New nodes and roles must be pluggable to a live system and it must even be able to heal itself from malfunctions automatically. An actor can be seen as protected zone, in which its execution is always “thread safe”. Actor.tell("hello", ActorRef.noSender());

Measuring Page Load Speed with Navigation Timing. Measuring Page Load Speed with Navigation Timing People like web pages that load quickly. Google experiments show that a delay as small as a hundred milliseconds can have an adverse effect. But how do we measure web page load speed? And what does "page load" actually mean? This article describes the API and shows ways to make use of the timing data it exposes. How can I use it? The API is accessed via the properties of the window.performance object: navigation: how the user navigated to the page timing: data for navigation and page load events. Chrome also provides a perfomance.memory property that gives access to JavaScript memory usage data. The simplest way to try out the API is to take a look at window.performance in your browser's JavaScript console. In Google Chrome, from any web page: Select Tools > JavaScript console from the wrench menu at the top right of the Chrome window (or press Ctrl-Shift-J on Windows and Linux, or Command-Option-J on a Mac).

On a web page, use the <! In the wild. 2013.