Archive for January, 2009

One of the worst kept secrets to the growth of the developing world is the massive financial aid pouring in the form of remittances. Huge diaspora populations in the developed world send money back to their countries of origin in the form of remittances - often a single worker supports a multi-generation family in their old homes.

In Africa, for example, remittances have outstripped Foreign Direct Investment in dollar count for half a decade. FDI in 2005 total $15 billion USD for the entire continent, whereas remittances totalled $17 billion. While these totals are over-shadowed by the $25 billion dollars in official development aid (which is mostly spent on humanitarian subsistence projects.

The millennium development goals and many other models for global development indicate that Africa must receive nearly double the inflows of cash to attain sustainability of the MDG outcomes; so every dollar counts.

The synchronized global recession puts these remittances under severe threat. The risk to labour jobs is stiff, and those jobs under the greatest threat are those disproportionately filled by immigrant workers. Moreover, the financial protectionism that is very trendy in political circles (particularly American) puts at threat the typical channels through which remittances are made.

Changes to the legal framework of financial structures could render such remittances illegal or infeasible, cutting off a huge source of funding for Latin America, Africa and SE Asia.

What was the fastest growing source of international finance for the developing world is under significant threat by the global recession - we must be very careful when recommending financial policy that could place these mechanisms under threat, we may have to pick up the tab down the road and it will have accrued interest.

Parallelism for the Uninitiated

Posted by Jeremy on January 27th, 2009

Unless you possess a degree in computer science or a related discipline or spend your free-time immersed in technical manuals like I do it is unlikely you’re aware of the epistemic crises facing software developers.

That is the issue of parallel processing, also known as concurrent processing. The basic theory of parallel processing allows for multiple operations to be performed simultaneously on different processors and the results to be combined and returned.

This is contrast to how processors have typically worked unto now, which is sequentially. A processor (such as the Central Processing Unit or CPU in your PC) performs operations in strict linearity - one step precedes another. Computers give the appearance of simultaneous activity by switching rapidly between each application’s processing tasks. Modern PCs can also offload certain types of processing by delegating it to specialized hardware - graphics processing goes to your graphics card, sound to your sound card etc.

Parallelism exists not because of some brilliant innovation in computing science, it exists because there hasn’t been a brilliant innovation. The amount of computing power available in a fixed amount of space, that is in a single chip, has a ceiling and we have essentially reached it.

You may have heard the marketing terms “multi-core” processor, such as Intel’s “Core 2 Duo” - these processing units add additional processors rather than making the one single processor faster.

The problem arrises because the way software is engineered prevents any sort of linear performance boost - for each processor you add you’ll experience a logarithmic decay in performance as each processor must coordinate its tasks with the other processors. Obviously this doesn’t happen, instead you simply get no performance enhancement despite the extra billion switches in your box.

Software isn’t engineered this way because there aren’t many commonly used languages that support parallel processing, moreover parallel processing isn’t merely a superficial change to phrasing  - it’s an entirely different architectural paradigm with which to architect software.

The holy-grail in computing research is to automate the process of parallel processing conversion from serially conceived software. Currently there is no such process that is commercially feasible.

C, C++, Java, PHP, COBOL, Ruby are all descended from the same serially premised roots. In the same way object-orientation revolutionized programming - pushing all but ANSI C to the procedural fringes, parallel processing will likely cause many languages to be abandoned.

What does this mean to consumers? Aside from the curiosity it presents, one can hope that it means very little. No hardware on the market is designed to truly take advantage of parallel processing even if though there are a few languages that support it. In the future it will likely mean an initial up-tick is shoddily made software as the current-generation of software programmers are forced to relearn their trade.

I suppose one could hold out hope for the 15 Ghz 100-Watt single-core processor, but I’d sooner wait on cold fusion or quantum-computing.

On the other hand - this does give another chance for small-businesses and obscure geniuses to break into a whole new market. The accumulated girth of the code currently available could be shed - the best applications would be ported over quickly and the rest deprecated, it could be seen as an industry-wide refresh. This means those otherwise intimidated by the dizzying array of platforms and tools (talk to anyone learning C++ or Java from scratch) might find it more enticing to get in on the ground floor.

While Parallel Programming models are being deployed in contemporary languages, these seem (to my illtrained eye) to be inappropriate bolt-ons to satisfy programmers enamored with a particular syntax.

Curiously, one of my favourite languages has supported parallel processing for more than a decade, Ada - the friend of anal-retentive high-integrity programmers the world over. Parallel processing is far from a new concept, it has its roots in the days of reel-to-reel tape media, room sized Cray machines and the computational hegemony of Lawrence-Livermore Labs.

Which language will be the next C? Will Haskell’s initial popularity carry it through? What about Castle’s impressive innovations? Sun certainly knows how to make a language. How about IBM’s X10? or good ole Cray’s Chapel?

Ultimately parallelism is the way to a new generation of ultra-fast computers. These machines will be not just folding proteins but simulating gene-expression, modelling the biosphere, monitoring the market, predicting the weather, encrypting data and of course….calculating really big prime numbers.

The Rotten Core of Social Science - Rationality

Posted by Jeremy on January 19th, 2009

This month’s Foreign Policy, among other things, features a back page contributed by editor-in-chief Moises Naim. He posits what should be a salient observation of our times - economics, as a discipline, has failed us miserably and is in dire need of an intellectual bailout.

Naim’s thesis rests on the fact that economics failed to predict and correct for the predicament that is the global financial disruption we’ve been coping with. Any model, for it to be successful most both explain and predict - most economists wouldn’t argue that economics is poor at predicting.

Examination, however, will reveal that it is also poor at explaining. What Naim is getting at, but perhaps can’t get to within the scope of his publication, is our conventional notions of rationality and sagacity are fundamentally erroneous. Any discipline that rests upon them is equally flawed. Economics isn’t unique in its use of instrumental rationality, it’s unique in the degree to which it relies on this ontological assumption.

I think it uncontroversial to suggest conventional notions of international relations, economics and much of decision theory has its roots in Hume. Adam Smith justified instrumental rationality - giving it a moral teleology through “enlightened self-interest.”

The unsettling problem about Hume and Smith, and von Neumann and others, is that their neat worlds of utils and maximization curves; the calculus with which they explain social (or at least economic) reality simply doesn’t exist. It simply cannot be a possible (or even normatively desirable) way of explaining how people act, even in ideal circumstances.

Smith and Hume have contrived formal systems - that is, they make the problem of choice computable in the formal sense of token manipulation. One simply seeks a maximum payoff given an algorithmic imperative (profit maximization, loss aversion, etc.)

I expect you to take me at my word that has proven, thus far, impossible to use formal systems to explain human behaviour - yet economists run on the assumption that one can. Not only do they run on the assumption that it’s possible, they believe they have contrived such a formal system.

So, most of the social sciences premise their theory on a particular definition of rationality. A definition, which if explored (even by a college undergrad) becomes untenable and worse than useless.

Pragmatic economists argue that while irrationality, that is deviation from the precepts of instrumental rationality, exists within the decisions of an individual, it is unsystematic. That means that in aggregate (such as in the market) irrationality is in effect random “noise” that doesn’t disrupt the models developed by economists.

One doesn’t need to be a social scientist to find this argument unconvincing - turn on the news and one can see that irrationality is more systematic than could be tolerated by the above explanation.

Kant saw this coming - he expressed profound dissatisfaction with utilitarian instrumental rationality because it would simply be a collection of theoretical imperatives. Daniel Dennet should find it equally troubling, because instrumental rationality would result in a total erosion of moral choice due to combinatorial explosion - a situation of even moderate complexity or novelty would paralyze even the most specifically principled agent.

Instrumental rationality not only doesn’t exist - it cannot possibly exist. If one were a rational agent in the instrumental sense, arising from a chair or drinking a glass of milk would be paralyzing events of decision, optimization and action.

Smith and others recognized this crippling problem of economics by simply isolating the system - factors outside the model were either deemed irrelevant or held constant. Where could anyone get it in their head that your family’s religion didn’t affect your economic framing? This is a procedural change - not some shift in quantitative utility, the very logic applied shifts - the kind, quantity and degree of bias one shows is affected.

How is it possible anyone could be regarded a competent expert in optimal decision-making while simultaneously stating baldly that psychological factors are irrelevant?

Naim was right to suggest that economics is in need of an intellectual bail-out. However, just like the financial melt-down caused the excision of poor performers and bad-actors, so too must economics (and adjunct disciplines) toss out bad ontology. It will be painful and violently disruptive to the discipline - but economics must box-in the traditional assumptions about rationality.

In light of Einstein, physicists had to revise much of their understanding. Newton wasn’t locked out but his inclusion was qualified. Newtonian physics (which uses the same syntactical tools as economics, that is calculus) is still used and taught - despite being heavily disrupted. Economics must perform a similar renovation.

Elsewise it will go the way of Ptolemaic astronomy or the aether theories of physics.