Before revision:  given a set X of n points in \mathbb{R^{d} and an error parameter \epsilon, this is a linear transformation \Psi: R^{d} } \mathbb{R^{O(\epsilon^{-2}n)} such that \|\Psi x\|_{2} \in (1- \epsilon, }  1 +\epsilon)\cdot \|x\|_{2 for all x\in X, and such that for each x\in X, \Psi x can be computed }  ] ] ]  in time O(d\log{d} + \min\{d\log{n, \epsilon^{-2}\log^{3}{n}\log^{3}(\epsilon^{-1}\log{n}) \}) with only a constant amount of memory overhead.
After revision:  given a set X of n points in \mathbb{R^{d} and an error parameter \epsilon, this is a linear transformation \Psi: R^{d} } \mathbb{R^{O(\epsilon^{-2}n)} such that \|\Psi x\|_{2} \in (1- \epsilon, } 1 +\epsilon)\cdot \|x\|_{2 for all x\in X, and such that for each x\in X, \Psi x can be computed } ] ] ] in a stronger form. (2) The same construction gives a simple transform with optimal Restricted Isometry Property (RIP) which can be applied in time O(d\log{d} + \min\{d\log{n, \epsilon^{-2}\log^{3}{n}\log^{3}(\epsilon^{-1}\log{n}) \}) with only a constant amount of memory overhead.