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.

http://developer.yahoo.com/blogs/ydn/high-performance-sites-rule-13-configure-etags-7211.html 

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

http://www.juniper.net/security/auto/vulnerabilities/vuln6939.html

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 Amazon.com, 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.

http://marakana.com/s/post/1432/how_fast_are_we_going_now_web_performance_Steve_Souders_video

See also:

http://www.webpagetest.org

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.

http://velocityconf.com/velocity2009/public/schedule/detail/8523

and 

http://marakana.com/s/post/1432/how_fast_are_we_going_now_web_performance_Steve_Souders_video

Deploy / Monitor

Performance and Availability monitoring

Keynote

http://www.keynote.com/products/mobile_quality/

Compatibility testing for Android

DeviceAnywhere

http://www.keynotedeviceanywhere.com

uTest

Crowd-sourced testing 

http://www.utest.com

Internal monitoring

QPS,  Uptime, etc

Client Crash Log (of Enterprise Builds)

Metrics tracked daily

More from LinkedIn talk around 53 mins:

http://www.youtube.com/watch?v=hMd45Ij2DYQ

Test frameworks

This is from a video by LinkedIn.

Automation

Vows

Asynchronous BDD (Behaviour Driven Development) for Node

http://vowsjs.org

Robotium

Test framework for black-box test cases for Android

http://code.google.com/p/robotium/

Selenium

Automating web applications for testing purposes

http://docs.seleniumhq.org

FoneMonkey

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

https://www.gorillalogic.com/fonemonkey-ios

GHUnit

Test Framework for Objective-C

https://github.com/gabriel/gh-unit

Build Management

Hudson 

A Continuous Integration Server

http://hudson-ci.org

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.

Performance

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

More on that talk here at around 45 mins in:

http://www.youtube.com/watch?v=hMd45Ij2DYQ

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:

High

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/reclaimMacDiskSpace.sh

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. 

Medium

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

http://stackoverflow.com/questions/5302789/can-i-remove-previous-versions-of-iphone-support-in-devicesupport-folder-in-xcod

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

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

Low

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 Gemini.app 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:


http://stackoverflow.com/questions/7270502/how-to-log-all-methods-used-in-ios-app/7275049#7275049