Avoiding Regressions in 3rd Party JavaScript

34
AVOIDING REGRESSIONS IN 3pjs Cameron Westland Kera Software @camwest Monday, 18 March, 13

Transcript of Avoiding Regressions in 3rd Party JavaScript

AVOIDINGREGRESSIONS

IN 3pjs

Cameron WestlandKera Software

@camwest

Monday, 18 March, 13

TOC 1/5

How to iterate really fast

What is 3pjs?

How we broke our customers website

How we won’t break any more websites

Wrap-up

Monday, 18 March, 13

CONTINUOUS DEPLOYMENT

Go fast and break things.

Monday, 18 March, 13

How to iterate really fast

What is 3pjs?

How we broke our customers website

How we won’t break any more websites

Wrap-up

TOC 2/5

Monday, 18 March, 13

WHAT IS 3pjs?

Monday, 18 March, 13

1. User authors walkthrough using our tool

2. Deploys it to their website

3. The walkthrough guides users through tough workflows

Monday, 18 March, 13

Monday, 18 March, 13

Monday, 18 March, 13

Monday, 18 March, 13

How to iterate really fast

What is 3pjs?

How we broke our customers website

How we won’t break any more websites

Wrap-up

TOC 3/5

Monday, 18 March, 13

How we completely busted Verold Studio…AKA: Why not to trust third party javascript startups.

Monday, 18 March, 13

Monday, 18 March, 13

CONTINUOUS DEPLOYMENT

3pjs+

Monday, 18 March, 13

KERA’S CONTROLLER

Verold’s fixed elements occluded by Kera

Monday, 18 March, 13

Bad.

ORIGINAL PAGE

TARGET

SCROLLEDVIEWPORT

KERA CONTROLLER

Monday, 18 March, 13

Awesome.

NEW SPACE

ORIGINAL PAGE

TARGET

SCROLLEDVIEWPORT

KERA CONTROLLER

Monday, 18 March, 13

Monday, 18 March, 13

Monday, 18 March, 13

Verold uses fixed position elements.

Monday, 18 March, 13

NEW SPACETARGET

WEB GL MENU

WTF…

SCROLLEDVIEWPORT

KERA CONTROLLER

Monday, 18 March, 13

So, should we get rid of continuous deployment?

Monday, 18 March, 13

How to iterate really fast

What is 3pjs?

How we broke our customers website

How we won’t break any more websites

Wrap-up

TOC 4/5

Monday, 18 March, 13

VERSIONING

Web Appspush when

green

Web APIsversion applies to the interface

only

Client Libraries

???

Monday, 18 March, 13

IMMUTABILITY

• “The quality of being incapable of mutation”

• Version 1.1.1 never changes

• Version 1.1.2 is different than 1.1.1

Monday, 18 March, 13

DATA DRIVEN VERSIONING

Monday, 18 March, 13

DATA DRIVEN VERSIONING

Lock version

Monday, 18 March, 13

DATA DRIVEN VERSIONING

Lock version

Monday, 18 March, 13

HOSTING OLD VERSIONS

lastest.json1.1.11.1.01.0.71.0.61.0.51.0.41.0.31.0.21.0.11.0.0

Monday, 18 March, 13

SELECTING A NEW VERSION

Monday, 18 March, 13

No more regressions.

Monday, 18 March, 13

Delight your customers.

Monday, 18 March, 13

How to iterate really fast

What is 3pjs?

How we broke our customers website

How we won’t break any more websites

Wrap-up

TOC 5/5

Monday, 18 March, 13

• Version both your server and client

• Server slow (based on API)

• Client fast (every push)

• Data drive which version your customer is using

• Don’t delete old versions that are still being used

• Go fast and break things

SUMMARY

Monday, 18 March, 13

Thanks!@camwest

kera.io

Monday, 18 March, 13