<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>vaz.ac</title>
    <link>https://vaz.ac/</link>
    <description>Recent content on vaz.ac</description>
    <generator>Hugo -- gohugo.io</generator>
    <language>en-us</language>
    <lastBuildDate>Tue, 01 Jan 2019 20:27:33 -0600</lastBuildDate><atom:link href="https://vaz.ac/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>About</title>
      <link>https://vaz.ac/about/</link>
      <pubDate>Thu, 19 Oct 2023 00:00:00 +0500</pubDate>
      
      <guid>https://vaz.ac/about/</guid>
      
      <description>I am currently an engineer in Core Technology at Citadel. Previously, I was working on the Web Platform via #webperf with Akamai and was a cofounder of SOASTA.
I&amp;rsquo;ve been around the block - and back. I&amp;rsquo;ve seen some things, some things that can&amp;rsquo;t be unseen. Some of those things I&amp;rsquo;ve written:
a charting library in VML (back when webapps could afford to be IE only) long-running applications built without hard navigations before they were called &amp;ldquo;SPAs&amp;rdquo; or we said &amp;ldquo;AJAX&amp;rdquo; or &amp;ldquo;Comet&amp;rdquo; browser analytics code in OG vanilla JavaScript with support for anything as modern as IE5.</description>
      
    </item>
    
    <item>
      <title>Server-Timing</title>
      <link>https://vaz.ac/post/server-timing/</link>
      <pubDate>Tue, 01 Jan 2019 20:27:33 -0600</pubDate>
      
      <guid>https://vaz.ac/post/server-timing/</guid>
      
      <description>This is a cross-post from @stoyanstefanov&amp;rsquo;s 2018 Performance Calendar, the original can be found here.
Consider the following timing data for a stylesheet request:
If you were staring at the browser who had to wait around for a response for those 236.79 milliseconds, you&amp;rsquo;d be hard pressed to find out what was going on. Maybe that time reflects RTT (roundtrip time) and my server responded instantly. Or maybe my server had to do a bunch of custom work to hand me back the bytes of my stylesheet.</description>
      
    </item>
    
    <item>
      <title>Server-Timing Compression</title>
      <link>https://vaz.ac/post/server-timing-compression/</link>
      <pubDate>Fri, 21 Dec 2018 12:02:44 -0600</pubDate>
      
      <guid>https://vaz.ac/post/server-timing-compression/</guid>
      
      <description>Introduction For domains that use our RUM product, through the power of the Edge, we are now injecting up to 3 Server-Timing entries per resource (including basepage). Because we don&amp;rsquo;t sample and because we beacon back every timer of every resource requested from every non cross-origin &amp;lt;IFRAME&amp;gt;, we&amp;rsquo;ve already been applying custom compression based on tries to save data going out of the browser. For Server-Timing, we have a lot of work to do, because the data can get pretty verbose and redundant.</description>
      
    </item>
    
    <item>
      <title>clearResourceTimings</title>
      <link>https://vaz.ac/post/clearresourcetimings/</link>
      <pubDate>Wed, 15 Aug 2018 00:00:00 +0000</pubDate>
      
      <guid>https://vaz.ac/post/clearresourcetimings/</guid>
      
      <description>While doing some field research for a talk he gave at #PerfMatters Conference, my colleague @simonhearne made an interesting discovery.
👋 @newrelic @newrelicdev !
Your injected JS clears the ResourceTiming buffer when it gets full, meaning nothing else can access the data.
Please fix, i.e. don&amp;#39;t clear the buffer 🙏https://t.co/SHAfecuGqi pic.twitter.com/uPSReutDPR
&amp;mdash; Simon Hearne (@simonhearne) March 23, 2018 Was there really &amp;ldquo;beef&amp;rdquo; between two Javascript analytics agents? How did it resolve?</description>
      
    </item>
    
    <item>
      <title>Unbound Listeners</title>
      <link>https://vaz.ac/post/unbound-listeners/</link>
      <pubDate>Mon, 30 Jul 2018 10:00:00 -0500</pubDate>
      
      <guid>https://vaz.ac/post/unbound-listeners/</guid>
      
      <description>The Setup One of the trickiest things to get right in javascript is this. To illustrate this point, let&amp;rsquo;s look at a situation we came across with one of my favorite browser APIs: addEventListener.
Attaching a load event listener to the window object is pretty straight forward:
1 2 3 window.addEventListener(&amp;#34;load&amp;#34;, function (e) { // handle `load` event }); People start to get themselves into trouble when they assign references to instance methods and later want to execute those instance methods.</description>
      
    </item>
    
  </channel>
</rss>
