It can be surprising to learn that frustration, which often leads to anger, can be easily dispelled. Frustration consists of two parts: first, a perception of how the world IS; and second, a belief that it SHOULD BE otherwise. Sometimes you can change your perception, and sometimes you can change the world — but you can always change your beliefs. When you let go of the belief that it the world should ‘be otherwise’, should ‘already have changed’, then you can perceive it more clearly, with sympathy and love. Suddenly you perceive new avenues for change, and your feeling of frustration melts away like the morning mists before the sun.
On Frustration
21-Oct-12Shopping Lists and the ‘No X’ item
10-Oct-12I do most of the shopping since Danielle works business hours. The primary shopping list is on a whiteboard that’s stuck onto the fridge with magnets. This is convenient for writing down groceries as soon as we use up the last one or discover that we need something.
I keep another shopping list in my list manager, ToodleDo. This syncs between web, iPhone and iPad so it’s always with me and up to date.
Before I leave the house to go shopping I take a cell phone picture of the fridge whiteboard. This is faster and less error-prone than transcribing the list onto paper or into the phone.
One technique we’ve been using is the ‘No X’ item. In a context where I’m getting “fruit” it’s helpful to be reminded we have a half bag of apples — the way we do this is by writing ‘fruit — no apples’ on the list. Or ‘tortilla chips — no salsa’ to indicate that we only need chips but have enough salsa at the moment.
Since we try to limit ourselves to a weekly Costco trip, this is helpful for not overspending our budget and for not overstocking perishables. Â I’m surprised to say that this and other techniques have cut our grocery budget by 50%, to say nothing of our waistlines and eating out budget. Â We eat better food, and Danielle is happier that there are not more groceries than can be used up.
An interesting difference between us uncovered just this summer after nearly twenty years together is the profound difference we have regarding groceries. Â Danielle views herself as committed to turning the groceries into healthy and delicious food with minimal spoilage of leftovers and components. Â Sam views the groceries as stocking the savannah of the fridge for a time. Â Naturally enough, we view the entry of four large artichokes, a kilo of fancy mushrooms and fresh herbs into the house somewhat differently.
We are not sure if these are personality, gender or upbringing differences. Â Thoughts?
Procrastination
30-Aug-12If you are actively procrastinating and you find yourself doing X instead of Y, then you’re already partway to the cure. Use X as a reward for having completed some Y. Example: I will reward myself with 5 minutes of filing after I do 25 minutes of bookkeeping.
(Yes, some days I would rather do filing than bookkeeping.)
Politics and Tribes
26-Apr-12I just took down the tagline from the blog. It used to read ‘trying to avoid labels’, which I thought was pretty clever, until David Frum and friends adopted the name ‘no labels’ for a centrist-conservative position.
But it turns out that I don’t have the moral profile of either a traditional liberal/Democrat or conservative/Republican. I was raised more-or-less as a liberal, which I gave up at some point in my teens, and drifted in a conservative direction until I realized I didn’t fit in with them either.
Realizing that my politics were truly independent, I felt briefly proud of myself until I discovered that what it actually means to be independent is to have no political friends. Democrats view me as a not-Democrat and therefore Republican, and Republicans view me as a squish — that is — as a liberal who doesn’t really want to admit he’s a liberal and therefore pretends to be a moderate or a Republican.
Later I discovered that apparently I had succeeded it making it to the advanced age of 36 without realizing that politics is essentially a tribal exercise — kind of like war. And by not belonging to either major tribe I don’t get the status of noncombatant. Rather, I am treated as a Quisling, fifth columnist, or, at best, as an enemy civilian whose death or injury is regarded as collateral damage — regrettable, but unimportant as long as the greater goal of defeating the main enemy is achieved.
I’m almost embarrassed to admit it, but up until this year I genuinely believed that the purpose of politics was to choose the best course of action for government. I also have a very weird view, specifically, that governments in general should not spend more than they take in in taxes.
Moving Gaily Blogwards
26-Apr-12I’ve been meaning for some time to revive my blog and move some of my more political posts there. As opposed to happy family & edmonton & homeschooling posts which will remain mostly on Facebook.
So this is by way of an announcement and a test post, that from now on, for Sam’s Political Ranting you should check out sambal.org (though announcements will still be posted here).
Progress: Bathroom Edition
17-Apr-12I remember when I was a kid my family had these little plastic handles that fit on the end of toothpaste tubes to provide a better mechanical advantage when squeezing toothpaste out.
These days toothpaste tubes are made out of soft plastic and even kids have no trouble squeezing them.
Sqlite ‘database table is locked’ error
07-Feb-12You might think that the following two designs for a routine are equivalent.
First:
[cpp]
int lookup( int nKey )
{
m_qLookup.Reset();
m_qLookup.Bind( 1, nKey );
int rc = m_qLookup.Step();
if( rc != SQLITE_ROW )
return 0;
int n = m_qLookup.GetColumnInt(0);
// some more processing on n
return n;
}
[/cpp]
Second:
[cpp highlihght=”11″]
int lookup( int nKey )
{
int n = 0;
m_qLookup.Bind( 1, nKey );
int rc = m_qLookup.Step();
if( rc == SQLITE_ROW )
{
n = m_qLookup.GetColumnInt(0);
// some more processing on n
}
m_qLookup.Reset();
return n;
}
[/cpp]
Yeah, they’re logically equivalent. It’s no error to Reset()
a query before it’s been used, and it’s fine for a query to be in-progress when you Finalize()
it at the end of processing. The first way has an early return, which some people find ugly. Personally I think that indenting the extra processing (line 11 in example 2) is uglier, especially when it’s more than a few lines.
Except for the one big difference — that is, that the first version, once called, makes it impossible to drop any table, even a temp table, from the database.
I just ran into this. Apparently having any query in progress (after the first Step()
and before any Reset()
) creates a lock on the schema which prevents certain schema changes. In particular, adds are OK but drops are not. And the apparent action is non-local — shall I say, spooky action at a distance? In my case the query that was un-Reset was in one module and the code that created, used, and dropped (or rather, failed to drop) the temp table was in another module entirely.
Fortunately for me, I had not merged in anybody else’s code yet, so I knew that the the problem had been caused by something I did recently, and it only took a little while to track down. More fortunately, the code was trivially transformed into something that didn’t leave the query open.
Badge Care
15-Mar-11- Do not use for any other purpose other than for access control or identification.
- Do not leave in direct sun light, for example on the dash of your car.
- Do not expose to extreme heat or open flame. For example, clothes dryers or clothes irons.
- Do not expose to organic solvents, thinners, mineral spirits, etc.
- Do not use as an ice scraper or scraping tool.
- Do not crimp, bend, or twist card.
- Do not re-laminate.
- Do not immerse in alcohol, Isopropyl, ethanol, methyl, etc.
- Do not bite.
- Do not pound with a pen or tool.
- Do not punch a slot or hole in an undesignated area.
- Do not scratch or place any decals on your card.
- Do not wash your card.
(Admonishments to RAH ID card issuees; sadly, most of these must be from experience…)
Little-Known Fact
09-Mar-11Before Mark Zuckerberg founded Facebook (with the motto “move fast and break things”) he was involved in a previous venture.
This startup — promoting Kellog’s All-Bran cereal — had the motto “breakfast and move things”.
If We Took Michael Moore’s Advice
09-Mar-11Michael Moore says the US is not broke: all “we the people” need to do is take the money back from the fat cat billionaires.
What if we took this advice? Let’s imagine expropriating some of the wealth of the richest man in America, William Gates III. Forbes says he’s worth about $54 billion, of which $16 billion is his Microsoft stock. Let’s start by taking that.
OK, so now we’ve seized about 7% of Microsoft’s stock. That’s the largest single block of stock, which should give us some privileges like picking a board member or two. Unfortunately we don’t have actual control of the company because, well, the other 93% could easily outvote us. So we have to sell the stock in order to get cash.
MSFT is trading at $25.91 right now. If we dump shares on the market the price will drop somewhat – say ten percent. So we’ll clear about $14.5 billion dollars during our sellout, driving the MSFT share price to $23.32. (Incidentally, this will reduce the wealth of everyone else who holds MSFT stock by a total of about $22 billion.)
OK! Now we’ve got $14.5 billion in cash for “we the people”. That’s, uh, $50 per person. OK, here you go. Fifty bucks. That really helped a lot.
What were the secondary effects? Well, I’d guess for starters that any publicly-traded company which has substantial ownership by a billionaire will suffer a hit in stock prices: that would be Berkshire Hathaway, Oracle, Microsoft again (Paul Allen), Wal-Mart, Koch Industries (privately held), Bloomberg (privately held), Google, Facebook (limited trading), Apple… After all, if the government (we the people!) demonstrates a willingness to take Bill Gates’s stock and sell it, why would these others be safe?
Ding! What’s that I hear? It’s another delicious running-dog treat from my friends at Koch Industries. Gotta go, I’m already salivating!