# The other side of the moon

/bb|[^b]{2}/
Never stop Grokking

## Wednesday, May 27, 2015

### Velocity Santa Clara 2015 -- My List

At Velocity SC 2015, these are the talks that I'd really like to see if only I could be in more than one room at a time.

### Wednesday, May 27

#### 09:00 Service Workers by Pat Meenan

Exciting new technology currently available in Chrome

#### 11:00 Building performant SPAs by Chris Love

Since we're doing a lot of SPA work for boomerang at the moment, I'm very interested in performance best practices for SPAs

#### 13:30 Metrics Metrics Everywhere by Tammy & Cliff

Tammy and Cliff are my colleagues at SOASTA, and this talk is based on a lot of the data that I've been working to collect over the last few years. I'm torn between this and the next one also at the same time.

#### 13:30 Self-healing systems by Todd & Matt

Todd & Matt are also colleagues at SOASTA, and this talk is about the infrastructure we've developed to collect the metrics that are covered in the talk that Tammy & Cliff are doing. I really wish I could be at both.

#### 15:30 Linux Perf Tools by Brendan Gregg

Always interested in tools to analyse linux performance.

### Thursday, May 28

I haven't listed the keynotes here because that's the only track at the time and I don't need to choose which room to be in.

#### 13:45 LinkedIn's use of RUM by Ritesh Maheshwari

LinkedIn uses a modified version of boomerang, and I'm keen to know what they've done.

#### 13:45 Stream processing and anomaly detection by Arun Kejriwal

Very interesting topic, something that I'm very interested in.

#### 13:45 Design & Performance by Steve Souders

Steve's talks are always educational

#### 14:40 Visualising Performance Data by Mark Zeman

Again, this is something I'm working on at the moment, so very interested.

#### 14:40 Failure is an Option by Ian Malpass

Etsy's devops talks are always educational.

#### 16:10 Crafting performance alerting tools by Allison McKnight

I'm very interested in crafting alerts from RUM data.

### Friday, May 29

#### 17:05 All talks at this time slot

This last slot is unfortunate. Every talk at this slot is interesting and by good speakers.

## Thursday, January 08, 2015

### IE throws an "Invalid Calling Object" Exception for certain iframes

On a site that uses boomerang, I found a particular JavaScript error happen very often:
TypeError: Invalid calling object
This only happens on Internet Explorer, primarily IE 11, but I've seen it on versions as old as 9. I searched through stack overflow for the cause of this error, and while many of the cases sounded like they could be my problem, further investigation showed that my case didn't match any of them. The code in particular that threw the exception was collecting resource timing information for all resources on the page. Part of the algorithm involves drilling into iframes on the page, and this error showed up on one particular iframe. There are a few things to note:
   ("performance" in frame) === true;

frame.hasOwnProperty("performance") === false;

The latter is not a surprise since hasOwnProperty("performance") is not supported for window objects on IE (I've seen this before when investigating JSLint problems.) There was no problem accessing frame.document, but accessing frame.performance threw an exception.
    frame.performance;    // <-- throws "TypeError: Invalid calling object" with error code -2147418113

frame["performance"]; // <-- throws "TypeError: Invalid calling object" with error code -2147418113

In fact, frame.<anything except document> would throw the same exception. So I looked at the iframe's document object some more, and found this:
    frame.document.pathname === "/xxx/yyy/123/4323.pdf";

The frame was pointing to a PDF document, and while IE was creating a reference to hold the performance object of this document, it prevented any attempts to access this reference. I tested Chrome and Firefox, and they both create and populate a frame.performance object for PDF documents.

...===...