gist JS

Thursday, November 08, 2007

Global Warming 'Greatest Scam in History'

I had John Coleman's Global Warming 'Greatest Scam in History' forwarded to me today as a defense of climate change scepticism. Here's the heart of his argument:
I have read dozens of scientific papers. I have talked with numerous
scientists. I have studied. I have thought about it. I know I am
Yeah, it does seem tough to argue with this guy. I mean, you could say "he doesn't contradict anything, he just levels a broad claim of conspiracy and says 'he's sure!'", but then again, he does seem SO sure. And offended. Plus that's a LOT of papers to read (literally dozens!). Those things can be really long too.

I know the EPA, UN, World Meteoroligical Association, Nobel Comittee & Big Media, are all in cahoots anyway, but it does seem like it might be worth taking a look at some of their findings.

Wait, better, than above is the summary for policy makers (read: people reading this blog):

Be careful when you read this though, don't let their cold scientist-like objectivity cloud your vision. Remember to ask yourself the 4 questions that determine scientific validity:

  • "Are they 'offended' by reports to the contrary?"

  • "Are their opponents engaged in a 'conspiracy' against them?"

  • "Are non-believers 'wackos'?"

  • "Are they really, really convinced they're right?"

If these aren't true, it's probably not good science.

Using Maps of objects in Freemarker

Because sometimes helpful, well-written FAQ's that address precisely your problem are no substitute for an example, I present you with:

Using Maps of objects in Freemarker, the missing example for:

Why I can't use non-string key in the myMap[myKey] expression? And what to do now?

Here's our class and its HashMap and regular getter:

public class Application implements Serializable {
private <ProcessType, ProcessValue> process = new HashMap<ProcessType,ProcessValue>();

public Map<ProcessType, ProcessValue> getProcess() {
return process;

We can't use this getter because it's wrapped by the Freemarker BeanModel and only accepts Strings.

Here's the new getter that we'll add:

    public ProcessValue getTheProcess(ProcessType type) {
return getProcess().get(type);

And then in our Freemarker template, we call the new getter method.

<#list application.process?keys as processType>

OMG there's a new Neal Stephenson book.