Blogging About Poverty

Today is Blog Action Day, in which bloggers all over the world are invited to write about and perhaps even do something about poverty. I’m glad to oblige. You see, I’ve been poor. When I was growing up, my mother always managed to keep a roof over our heads and food on the table, but sometimes it seems just barely and only at great sacrifice. (Since I don’t say it often enough, thanks Mom!) Nonetheless, I do know from my first several years living on my own what it’s like to wonder about where my next meal is coming from, and to think seriously about what to do after my landlord threw me out – which never quite happened, but I came close enough that having a plan seemed prudent.

Nonetheless, what I experienced was only American poverty. I had the benefits of education, of not living in a place lacking basic sanitation and ravaged by illness or war, of being in an economy where the general number of people at least theoretically able to help was greater than the number needing help. People in poorer parts of the world don’t have even those advantages. When I think of poverty, it’s those people I think about and it usually doesn’t take long before I start to think about how literacy programs can help. Literacy doesn’t just help in the sense of enabling people to gain job-related skills. It helps them read warning labels and instruction manuals and directions (to the extent that such things exist but that’s another problem). It helps them understand more about the world, and perhaps have new ideas that can help them. It helps them exercise their imagination in ways that the already-fully-realized visions of TV and movies cannot, and in a way that cannot be taken from them. All of these benefits of literacy are at least as important as just enabling to become cogs in our global economic machine (even if that is still an improvement from their point of view).

Of the international literacy programs I’ve found, the one I’m going to recommend is FreeSchools. Just $15 a year can pay for not just educating a child for a year, but also free clothes and snacks that are often greatly needed in the area where the charity operates. If you donate there or to any other global-literacy project, let me know and I’ll match up to $100 (total) in donations. Give a really poor kid a chance.

Hat tip to Steve Todd for letting me know about this.

Amy Anecdotes

A few days ago, I saw Amy putting my watch around the “waist” of a small stuffed lamb toy (about Beanie Baby size). When I asked what she was doing, she said “watching the lamb”; she seemed rather proud of her little pun.

This evening she asked to play a game of Surreal Pursuit. I should invent it.

Waiting For The Worms

It’s a Pink Floyd song, which just happened to pop up near the end of my workout this morning. This part immediately reminded me of the most annoyingly repeated phrase in last night’s debate.

Would you like to see Britannia
Rule again, my friend?
All you have to do is follow the worms.
Would you like to send our colored cousins
Home again, my friend?

In the past, this same repetition of “my friend” has often been used by the very worst kind of demagogues in a “my friends and I are going to bash some heads and we might make a mistake if you don’t look friendly enough” kind of way. I’m not saying that McCain is trying to send a specifically racist message here but, given his penchant for bullying and his paid-up subscription to the “with us or against us” way of thinking, I don’t think he meant “my friend” as an appeal to somebody like me.

Wealth Redistribution

Because I happen to believe that the “free”market does not magically solve all problems without creating any of its own, I’m often accused of supporting redistribution of wealth. Well, fine. If I’m going to do the time, might as well do the crime. Let’s redistribute some wealth. Specifically, let’s redistribute the wealth that is the result of fraud. I have absolutely nothing against people who get wealthy by actually providing real value in the form of real goods and services – in fact I like to think I’m one of them – but I certainly do have something against those who get wealthy through lies and deceit. Fraud is what we call it when something of fictional value is exchanged for something of real value, and then the perpetrator of the fraud takes off for Monarch Beach while the person who just gave away the fruits of their real labor for nothing is left holding the bag. A poor man who steals a loaf of bread will have their ill-gotten gains confiscated and will probably end up in jail as well. Why should a rich man who steals a whole city’s worth of bread be treated any differently?

Forget about just capping CEO salaries in the future, which is as far as most people seem willing to go with this idea. Find the people who “earned” tens to hundreds of millions buying, selling, or making fees and commissions from the buying and selling of, this toxic mortgage debt and other financial fictions. Take back what they stole in the past. That will probably more than pay for the Wall Street bailout, and those people can then go begging to the deservedly rich for jobs or try their luck living among the undeservedly poor who are their victims. The old trickle-down “taking money from the rich will harm the economy” theory, even if it had any merit to begin with, does not apply because these particular rich are demonstrably not in the business of creating actual jobs and wealth but of stealing from those who do. To predict the next silly accusation that will come because of saying these things, no, I don’t envy them. To envy someone is to desire what they are or have, and applies far more to the people who habitually sling that accusation than it does to me. I despise those people who, having benefited from equal opportunity and protection of a healthy commons all their lives, who have climbed as high as they can under such a system, now want to lock in their gains and kick away the ladder. I don’t envy them, nor can I tolerate their blather about “liberty” defined as their absolute and perpetual right to keep what they have stolen or a “meritocracy” in which everyone has miraculously reached their proper and permanent station just yesterday. Screw all of them, whether they’ve pulled off their heist yet or merely hope to.

