Wednesday, September 28, 2005

I don't update. EVER. Some recipes.

Nummy Salmon: (serves about two)

1 peeled and seeded nectarine
2 peeled and seeded apples (we used cooking apples we found at the farmer's market, but I'm sure you can experiment with this)
many minced cloves of garlic (say...5)
about 1/4 cup cilantro
about a teaspoon cinammon
about a teaspoon cayenne pepper
about a teaspoon chile powder
black pepper, freshly ground
fresh sweet marjoram
fresh cardamom
1 serrano pepper, fresh

1. Steam fruit with the fresh herbs on top until the fruit is very tender (about 10-20 minutes).
2. While fruit is steaming, fire-roast the serrano pepper.
3. Remove herbs from fruit and in blender, blend fruit with all other ingredients.

about 1 pound salmon (or anything you'd like, I suppose)
1/4 red onion sliced
3 or 4 mushrooms sliced
1/3 zucchini sliced
1/2 teaspoon sesame seed oil (or any kind of oil)

4. Sauté mushrooms and zucchini in pan with fresh black pepper on top.
5. Pour half of the marinade in a bowl. Add veggies and salmon.
6. Massage the marinade into the meat...don't be shy!
7. Pour the rest of the marinade in the bowl.

We grilled all of this, but you could just as easily stick the dish into an oven and bake...I have no idea at what heat or for how long...salmon experts? Help me out?

I Love Frege Awesome Salad:
Spring Mix (which is spinach, red lettuce and arugula, I think)
sesame seed oil
sesame seeds
soy sauce
chili powder
cayenne pepper
red chili
1 block extra firm tofu cubed
as much garlic as your heart's content minced or pressed
freshly ground black pepper
2 tomatoes diced (heirlooms would be best, but if not hot house works too)
red wine vinegar (you can make some awesome stuff with red wine vinegar with rosemary and jalapeños in it)
1 avocado diced
fresh wasabi
a litttttle sugar

1.         in a bowl mix about 2 cups of this sauce:
soy sauce
sesame seed oil
black pepper

2.         fry the tofu in a pan with this sauce until the sauce is completely cooked into the tofu (ie no liquid remains). Add sesame seeds to pan so that cubes are coated nicely

3.        mix spring mix, tofu, vinegar, more black pepper, tomatoes, chili powder, chili, cayenne and avocado...yummmmm!

Thursday, September 22, 2005

Ruby: Language of the Programming Übermensch?

I spent a couple of hours this evening writing my first real Ruby code for the Lexical Semantics course I am taking this fall. It's excellent. The syntax is very appealing. Tokens are strangely verbose, replacing "{" and "}" of C descent with "def" or (insert block starting token here) and "end". For the first 30 seconds after encountering this on page 1, I wasn't sure how I felt about it. It seemed verbose. But now I see that "end" is much easier to type than "}", whose presence in Java forces me to reach and twist for basic program vocabulary. Maybe it would be different if I weren't on Dvorak, but words as delimiters rather than punctuation is a definite win. And while the tokens are fat—in a good way—they are also few. The syntax is remarkably terse, but not at the peril of clarity as I feel is the case with Perl. Ruby makes me understand the power of judicious syntactic support for common tasks. String interpolation is an obvious and immediately addictive feature. Built-in regular expression literals are also a plus. And there is an elegant interplay between these syntactic features on both a functional and visual level. As syntax is concerned, Scheme has represented a year-long exile in the wilderness. The bare minimalism of S-expressions was good for me. Scheme's uniform and parsimonious syntax let me focus on concepts that are fundamental to high-level programming: recursion, higher order procedures, and data abstraction. Scheme taught me by giving me only a handful of powerful tools and then training me to use them well. Now I think that Ruby can empower me by equipping that sharpened outlook with richer facilities for the completion of the common tasks. Its assumptions are friendly to my most cherished and hard-won programming intuition, but they also cater to the harsh realities of programming in an imperative world.

Paul Graham says that languages are evolving ever-closer to Lisp, and he asks, why not skip directly to it? And I think that I finally have an answer. Perhaps the ideal programming experience is purely functional, and the mainstream's gradual adoption of purely functional features reflects this truth. But there are other truths. Tim O'Reilly presents another point. He says that as new computing paradigms emerge, new languages seem to rise with them, suggesting that from a pragmatic standpoint, a language's "goodness" is sensitively dependent on the world in which it is used and with which it must interact. Every time I have programmed functionally for practical applications, I am always keenly aware of how imperative the world outside my program really is. The operating system doesn't behave functionally, and I/O operations certainly never could. There has to be a reason why these languages are so popular, beyond the simple fact that they are easier to learn for programmers whose first language was C. My conclusion is this. In the real world of computing, one finds explicit notions of state; one finds assignment. The computing hyperscape is not (yet, perhaps) very functional. State-oriented computational objects seem a natural complement to our false intuition of objects existing in the real world as well. Nietzsche would say that there are no objects, and, indeed, there aren't even any facts. There is only "will to power". Sounds remarkably similar to me trying to explain to C programmers that there is no data, and there isn't, in fact, any need for assignment. There is only Lambda. I think Nietzsche is right and I think Steele and Sussman were right, but that truth does not mean that the illusion of objects is an utterly worthless one. If we actually cognized the outside world as consisting only of "will to power" rather than tables and chairs and people, we'd never get anything done. And perhaps, similarly, when we pretend that everything is a Lambda, we face similar difficulties in interfacing this remarkably beautiful, completely true notion with an ability to do anything about it.

These ideas, are, I guess, nothing new. Haskell's monad system, from the cursory understanding I have of it, is a formalization of them, a clean interface between the rough and tumble outside universe and the sublime purity of Haskellspace. But if I'm not going to use an airlock, maybe a clever, elegant, and even artistic bridge between functional wisdom and imperative truth will suffice. For now, Ruby seems to be a pretty decent attempt. Lambda may be vulgarized into a quirky codeblock, but in a language in which shell commands are syntactically supported, at least it exists.

Wednesday, September 14, 2005

Really cool urban art.

Check out this blog: Wooster Collective

Short About Statement:
COLLECTIVE \Col*lect"ive\: done by or characteristic of individuals acting together; "a joint identity"; "the collective mind"; members of a cooperative enterprise
WOOSTER: a street in Soho, New York