• Race Conditions

    The Go language is generally safe, in that errors in your program do not lead to unpredictable crashes (unless you use the facilities in the unsafe package). There is one classic cause of problems, however, which Go does not protect you from: race conditions. A race condition occurs when one goroutine modifies a variable and…

  • Index Funds

    It’s a general guideline that people who do not follow the market obsessively should invest in index funds. Compare to mutual funds, they are lower cost, and over time tend to perform about as well, particularly when costs are taken into account. Compared to investing in individual stocks, they are much lower risk, because they…

  • Inboxes

    When I started using networked computers, I had two inboxes: e-mail and Usenet. I read every e-mail message I received. I read most Usenet postings in the groups I followed, but it was no big deal if I missed some. Those are the two main types of inboxes: the ones where you pay attention to…

  • Future Payments

    One of the ways that pure capitalism fails is an inability to price limited resources. There is a real sense in which oil, a limited resource, is almost certainly worth more today than people are paying for it. It seems likely that people in the future will be aghast at the way we are wasting…

  • .gcc_except_table

    Throwing an exception in C++ requires more than unwinding the stack. As the program unwinds, local variable destructors must be executed. Catch clauses must be examined to see if they should catch the exception. Exception specifications must be checked to see if the exception should be redirected to the unexpected handler. Similar issues arise in…