For various personal reasons, this topic of helping the poor is one that interests me greatly. So I’ll probably post a few times on my reactions to his arguments in this book.
This evening I read chapter 2.
Chapter 2: The Basic Argument
“First premise: Suffering and death from lack of food, shelter, and medical care are bad.”
Yep, seems reasonable to me, although nihilists might disagree.
“Second premise: If it is in your power to prevent something bad from happening, without sacrificing anything nearly as important, it is wrong not to do so.”
Yep, also sounds pretty good.
“Third premise: By donating to aid agencies, you can prevent suffering and death from lack of food, shelter, and medical care, without sacrificing anything nearly as important.”
Not so fast, Mr Singer. I’ve seen aid agencies from the inside. I’ve also seen them at work in various African countries. In my opinion, they are not an unqualified good, successfully converting donated funds to saved lives. They have their fair share of empire building, wasteful spending, clashing ideologies, and dire projects. To those who doubt this, I challenge you to spend six months working for an aid agency. You are likely to become outraged, cynical, or defeatist.
“Conclusion: Therefore, if you do not donate to aid agencies, you are doing something wrong.”
Because I don’t agree with the third premise, I don’t agree with the conclusion.
Nevertheless, I do financially support an aid agency, and have done so regularly for 16 years.
I played some live poker recently, and it revealed two things. One: I’m not very good at live poker. Two: I’ve become dependent on Poker Copilot’s HUD. When there’s a tough call to be made, I check my opponent’s stats. Does he attempt to steal the blind often? If so, I’ll call him with my AT. Does my opponent have a low Post-flop Aggresion Frequency? If so, then I’ll fold my outside straight draw to his post-flop raise.
In live poker, there’s no transparent box hanging over a player’s head. I wonder if I could make a Poker Copilot 3D…
It used to be that when I wanted to make a new screen for a computer program, my first step was to grab pencil and paper to sketch out how it should appear. I realised today that my first step now is to launch Balsamiq Mockups.
Poker Copilot’s power users often ask me to remove the 150,000 hand limit. Overcoming this for version 2 has required lots of changes to Poker Copilot’s database engine. As you can see in the screenshot, I now have 500,000 hands in my test database: In close-up: Storing 500K hands requires about 2 GB of disk space.
There’s been some technical challenges in adding this while keeping Poker Copilot’s speed. I’ve used every database performance trick I could find: denormalising data, removing unused data, creating pre-built data summaries, using multiple threads. The result seems satisfactory. Or, as we say in IT technical jargon, it’s butt-kickin’ wicked fast.
English is the de-facto standard language of software development.
This is simply not true in my experience here in Germany. I’ve worked with teams of German programmers who prefer talking and working in German. My German is pretty lousy, yet most of my German colleagues clearly preferred perservering with me in German on programming issues.
Typical German programmers can speak English. They can read Javadocs in English. But they are more comfortable doing so in their native tongue. They have families, customers, bosses who all speak to them solely in German. They watch television and read books in German. Therefore to program in German is more natural.
English-speaking-only people around the web say things like “all the German programmers I meet speak English.” But naturally! This boils down to saying “all Germans I’ve been able to speak to in English speak English!”. Or in logical form:
A and B implies B
where A is “is German” and B is “speaks English”.
This leads to some strange code, because of Java conventions such as setters and getters. These rely on being in English to work. So method names are sometimes a mixture of languages. For example, setAnschrift(…) or getGrenzwert(). The “set” or “get” part ensures things work, but the “Anschrift” or “Grenzwert” part ensures all on the team understand what it does.
If you are thinking of buying Poker Copilot, here’s some good news. On April 7th Poker Copilot is MacZOT‘s offer of the day. For one day only, you can get Poker Copilot for 50% off. That’s $24.95 instead of the regular price of $49.95.
You will also be eligible for a free upgrade to the forthcoming Poker Copilot 2.
In March for the first time http://pokercopilot.com/ got more traffic from search engines (read: Google) than from referrals. I’m happy about this. All three types of traffic continue to grow in absolute terms, but search engine traffic is growing faster.
Coincidentally (or not?) Poker Copilot’s Google PageRank reached six a few days ago. This is very, very good for me.