Big Bugs at Garden in the Woods

And now, as they say, for something completely different. On Saturday, which was a very nice early-fall day, we took Amy to the Big Bugs exhibit. Without further ado, here are the pictures.

IPFS: Imaginary Parallel FileSystem

I’ve been tempted a few times to sketch out what I think a modern parallel filesystem should look like, building on both my own experience and that of others who have worked in this space. While far from a complete description, here are some hints at the directions I’d take.

NUSA: Non Uniform Storage Access

Many of my technical readers are probably familiar with NUMA, which stands for Non Uniform Memory Access. To recap, it refers to a memory architecture in which memory exists in multiple places, such that there might be large performance differences between local and remote memory accesses even though the semantics of those accesses are identical – they’re issued the same way, physical addresses refer to the same physical locations regardless of origin, etc.

Another probably-familiar idea, from a different specialty, is that of parallel filesystems using isolated pieces of storage. As I explain the first and last sections of my history of MPFS page, this has become the dominant paradigm in parallel filesystems and is likely to remain so. This is roughly comparable to explicit remote access in the processor/memory world. Access to such storage is not the same as access to local or globally-shared storage, even if the isolation is only at the server level and the bits associated with multiple servers are really colocated on a big shared disk array. I think of this approach as NUSA, and it introduces some issues very reminiscent of those encountered with NUMA. What follows is a discussion of some of those issues.

Cloud Computing Definition

Cloud computing is where you can’t get your work done because a service you never heard of has failed somewhere half-way around the world. Yes, I know it’s a variant on an old joke, which was about a server instead of a service and it was down the hall instead of around the world, but there is definitely an “everything old is new again” aspect to a lot of the cloud-computing hype so we might as well recycle the jokes too.

P.S. If anyone can provide an authoritative source for the original, let me know and I’ll be glad to cite it. I know it’s not mine and I am in no way trying to take credit for it, but my Google-fu seems to be weak this morning.

P.S. Thanks to Paddy for identifying Leslie Lamport as the source of the original remark.

Efficiency, Scalability, and Performance

This morning in the shower and on the way to work, I was musing about the difference between component performance and system performance in computing, and particularly about the role that efficiency plays in the latter. It often seems that one can make a small piece of a system perform better by using resources profligately, but making the whole system perform better often requires the exact opposite. Let me give an example. In many situations, two processes or nodes that are communicating with one another can achieve maximum communications performance when the receiver spins waiting for an indication that a message has arrived. However, that completely wastes the processor on which the receiver is spinning, and often the spender spins too waiting for an acknowledgement. Some people think the answer is to have communicating processes synchronize so that they’re sending and receiving at the same time and don’t need to wait for long before they go back to computation. Blech. Synchronized waste is still waste. Besides that, such an approach is hard to implement even when everything from applications down to hardware is designed with that in mind, and it can hardly be considered general when a great many applications simply do not lend themselves to such synchronization at all. That approach is fundamentally flawed. In contrast to this micro-optimizers’ favorite fantasy, the systems-level answer is to make sending and receiving messages as resource-efficient as possible so that applications can get some useful work done without spinning at all. Asynchrony plays a big role here, because by now everyone knows that parallelism is essential to high performance and a parallel program that relies on frequent or tight synchronization isn’t really parallel while it’s synchronizing.

If you want an even more concrete example of this correspondence between resource efficiency and performance, look no further than the Green 500, which lists the most efficient of Top 500 fastest computers in the world according to efficiency instead of absolute performance. If you look at the latest list from June 2008, you can hardly help but notice that only two system types are represented in the top ten – the top three are all based on the PowerXCell 8i and QS22, while the next seven are all based on BlueGene/P (both IBM architectures). One of those top three is Roadrunner, which also happens to be the fastest computer on the planet. Performance and efficiency are not only compatible but complementary. In a particularly amusing example of synchronicity, after thinking about this on the drive in I found a reference to IBM’s Kittyhawk project in my mailbox. Clearly, IBM is continuing to apply the lesson that you can’t make it big unless you make it efficient.

Since many readers here know I work at SiCortex, which is also all about a combination of efficiency and performance, I’ll point out here that they had nothing to do with this article. In fact, the “consume resources to boost performance” idea I lambaste above is often the subject of debates that I have with my colleagues and some of them will undoubtedly take issue with what I say. What I will point out is that our latest systems would probably be less than 1% short of the top spot on the Green 500, putting them in fourth place; the reason they don’t appear on that list currently is that being in the Top 500 is a prerequisite (something colleague Matt Reilly has written about more eloquently than I could) and we haven’t built any systems that large. Our next-gen systems might change that and eclipse the current MFLOPS/W numbers as well, but of course the rest of the market – especially IBM who seem to be the only others who really Get It – won’t be standing still either so nobody knows what the list will look like in 2010 except that the numbers will be higher.