## Giving to charities#

If you are considering giving to charities, consider giving the tax deduction to them too. (In the United States at least, donations to charities are considered “tax-deductible” and you do not have to pay taxes on that amount.) If you donate an item or cash worth x, and your tax rate is r (30% would mean r=0.3), then you’re going to get x*r back in your tax refund. Give that to the charity (in cash). You’ll get x*r2 back in your tax refund. Give that to the charity too. You’ll get x*r3 back. Give that to the charity too. Rinse and repeat.

What the charity will end up getting is x + x*r + x*r2 + x*r3 + .... Written another way, that's x * (1 + r + r2 + r3 + ...). This can be rewritten as x * (1 / (1 - r)).

So when you’re giving an item worth x to the charity, if you decide to give all the tax credits to them, they will end up with something worth x / (1 - r). Let’s say you’re donating an item worth \$100 and your marginal tax rate is 33% (federal + California can easily be this high). You can give them \$100/(1-0.333) = \$150 if you go through the itemized tax deductions. So give them the original item plus the \$50. That’s a big bonus for them (especially since it’s cash), and all it costs you is the time and hassle of keeping track of the receipts for tax purposes. If you had kept the tax credit, you would have \$33, but if you give it to them, it’s worth \$50.

## Zen Stories#

Last night I found a nice collection of Zen stories.

## Obliquity#

Obliquity: an essay about making money, being happy, and achieving your goals.

## Number Spirals#

NumberSpiral shows some fascinating patterns achieved by arranging natural numbers on a spiral. I have’t tried to verify these patterns myself though.

## Writing Scanners in Python#

If I ever work on Yapps again, I should take a look at using this “undocumented” feature of the SRE engine. I’m currently going through a list of regular expressions and trying to match each one. For example, I might have a list `r'if'`, `r'\w+'`, `r'\d+'`. With this new feature, I can combine all the regular expressions into one with alternation (`r'(if)|(\w+)|(\d+)'`) and then the regexp engine will tell me which one of them matched. This should speed up the scanner greatly.