3,096 karma · joined March 8, 2011
You can reach me at ben at espresso.ai.
Do you have an example of a comment, on this or another paper, that you found insightful?
Instead, your balance includes only processed transactions, whereas your account also has a list of pending transactions that can hit your balance at any time. Pending transactions can also disappear from your account, only to come back as a confirmed transaction. In effect, you can't be sure of exactly what's in your account unless you manually keep track of every charge you've made.
Banks do more than this to make overdrafts difficult to deal with. For example, Bank of America intentionally processes your transactions from largest to smallest, ensuring you'll git hit with the maximum number of overdraft fees.
e.g: if you have $10 in your account, and you make a $3 purchase, a $4 purchase, and a $12 purchase, they'll run the charges in the order of $12, $4, and $3, hitting you with three fees instead of one.
tl;dr: banks love overdraft fees and do whatever they can get away with to hit you with them.
The problems are ranked by difficulty, so you might be able to work your way up to the harder ones.
"Working through" means doing exercises and projects. Reading or watching material without applying it doesn't help.
I aim to spend an hour a day on this. It doesn't always happen, but it's a reasonable enough goal that I can find time for it most days. Occasionally, I'll take a full day to study on the weekend.
Some specific recommendations:
books:
SICP (https://mitpress.mit.edu/sicp/)
K&R
The Art of Computer Programming (if you have lots of time)
On Lisp (http://www.paulgraham.com/onlisp.html)
Learn you a Haskell
Types and Programming Languages
CLRS
The Dragon Book (Compilers, http://www.amazon.com/Compilers-Principles-Techniques-Tools-2nd/dp/0321486811)
OCW Courses:
6.172 (High performance engineering)
6.046 (Algorithms)
This is just what I've been interested in and is by no means comprehensive. Outside of CS, math is great to learn if you haven't studied it formally.I've found it's best to pick a topic you know enough about to be motivated to study it, but haven't done serious work in.
For example, you could put up a web server written entirely in Scheme or some other dialect. This would process and respond to queries entirely in Scheme, including some sort of engine for generating and serving html. Hacker News itself is an example of this: it's written in a lisp dialect called Arc.
Incidentally, Haskell is functional, but it isn't a lisp.
Second, many companies, especially tech companies, do not pay dividends.
In particular, a growing company would be foolish to distribute dividends; dividends are for companies that have reached a steady-state. Waiting for a company to hit steady-state from inception can take a very long time.
If half of the portfolio fails (a good outcome), the cashout option would need to be 2x the original investment for them to break even. More if failing companies are likely to use up the entire line-of-credit and successful companies are not.
Setting the payout to be a percent of revenue might work, but could also kill a company with thin margins. Setting it to be a percent of profit will encourage companies to post zero profits. I'm not sure what the other options are.
Excel's built-in functions are optimized to run fast individually, not to work in concert. (Also, some of them are just slow for no good reason.)
Plus, the folks on KGS are friendly, and there are always plenty of other 30 kyus to play with. No need for it to be tense.
(Don't make the mistake of practicing against a computer to start. AI plays very differently from humans, and you'll develop weird habits.)
If you're in New York and interested in an in-person game, send me an email - ben at datanitro dot com.
However, if you could break an egg and then unbreak it, that would be remarkable (and observable), whether you did it tomorrow or yesterday.
(I'm one of the DataNitro founders.)