Random things #8

Written on 18 March 2015, 10:28pm

Tagged with: , , , , ,

A/B vs Multivariate Testing

A/B testing: two versions (A and B) are compared, which are identical except for one variation that might affect a user’s behavior. Total number of variations: 2. More
Multivariate testing: multiple variables are modified for testing a hypothesis. The goal of multivariate testing is to determine which combination of variations performs the best out of all of the possible combinations. [Total # of Variations] = [# of Variations on Element A] X [# of Variations on Element B] ... More

Permutations, Arrangements, Combinations

Given a set of n elements (ex – for n=3, the set is A, B, C)
Permutations: each ordered set of n elements P(n) = n!
In our example with n=3, P(3)=3!=6: АВС, АСВ, ВАС, ВСА, САВ, СВА
Arrangements: each ordered set of k elements A(n,k) = n! / (n-k)!
In our example with n=3, ordered pairs of 2, A(3,2)=3!/(3-2)!=6: AB, BA, AC, CA, BC, CB
Combinations: each unordered set of k elements C(n,k) = n! / k! (n-k)!
In our example with n=3, un-ordered pairs of 2, C(3,2)=3!/2!*1!=3: AB, AC, BC
And the relationship between P, A, C: C=A/P
Remember that for the permutations you don’t need a k! More

About learning

Learning isn’t done to you, it’s something you do. You need to take responsibility of your education. There will always be a new technology to learn, but this is not that important. Is the constant learning that counts.
Andy Hunt – Pragmatic Thinking and Learning

We all tend to learn best by doing and teaching. Active learning is a much more effective way to learn than any other way.
It seems a bit strange, but it should really be no surprise that play is a powerful mechanism for learning. […] This simple process that comes natural to us all, but somehow gets “taught” out of us, is the simplest and purest way to learn.
John Sonmez – Soft Skills

Random links:

(more…)

TLS handshake

Written on 12 February 2015, 09:59pm

Tagged with: , ,

The initial communication in a HTTPS connection relies on a traditional D-H key exchange – which will serve as symmetric encryption key for the rest of the HTTPS conversation.
The outline of the handshake is:
– client/server hello: list the available encryption algorithms
– certificate exchange
– certificate validation
– key exchange
– finished

Here is the process explained in layman words:

1. Client sends a Client hello message to the server with some metadata (TLS version, cipher algorithms, compression methods)
2. The server replies with a Server hello message to the client with the corresponding metadata + the Server public certificate signed by a CA.
3. The client verifies the server digital certificate and cipher a symmetric cryptography key using an asymmetric cryptography algorithm, attaching the server public key and an encrypted message for verification purposes.
4. The server decrypts the key using its private key and decrypts the verification message with it, then replies with the verification message decrypted and signed with its private key
5. The client confirm the server identity, cipher the agreed key and sends a finished message to the server, attaching the encrypted agreed key.
6. The server sends a finished message to the client, encrypted with the agreed key.
From now on the TLS session communicates information encrypted with the agreed key
https://github.com/alex/what-happens-when

The same process – explained in full details.

Note: Excepting the initial TLS handshake, the other HTTPS content (headers + payload) is encrypted with the key agreed during the TLS handshake.