Monday, February 4, 2008

A charity list

After doing a bit of research on charities last week, and soliciting suggestions form friends, here's a charity list. It's not complete though, I'm still looking for a good charity that helps the poor with healthcare costs. Anyone want to start one?
  • Planned Parenthood of America
  • NARAL
  • ACLU
  • Americans United for the Separation of Church and State
  • Amnesty International
  • Sierra Club
  • Nature Conservancy
  • Greenpeace
  • Human Rights Campaign
  • PFLAG
  • kiva.org
  • Doctors Without Borders
  • Donors Choose
  • Heifer International
Also, here is a link to the Better Business Bureau's charity review website, which has information on what % of your donation will actually make it to the cause, how much administrative overhead there is, what the charity pays it's manager, etc.

Monday, January 28, 2008

An economic solution to a social problem

I work with a person who often goes on inappropriate political rants at work, on a variety of topics, like how "Illegal immigrants are clogging up our emergency rooms and driving up the cost of healthcare!" as well as the perils of socialized healthcare, how our country is being "invaded by outsiders", and (in a confusing attempt at two-wrongs-make-a-right sexism): how women are superior to men. It's all strikingly offensive. I don't even want to get into all the reasons why I disagree. In particular the disparaging comments about "outsiders" are cruel because half the company is on an H1B Visa. And these comments are hypocritical because all of these people on H1B Visas are underpaid and overworked. This person threatens to fire and "send them back where they belong" if they complain.

At Amazon, bringing up any of these topics or even disclosing an employee's visa status was a "fire-able offense". Overall Amazon was very progressive about workplace environment issues. There was an official definition of "hostile workplace environment" which included talking about religion, politics, race, sex, visa status, etc at work. Unfortunately, there's no such concept here, and no HR department to help mediate. Several times I've tried talking to this person about how she's affecting the workplace environment, but to no avail. She doesn't think she's doing anything wrong.

So, here's what I'm going to do to try to help, in some metaphysical way. Every time she goes on an inappropriate rant, I'm going to donate money to a charity that helps the group of people her rant oppresses. So every time she rants about illegal immigrants driving up the cost of health care, I'm going to donate money to a charity that provides health care services for the poor in areas known to have high concentrations of illegal immigrants. Every time she rants about democrats, I'm going to donate to the democratic party. Every time she makes a racist or sexist comment, I'm going to donate to the ACLU. I'm thinking $25/rant will be a good start.

I have a few charities in mind to start with, but if anyone has any suggestions or charities they particularly like, please post them in the blog comments.

Thursday, January 24, 2008

Real life steganography!

A Burmese poet uses steganography to embed a political message within a poem! But, not provably secure steganography, so unfortunately he was caught.

Tuesday, January 22, 2008

Computing the volume of a cat

Have you ever wondered how to compute the volume of a cat? Of course you have. Especially if you live in Seattle near the Capitol Hill branch of Twice Sold Tales with the 6+ cats, numerous kitty trees, and cat runs on top of the bookshelves. Otherwise known as the home of world's largest (and friendliest) cow-patterned cat. Anyway, here's a guide from the folks at EvilMadScientistLabs.

Thursday, January 10, 2008

Business 101

Today I attended (and helped lead) a 9-hour meeting with a client my company is building a portal for. Earlier this week my boss told me "Oh by the way, this client has been paying your salary. Even though I've had you working on other projects for the last 3 months, you need to make it seem like you've been working on their project for the last 3 months because I've been billing your hours directly to them."

First reaction: freaking out. This is unethical! Why didn't they tell me this? How can I possibly slap together a demo in a week that looks like 3 months of work? I'm doomed! Then I talked to my dad who laughed and said "This is business. This kind of stuff happens all the time. You should feel lucky that you were surprised." I confronted my boss about this, who said "Sorry, but the other project needed to get done too. I'll try not to do this again. In the meantime, I don't care how much overtime you need to put in to make this a good demo."

So motivating. But we made a good demo. Helped by the fact that MyGeneration is a great ORM layer, and ASP.NET has some pretty quick and easy HTML WYSISYG tools.

When I walked into the meeting this morning at first I was a little afraid. Would they see through us? Would anyone ask me explicitly how long I've been working on this project? How could I answer that question without violating my ethics? But then as we were implementing the "meet and greet" item on the agenda, one of the doctors asked if anyone knew how to share Visio files with people who didn't have Visio installed. I replied "Just export the Visio file as an image." He replied, "Export? Image?" The group was not so computer-savvy.

They loved the demo. It seemed like half of them didn't quite know what they were looking at (I had to explain what a portal was), but the other half were happy. They seemed less focused on understanding the demo and more focused on arguing with each other. I established lots of nerd cred by telling them some "aw shucks I'm such a nerd" stories from college, briefly describing the Amazon.com website architecture in words they wouldn't understand but would be impressed by, and making them feel smart for asking questions.

Overall, the meeting went really well. About half the time was spent getting consensus from them on what exactly they wanted. They had lots of ideas and anecdotes, but no clear plan. And now we have some sort of a plan. And somehow, I inadvertently convinced them to use us and not some other competing software company for one component of the project, a decision which more than justifies my salary for the year. Yay.

Were ethics violated? Turns out these folks are used to throwing money around and getting no results. They complained of giving more than 100K to the previously mentioned competing company, and getting nothing from them in return. And they've apparently been paying my company for years for nothing, so they were really happy to actually see something built. I'm sure it must be hard to try to build and run a software project knowing nothing about software, but still it strikes me as inefficient to throw money around so easily and not know how to get results from it.

I've also learned some things about doctors.

1. Doctors are like hashtables: they contain a vast amount of quickly accessible information, with no deterministic sorting or organizing scheme.

2. Doctors like to expound. It is useful to have bossy secretaries who cut them off and keep them on task.

3. Doctors like to argue with each other over minor, arbitrary points.

4. Doctors really really like drop-down boxes. Showing them drop-down boxes on a web form for data entry they had to repeatedly write out by hand makes them overjoyed. Who knew?

Sunday, January 6, 2008

A Christmas Message From Yoko Ono

I opened up the NYT this morning to find a full page ad with two words on it: IMAGINE PEACE, and a URL at the bottom. Turns out, this was Yoko Ono's Christmas message, and Yoko Ono knows about youtube. Also, apparently she helped build an Imagine Peace Tower in Iceland,
which was unfortunately not complete yet when I visited last year.

This is a funny coincidence because just this morning I was listening to Beatles Christmas Message records from '63-'69 on youtube. In '63 they are goodie-goodie cheeseballs, but they get progressively more experimental around '66, and in '69 John and Yoko have cut the others out of the process and went solo (and weird) on the Christmas Message.

The bees! (and distributed systems)

Bees inspire more efficient webserver design. The basic idea is that most servers are built for “normal” conditions, and generally don't behave well or recover properly when overwhelmed with traffic. In this article researchers developed a way for servers to communicate and spread demand across more workers, potentially discovering more workers along the way. They compare this communication to the bee waggle dance. Cute, but maybe not terribly efficient. You need to be careful with network bandwidth when allowing servers to communicate with each other. As I learned at Amazon, sending all intra-server communication to all possible listening servers maxes out your network bandwidth (in particular, your router tables) pretty quickly. Ask me about the multicast packet storms of '05 sometime.

Of course, you could simply use a load balancer to distribute your traffic evenly across many servers instead of letting the servers sort it out themselves. But this assumes you have divided the work to be done in your system into sets you can independently assign to separate server collections, and that within each server collection each server can be treated equally.

And if you're interested in distributed systems, you should read the split brain paper, by the goddess of distributed systems, Nancy Lynch.