ETag – reconfigure or remove

ETags (Entity Tags) are used to check if something (image, script, etc) in the browser’s cache matches the one on the server.

They’re an alternative to using Last-Modified Date.

However, as the default format included inode (for Apache) and server version (for IIS) it caused problems with large scale websites that have multiple servers as these would return a different ETag for exactly the same file just because it was on a different server.

The options are to reconfigure how ETag is set up in Apache / IIS or disable it. 

Another issue with including inode information in the header is security. Revealing this information can aid attacks on other network-based services:

Samsung TVs – APIs

Real shame about the Samsung TV APIs.

Could have been amazing but turned out to be pretty basic.

For example, accessing the camera is done using HTML5 APIs – and turn out to be rather basic. 

E.g. face detection would be an amazing addition but isn’t possible due to the lack of Native code.

Perhaps in a year or two!

window.onload != user perception

window.onload used to be pretty accurate.

But now we’re lazily loading stuff, using responsive images, dynamic elements rendered with JS and CSS. So, it’s not an accurate guide to user perception. E.g. take Gmail.

This isn’t ready till after window.onload. But there’s nothing that can tell us it’s ready.

Or, it’s usable (i.e. we can see products and prices) after around 2.0 seconds but the window.onload doesn’t fire till 5.8 seconds.

Which is the reasoning behind Speed Index at Web Page Test.

See also:

Server Delays and impact on user

This O’Reilly study shows:

Given a page load delay how much (as a percentage) Revenue / User decreases: 

500ms / 1.2% 

1000ms / -2.8%

2000ms / -4.3%

From Bing.

From the Obama campaign, a 60% increase in speed meant a 14% increase in donations.


Deploy / Monitor

Performance and Availability monitoring


Compatibility testing for Android



Crowd-sourced testing

Internal monitoring

QPS,  Uptime, etc

Client Crash Log (of Enterprise Builds)

Metrics tracked daily

More from LinkedIn talk around 53 mins:

Test frameworks

This is from a video by LinkedIn.



Asynchronous BDD (Behaviour Driven Development) for Node


Test framework for black-box test cases for Android


Automating web applications for testing purposes


Functional testing tool that allows the interactive creation, editing and playback of automation scripts that exercise an application’s user interface


Test Framework for Objective-C

Build Management


A Continuous Integration Server

Interestingly, they only commit to the trunk. i.e. there are no branches. Developers always commit to the trunk.

Layout Testing

Kiran (LinkedIn) said they use an internal tool that does this. Apparently they’re going to OSS it.


Again, Kiran said they use an internal PhantomJS based tool for this.

More on that talk here at around 45 mins in:

Reclaiming disk space on the Mac

When I bought my MacBook Pro I immediately ditched the hard drive that came with it, open up the system and installed an SSD drive – immediately voiding the warranty!

But, I got some amazing response times – applications launch almost immediately – heaven!

The downside, however, is that your disk space is at a premium. So, I’ve got a bunch of ways to reclaim disk space. I’m an iOS and web developer so they’re more geared to that type of usage. Here are my top tips sorted by priority:


If the Mac is complaining about low disk space and I need an immediate fix here’s what I do:

1. Empty Trash

2. Run ./bin/

This is a series of scripts that delete non-important stuff such as iPhoneSimulator apps, DerivedData, Downloads (I can always re-download stuff!) and Mobile Backups.

I won’t list the script details ‘cos it should all be pretty obvious. But ping me if you’re interested.

These turn out to save a surprising amount of space right off the bat. 


When I have a bit more time (usually after something important has happened like I’ve run out of disk space or Xcode won’t install due to insufficient space!) I’ll do these:

Backup to an external drive then delete: 

1. iPhone app Archives: ~/Library/Developer/Xcode/Archives

2. Old versions under iOS DeviceSupport: ~/Library/Developer/Xcode/iOS DeviceSupport

3. Mobile backups under: ~/Library/Application Support/MobileSync/Backup.local

At one time I had over 2GB of data here!


When I want to be really meticulous (and I sometimes make a point of clearing out an additional 20GB of space on my SSD drive) I go through these:

1. use OmniDiskSweeper to work out what’s using the most space and start off by clearing these out

2. Use to dedupe files

Any other suggestions?

Log all method calls in iOS

Crazily fun the first time but, after seeing reams of internal Apple methods being called, it starts to get boring. 

Potentially useful – but yet to find it!

Breakpoint action

In the Debugger Command field, rather than starting off with printf use:

expr -- (void)printf("[%s, %s]\n",(char *) object_getClassName(*(long*)($esp+4)), (char *) *(long *)($esp+8) )