Monday, December 21, 2009

Hot fusion: Marco Polo, eat your heart out

I love reading 101 Cookbooks. Not necessarily because I want to make most of her recipes. I am a shameless omnivore who likes boeuf bourguignon better than quinoa, and likes bread best when it's a paean to the miracles yeast can work on pure white flour. No, it's her food photography I adore and aspire to. The lighting, the backgrounds, the skill... She can make even the crunchiest of flax and millet breads look delicious.

However, every so often she posts something that I just have to try. I stumbled across her recipe for Harissa Spaghettini, and it looked glorious. A blend of mediterranean flavors in a quick thrown together recipe, just in time for lunch. I'm a sucker for olives and lemon, what can I say.

But I had no harissa. I could order it from Amazon or Crate and Barrel. I could make my own from one of the myriad recipes around the internet and let it sit for a day so the flavors could blend. But I was hungry NOW. And I had no whole wheat spaghettini, which looked so lovely and hearty. I did, however, have soba. And red thai curry paste. So I embarked on a culinary journey worthy of Marco Polo, winding up with an Italian-Japanese-Thai fusion that looks great, and tastes better.

The journey:















I started with 1/2 T crushed garlic, 1 T tomato paste, 2 T thai red curry paste, 1 T olive oil, and a dash of salt. I blended it all together with 1-2 T water, to form a thick sauce. Taste for both salt and heat. I don't recommend this dish for the faint of heart, but at this stage, you can still cut it with more olive oil and garlic.









The resulting paste looks diabolical, but is delicious.









I toasted pine nuts, julienned some smoked sun-dried tomatoes, zested a lemon with a microplane, and threw in some spinach and kalamata olives.









One bundle of soba noodles, cooked...










Everything all together, prior to mixing. Next time I'll use the All-Clad pots instead, they photograph better.














Toss everything together until the sauce coats everything, and the spinach is wilted, and sprinkle with shredded parmesan. Behold!

And it was delicious.

Monday, April 27, 2009

Spam and schizophrenia: the hidden link.

I've been getting emails at school from some poor fellow who mined my address, along with about a hundred others, from some listing of UCSC students somewhere. As I understand the content, he's certain there's a conspiracy between the CIA, the Mormon church, and possibly Mossad and NOAA (I'm a little fuzzy on the latter two) to wipe out the east coast. Or black people. Or something. As an example of his writing style, I submit the following:

Is it better to protect faculty, staff, and students from spammers (some of whom will be CIA agent provocateurs in an attempt to discourage colleges/universities from posting email addresses), or, is it better to protect faculty, staff, and students and their communities from another attack on America (and more CIA mind-controlled suicide shooters on campus)?

CIA agent Matt Bakker and CIA agent Matt Bakerman (not their real undercover names) and some of the rest of the CIA agents here in Brooklyn (including some who live in Brooklyn Heights pretending to be Jehovah's Witnesses who also do not go along with the Mormon church's satanic hidden agenda), asked me to write this note to you to let you know that it is absolutely imperative that you authorize webmasters to include, at college websites, student email addresses, as well as, of course, all faculty and staff email addresses, so I can send emails to let them, informing them of some things some of the CIA agents in this area and in Brooklyn Heights who're pretending to be Jehovah's Witnesses, asked me to tell them.


However, crazy people on the internet isn't exactly news, or even interesting. I usually delete these out of hand. However, occasionally I take a peek, just out of morbid curiosity, before I bin it. How does this relate to NLP in anyway? Consider the following, out of a missive from last week:

Subject: http://XXXXXXX.blogspot.com/ - ACTION REQUIRED
Date: 4/22/2009 11:15:31 P.M. Eastern Daylight Time
From: no-reply@google.com
To: XXXXXXX@aol.com
Sent from the Internet (Details)

Hello,

Your blog at: http://XXXXXXX.blogspot.com/ has been identified as a potential spam blog. To correct this, please request a review by filling out the form at ...

