## Thursday, July 21, 2011

### Notes on Charlie Munger on The Psychology of Human Misjudgment

Also see his book Poor Charlie's Almanac, and the talk given at USC Business School in 1994.

## Tuesday, July 19, 2011

### Measuring Elapsed Time With Counters That Wrap

Timer Wrap: "The key to avoiding wrap problems is to perform the unsigned, don’t-care-about-overflow subtraction first, then do any additional operations needed. By using subtraction like this as the first operation, any wrap-around of the timer register that may have occurred just drops out. No special effort is needed to get rid of it!"Ahh, learned this lesson the hard way. Instead of doing

`Now >= (A + 100)`

, always do `(Now - A) >= 100`

.
### How to choose a smartcard

Some things to consider when choosing a smartcard are:

Does CPU ever run on external clock?

What is the penalty for an active-shield breach?

What is the fabrication process geometry?

How many metal layers is the device?

List of labs who might have evaluated this device and their capabilities.

via Flylogic's Analytical Blog

### OTR and deniability

Put another way, the goal in a trial is not a mathematical proof, it's proof to a certain standard of evidence, based on many different pieces of data. Life isn't a cryptographic protocol.

--Steve Bellovin

Quote in reference to conversation about what security guarantees OTR actually provides. In summary, "OTR aims to provide the same deniability as plaintext, while also providing the same authentication as, say, PGP."

## Wednesday, July 13, 2011

### Dumping SSL connection information using OpenSSL

## Tuesday, July 12, 2011

### Of roots and complex numbers

## Friday, July 8, 2011

### A lovely pattern

1 x 8 + 1 = 9 12 x 8 + 1 = 98 123 x 8 + 1 = 987 1234 x 8 + 1 = 9876 12345 x 8 + 1 = 98765

The proof is via this reddit comment.

Theorem:

[12...n] x (b-2) + n = [(b-1)(b-2)...(b-n)]

Notation `[12..n]`

means a number written out as such.

[12...n] x (b-2) + n = [12...n] x b - [12...(n-1)n] - [12...n] + n (1) = [12...n0] - [12...(n-1)0] - [12...n] (2) = [11...10] - [12...n] (3) = [(b-1)(b-2)...(b-n)] (4)

*a × (b-2)*is the same as*a × b - a - a*.- Multiplying a digit in base
*b*by*b*shifts it left by 1, so*[12…n] × b*is*[12…n0]*. Also note that subtracting*n*from*[12…n]*will give you*[12…0]*. The*n-1*was added to clarify. - As a concrete example:
*1230-120 = 1110* - As a concrete example:
*1110-123 = 987*

## Thursday, July 7, 2011

### A beautiful proof about Mersenne primes

## A beautiful proof about Mersenne primes

Theorem: 2^{n} - 1 cannot be prime if *n* is composite.

Lemma: c^{n} - 1 can be written as (c - 1)(c^{n-1} + … + c^{1} + 1).

The proof for the lemma is simple. You end up subtracting

c^n + c^{n-1} + ... + c - c^{n-1} + ... + c + 1 ------------------------------------ c^n - 1

So if *n* can be written as *ab* where both a > 1 and b > 1, then

2^{ab} - 1 = (2^a)^b - 1 = (2^a - 1)((2^a)^{b-1} + (2^a)^{b-2} + ... + 1)

So we have (2^{a} - 1) as a divisor.

A stronger theorem is: Suppose c > 1 and n > 1, and c^{n} - 1 is a prime, then c = 2 and n is a prime.

See this handout for this and other proofs.

## Wednesday, July 6, 2011

### Fast2Sum.v

double Fast2Sum (double a, b) {

double s = a + b;

double r = b - (s - a);

return r + s; }

See A floating-point technique for extending the available precision by T. J. Dekker.

So obvious, right?

### Unfounded (floating point) compiler optimizations

Thou shalt not assume… | although you can assume… |
---|---|

x == x | x == y ⇔ x - y == 0 |

x <= y ⇔ ¬(x > y) | x <= y ⇔ x < y ∨ x == y |

x == y ⇒ 1/x == 1/y | x == y ⇒ 1 + x == 1 + y |

x / 10 == x * 0.1 | x / 8 == x * 0.125 |

x + (y + z) == (x + y) + z | x + y = y + x |

x * (y * z) == x | x * y = y * x |

rnd64(rnd80(op)) == rnd64(op) | rnd32(rnd64(op)) == rnd32(op) |

### How to pronounce names (Godel, Cauchy, Weierstrass etc.)

- How to pronounce Kurt Godel
- How to pronounce Cauchy
- How to pronounce Weierstrass

### Self-regulated learning (link)

I was directed to research this more after reading the article Becoming a Self-Regulated Learner: An Overview by B. Zimmerman (2002)

## Friday, July 1, 2011

### TDL4 – Top Bot - Securelist

TDL4 – Top Bot - Securelist: "When developing the kad.dll module for maintaining communication with the Kad network, code with a GPL license was used — this means that the authors are in violation of a licensing agreement."Really? The developers of a massive botnet have this as their top worry? Really?

### Thoughts on binary obfuscation

## Thoughts on binary obfuscation

The purpose of binary obfuscation is to prevent an adversary from
reconstructing the *high level logic* of your program (see the
Wikipedia article on reverse engineering).

I'm not an expert in this area. I'm writing this entry so I can organize my thoughts and refer to it later.