Thursday, August 23, 2007

Five Myths About Guantanamo Bay

Guantanamo - Five Years Later: It's Time for Justice
Five Myths About Guantanamo Bay

MYTH: The detainees at Guantanamo are the “worst of the worst."
Fact: Few of the men sent to Guantanamo are the high-ranking al Qaeda or Taliban members the US government alleges them to be. Hundreds were not even involved in the conflict, but rather sold to the US by bounty hunters or turned over by rival clan members trying to settle a vendetta, while high level al Qaeda operatives with the money to buy their freedom got away. According to Michael Scheuer, head of the CIA’s bin Laden unit from 1999 until 2004, no more than 10 percent of those brought to Guantanamo Bay were considered high-value detainees.

MYTH: All the Guantanamo detainees are combatants who fought against the United States.
FACT: Many of them were not picked up on or anywhere near the battlefield. Detainees were taken into custody from 14 different countries, including Gambia, Bosnia, and Thailand. About half were taken into custody in Pakistan – and, as noted above, the thousands of dollars offered by the US to bounty hunters encouraged false arrests. According to US military records, the US has not even accused the majority of them of fighting US or coalition forces.

MYTH: All the Guantanamo detainees will be prosecuted.
FACT: Of the nearly 400 men still being held at Guantanamo (another 300 have been repatriated or released), only 10 have been charged with a crime. None have been convicted. The Bush administration now claims that it plans to bring charges against a total of 70 detainees under the military commissions approved by Congress this fall. This still leaves more than 300 detainees at Guantanamo who have never – and will never – be prosecuted. They are simply being held indefinitely without charge or trial. Most of the detainees have filed habeas corpus petitions in federal courts asking that a judge review the legality of their detention. Pressured by President Bush, Congress enacted legislation that bars the courts from hearing their habeas claims – or any other claim regarding their treatment. Absent a new law out of the new Congress or a decision by the Supreme Court that the denial of habeas is unconstitutional, the detainees could spend the rest of their lives behind bars, without trial or any independent review of the legality of their detention.

MYTH: All of the Guantanamo detainees have had fair hearings where they could contest their detention.
Fact: None of the detainees has been given a fair or impartial hearing to determine whether his detention is justified. The Bush administration claims that the summary hearings that have taken place before three military officers are a sufficient substitute for independent judicial review. The officers conducting these hearings have relied on secret, classified evidence that was presumed to be genuine and accurate but was never shown to the detainee. This put detainees in the impossible situation of rebutting evidence that they had never even seen and subjecting them to decisions made on the basis of untested evidence. In many cases the detainee was never even told what specific activities he was accused of doing that would supposedly make him an “enemy combatant.” Detainees were not allowed lawyers and in most cases were not able to produce any witnesses or evidence apart from their own statements.

MYTH: All of the Guantanamo detainees have been treated humanely.
FACT: Pentagon superiors, including then-Secretary of Defense Donald Rumsfeld, provided Guantanamo interrogators broad authority to use interrogation techniques that ranged from cruel, inhuman and degrading treatment to outright torture. The practices included prolonged forced standing, extended sleep deprivation, painful stress positions, exposure to extreme heat and cold, and use of snarling dogs. One memo from an FBI officer who visited Guantanamo described detainees as being “chained hand and foot in a fetal position to the floor, with no chair, food or water ... Most times they had urinated or defecated on themselves, and had been left there for 18, 24 hours or more.“ The military has since repudiated the use of such abusive interrogation techniques in a newly issued Army Field Manual.

Friday, August 17, 2007

On .NET versus Java (Orcas, Eclipse and NetBeans)

First of all this is not about that kind of religious war.
Often the religious wars between .NET and Java get lost in unimportant details of language and runtime performance. The fact is that often good criteria such as software quality, productivity, maintainability, development support, community support, diversity of frameworks, ease of use, integration, etc are kind of left out. I tried to summarize my comparison in a chart (click on the image below to see it in its original size)

I tried to compare mostly Orcas beta 1 (.NET 3.5) with Eclipse and a bit of NetBeans 5.5.

Thursday, August 09, 2007

Problems with TFS and Orcas, WF & WCF hints

Yes, TFS is much worst than CVS. I can't add files to source control. This happens not only in Orcas (with the TFS client for Orcas), but with VS2005 as well.

When I was trying to close windows, I got an error:

Now, some WF tricks when using .NET 3.5.
1 - When trying to call a WCF service from WF, the channel factory will try to create a client on the fly. If you get an exception like "Could not find endpoint element with name 'WSDualHttpBinding_IBlahblahblah' and contract 'ServiceRef.Iblehblehbleh' in the ServiceModel client configuration section. This might be because no configuration file was found for your application, or because no endpoint element matching this name could be found in the client element.", you have two options:
- try a fully qualified name for the service contract (the interface), including namespace. If it doesn't work (like it didn't for me), it may be that you are editing the wrong .config file! Yes, try to edit the .config file of the HOSTING application, not the workflow project. Tricky!
2 - If you have a SendActivity that calls the WCF service, you'll have to define a
ChannelToken. First register the channel token:

public static DependencyProperty ChannelTokenProperty = DependencyProperty.Register("ChannelToken", typeof(System.Workflow.Activities.ChannelToken), typeof(MyWorkflowApplication.MyWorkflow));
- There's a wonderful bug that resets some of ChannelToken's properties, like name, setting them to null! Before the send activity, recreate a new instance of a ChannelToken and assign the proper values. If you don't, the name property of your ChannelToken will be null and you'll get an exception like
Message "Argument value cannot be null or empty string.\r\nParameter name: name"
at System.Workflow.Runtime.Hosting.ChannelManagerService.CreateChannelFactory(LogicalChannel logicalChannel)
at System.Workflow.Runtime.Hosting.ChannelManagerService.GetChannelFactory(LogicalChannel logicalChannel)

Wednesday, August 08, 2007

Problem with WF problem

I'm still trying to work with WF, but it's a complicated beast. I think WF and WCF will follow the path of CORBA! It didn't fly because it's difficult to use. I was trying to post to the WF MSDN forum. First I can't access the site with Internet Explorer 7. It doesn't respond. Trying to access its root URL gives an ASPX error:

Interestingly enough, it works well with Firefox:

However, the MSDN forum kicks me out when I try to post, even though I am logged in:

If you happen to know why the client proxy classes of WCF can't be serialized please let me know.

Tuesday, August 07, 2007

WF problems

I'm using Windows Workflow Foundation and WCF for some weeks now. More specifically I'm using .NET 3.5 and Orcas Beta March 2007 CTP. These things are kind of complex beasts. I don't know how adoption will go. Microsoft appeals to the visual developer who may not have a theoretical foundation to fully understand what the machine is doing.
My main frustration with Orcas and WCF is how the clients generated are different from the original service! The client generated in fact does not implement any of the interfaces I defined for it. How can I pass data and interact with the service if there's a fundamental type mismatch betwen client and service? In WF persistence, for instance, I mark my server class as serializeable. Guess what: the client is not serializeable and therefore the workflow can't be persisted!
Some day I'll compare the fundamental differences of frameworks and tools between .NET and Java here.