Your blog will be deleted in 20 days if it isn't reviewed, and your readers will see a warning page during this time. After we receive your request, we'll review your blog and unlock it within two business days. Once we have reviewed and determined your blog is not spam, the blog will be unlocked and the message in your Blogger dashboard will no longer be displayed. If this blog doesn't belong to you, you don't have to do anything, and any other blogs you may have won't be affected.

We find spam by using an automated classifier. Automatic spam detection is inherently fuzzy, and occasionally a blog like yours is flagged incorrectly. We sincerely apologize for this error. By using this kind of system, however, we can dedicate more storage, bandwidth, and engineering resources to bloggers like you instead of to spammers. For more information, please see Blogger Help: ...

Thank you for your understanding and for your help with our spam-fighting efforts.

Sincerely,

The Blogger Team

P.S. Just one more reminder: Unless you request a review, your blog will be deleted in 20 days. Click this link to request the review: ...
(Email to me from Google Blogger.com, April 23, 2009)

Is spam permitted on Blogger?
What Are Spam Blogs?
As with many powerful tools, blogging services can be both used and abused. The ease of creating and updating webpages with Blogger has made it particularly prone to a form of behavior known as link spamming. Blogs engaged in this behavior are called spam blogs, and can be recognized by their irrelevant, repetitive, or nonsensical text, along with a large number of links, usually all pointing to a single site.
(Google, Blogger Help)


In other words, the classifier they're using looks for obsessive linking and incoherent text. Great for most of us, but not so good for your average schizophrenic trying to get the good word out about potential hazards to the purity of our bodily fluids. In general, generated text tends towards the same looseness of association that schizophrenics do (for a brilliant example, try the SCIgen program out of MIT. It's admittedly a random context free grammar, and they've handcrafted all the sentences, but even so, the output reads like the ramblings of a madman.)

Just another interesting variant of the Turing test. Can a computer generate text good enough to pose as an *insane* human? And, perhaps more practically, can we build spam filters that can distinguish computer generated greed from the merely mad?

Saturday, October 13, 2007

How I Spent My Summer

I decided to sign up for a undergraduate summer research project this last summer with Dr. H., my machine learning professor, who I felt like I had a pretty good rapport with. I'd been hoping to do research on something related to Natural Language Processing (NLP), which will be my graduate area of focus, but after some negotiation, Dr. H. and I settled on computer Go, specifically Monte Carlo techniques using Upper Confidence Bounds applied to Trees (UCT).

UCT is a refinement of the Monte Carlo techniques that have been around for years, and currently the best game in town when it comes to computer Go programs. The basic theory is pretty simple, but the details get ugly. In essence, the Monte Carlo theory goes as follows:

A move is chosen from a uniform random distribution of all available legal moves. From this board position, a large number of random playouts is done, playing both players until the game ends and a winner or loser can be evaluated. In theory, if the original move was a good move, then even if you play randomly from that point on, your odds of winning are better than if it had been a bad move. To evaluate those odds, you can randomly sample the game space below that position.

UCT builds on this basic theory by creating a tree which stores the current expected value of a given position in the game space, along with a measurement of confidence in that value. Then it explores those tree nodes which have the highest expected value at any given moment, ignoring nodes which don't seem to pay out well, or at least not visiting them often. It's a pruning technique which permits you to ignore large pieces of the game tree, which is valuable for games like Go, where the full game tree is astronomically large.

This is a general purpose AI technique for decision making that seems to work really well for a number of classes of problems. The papers that I was reading in relation to it reference the Multi-Armed Bandit problem, which is a classic explore/exploit tradeoff problem where you're trying to maximize your payout from a bank of slot machines with unknown pay-out distributions.

The implication of this for Go is subtle. It's obvious when you're dealing with slot machines that if you randomly sample them, the best machines will become clear over time, as your sample size gets larger. However, it's not as apparent for complex strategy games like Go that just randomly sampling moves will have the desired effect. (Or that having an opponent that plays randomly is a good evaluator of game position.) However, it does point up the importance of good position choice in Go. One good move really CAN improve your position for the rest of the game.