<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-6919669035402552575</id><updated>2011-10-05T21:51:45.621-07:00</updated><category term='cooking'/><category term='gerboa'/><category term='steel-cut oats'/><category term='recipes'/><category term='gluten free'/><category term='food'/><category term='haskell'/><category term='seereason'/><title type='text'>RuMiNaTiOnS</title><subtitle type='html'>Recurring thoughts on food, functional programming (Haskell), diving and photography.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://cliffordbeshers.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6919669035402552575/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://cliffordbeshers.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Clifford Beshers</name><uri>http://www.blogger.com/profile/07441435909838565635</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://4.bp.blogspot.com/_IDeOPgpXAhM/SRmXgg3aveI/AAAAAAAAL4w/JABO0VHZGX4/S220/DSC_2138.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>28</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-6919669035402552575.post-977341163007317308</id><published>2011-10-01T12:40:00.000-07:00</published><updated>2011-10-01T12:45:14.493-07:00</updated><title type='text'>@ConalElliott re: What resources &amp; practices (teaching Haskell)</title><content type='html'>&lt;div style="background-color: transparent; "&gt;&lt;span id="internal-source-marker_0.3926584047731012" style="font-size: 11pt; font-family: Arial; background-color: transparent; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; "&gt;Conal Elliott asks: What resources &amp;amp; practices would you recommend for helping a group of Java &amp;amp; C++ programmers learn to work in Haskell?  I saw the question first on Twitter, but my compression skills were not up to the task of answering there.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 11pt; font-family: Arial; background-color: transparent; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; "&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 11pt; font-family: Arial; background-color: transparent; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; "&gt;I have two recommendations: &lt;/span&gt;&lt;span style="font-size: 11pt; font-family: Arial; background-color: transparent; font-weight: bold; font-style: italic; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; "&gt;teach them the simplest definitions of the fundamentals;&lt;/span&gt;&lt;span style="font-size: 11pt; font-family: Arial; background-color: transparent; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; "&gt; &lt;/span&gt;&lt;span style="font-size: 11pt; font-family: Arial; background-color: transparent; font-weight: bold; font-style: italic; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; "&gt;read programs with them, out loud, like children's books, skipping nothing.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 11pt; font-family: Arial; background-color: transparent; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; "&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 11pt; font-family: Arial; background-color: transparent; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; "&gt;These steps are often passed hurriedly, by teachers so steeped in a subject they don't realize how different their worlds are, by students eager to build things as quickly in a new programming language as they do in the old. Most likely, the students will assume that they just need to learn new syntax to be off and running. Indeed, I am sure they are capable, self-motivated software professionals and that they would succeed in learning Haskell, just without the deeper understanding that can make it such a joy.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 11pt; font-family: Arial; background-color: transparent; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; "&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 11pt; font-family: Arial; background-color: transparent; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; "&gt;As a test, ask your students to write down the definition of 'type'. I'll bet that their answers will be longer than 'set' and include some mention of bytes, words and big-endian.  We were all trained to be mechanics instead of drivers, because all we had were go-carts.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 11pt; font-family: Arial; background-color: transparent; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; "&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 11pt; font-family: Arial; background-color: transparent; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; "&gt;C and its children will have left clutter in their minds.  Types will be obstacles, efficiency a drug, correctness assured by machismo.  They will gloss over code without really reading it, trying to fit it into an existing model.  Saying things out loud helps slow things down, forces them to make connections between symbols, words and definitions so fundamental they are rarely written down. (I backtracked through Paul Hudak's book for hours trying to find out how to say '::'; newcomers ask pretty regularly in #haskell.)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 11pt; font-family: Arial; background-color: transparent; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; "&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 11pt; font-family: Arial; background-color: transparent; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; "&gt;Make sure they know all the places that patterns can appear in code and how they work.  Make sure they know that data constructors are functions.  Have them verify that with :type in GHCi. And that type constructors are functions, verifying with :kind. They should be familiar with the syntax and semantics of higher-order types before they meet IO, so that they understand it is not magic.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 11pt; font-family: Arial; background-color: transparent; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; "&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 11pt; font-family: Arial; background-color: transparent; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; "&gt;Lists, recursion, functional algorithms, none of these will be challenges, but constructs they have not seen before will give them much more trouble if they cannot deconstruct them to primitives.  I&lt;/span&gt;&lt;span style="background-color: transparent; text-decoration: none; vertical-align: baseline; "&gt; &lt;/span&gt;&lt;span style="font-size: 11pt; font-family: Arial; background-color: transparent; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; "&gt;cannot imagine Conal omitting such fundamental semantics from his lessons, but I can easily imagine both teacher and students, excited to build new stuff, skimping on the exercises necessary to flush out the old foundations and cement the new.&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6919669035402552575-977341163007317308?l=cliffordbeshers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cliffordbeshers.blogspot.com/feeds/977341163007317308/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6919669035402552575&amp;postID=977341163007317308' title='9 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6919669035402552575/posts/default/977341163007317308'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6919669035402552575/posts/default/977341163007317308'/><link rel='alternate' type='text/html' href='http://cliffordbeshers.blogspot.com/2011/10/conalelliott-re-what-resources.html' title='@ConalElliott re: What resources &amp; practices (teaching Haskell)'/><author><name>Clifford Beshers</name><uri>http://www.blogger.com/profile/07441435909838565635</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://4.bp.blogspot.com/_IDeOPgpXAhM/SRmXgg3aveI/AAAAAAAAL4w/JABO0VHZGX4/S220/DSC_2138.jpg'/></author><thr:total>9</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6919669035402552575.post-5451073269833805915</id><published>2011-09-11T01:44:00.000-07:00</published><updated>2011-09-11T01:45:42.802-07:00</updated><title type='text'>Two Degrees from 9/11</title><content type='html'>&lt;span class="Apple-style-span" style="font-family: 'Times New Roman'; font-size: medium; "&gt;&lt;div style="background-color: transparent; "&gt;&lt;span id="internal-source-marker_0.19402280915528536" style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; "&gt;On the morning of September 11, 2001, I didn’t board a bus to New York City, and in not doing so, buffered myself from a world of hurt.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; "&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; "&gt;I wasn’t clever or prescient, just lucky. I was at the bus stop, I’d seen the bus and flagged it down.  But just then, two women jogging by stopped and asked if I had heard what happened. I wanted to keep eye contact with the driver, but the anxiety in their voices made me turn and listen.  I glanced back to the driver as he slowed, saw him looking for confirmation, but I didn’t signal him again and he drove on.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; "&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; "&gt;I went back home, turned on the TV and soon saw the first tower fall.  Had those ladies not happened by, I might well have seen that tower fall from the bus instead.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; "&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; "&gt;One friend was not so lucky.  He was at jury duty that morning, just ten blocks away from the towers.  He saw both towers fall as he walked back to his office in SoHo, breathing the first fumes of the fires, crying uncontrollably at the insanity. Days later, he discovered that a good friend and colleague had been high up in a tower, unable to evacuate.  That same victim was actually the boss of another friend of mine, who then had to step up and fill that position.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; "&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; "&gt;Another friend was a SCUBA instructor who had trained dozens of NY firefighters to dive. Over a dozen of his students died in the collapse.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; "&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; "&gt;Earlier that year, I had attended the wedding of a diver I knew, held at Windows on the World, the restaurant at the top of the north tower.  He and his new bride were devastated that so many of the restaurant staff they had worked so closely with to plan the event were lost.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; "&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; "&gt;It seemed that everyone lost someone, except for me. My connections were always indirect, like some tragic form of the Kevin Bacon game where I was always degree two. I do not know how much that separation lessened the blow, but it was significant.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; "&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; "&gt;On Friday, I went to the NJ side of the Hudson River near the Lincoln Tunnel to see the damage for myself.  Though still several miles away, the plume of smoke was trivial to spot, and the lack of that distinctive skyline was like a splinter in my mind.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; "&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; "&gt;Still, I did not find myself overwhelmed by anger and grief, like those more closely linked.  I looked at New York City, not the way you look when you’ve grown up in a place, but with the eyes of a tourist.  The New York metropolitan area is huge. Standing on the palisades, I could see a dense urban landscape, seemingly extending to infinity in all directions.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; "&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; "&gt;Suddenly, all I could think of was how little physical damage the attacks had done.  Perspective has that effect.  The WTC towers were so huge, their presence swamped the mind, especially as one got closer.  Just standing at the base and looking up, it felt like they were arching over you instead of going straight up.  Their destruction was equally overwhelming. But from where I stood on the palisades, with two degrees of separation in my pocket, I could focus on the thousands of huge buildings, housing millions of people for miles around and see that they were all fine.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; "&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; "&gt;I’m not saying the impact wasn’t real, even for someone of degree two.  Business dried up and I took advantage of a job offer in San Diego, where I’ve been ever since.  All my friends mentioned above stayed and went through some hard times.  I sometimes wonder, if I had caught that bus, would I have been degree one, and what might have been different as a result.&lt;/span&gt;&lt;/div&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6919669035402552575-5451073269833805915?l=cliffordbeshers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cliffordbeshers.blogspot.com/feeds/5451073269833805915/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6919669035402552575&amp;postID=5451073269833805915' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6919669035402552575/posts/default/5451073269833805915'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6919669035402552575/posts/default/5451073269833805915'/><link rel='alternate' type='text/html' href='http://cliffordbeshers.blogspot.com/2011/09/two-degrees-from-911.html' title='Two Degrees from 9/11'/><author><name>Clifford Beshers</name><uri>http://www.blogger.com/profile/07441435909838565635</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://4.bp.blogspot.com/_IDeOPgpXAhM/SRmXgg3aveI/AAAAAAAAL4w/JABO0VHZGX4/S220/DSC_2138.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6919669035402552575.post-7132974857700892001</id><published>2008-12-28T11:40:00.000-08:00</published><updated>2008-12-28T18:22:46.273-08:00</updated><title type='text'>Fish in Monk's Clothing</title><content type='html'>"Merry Christmas! Could you come to the kitchen and help with the fish?"  It wasn't exactly unexpected, but it was still a nice little challenge, like Top Chef the home edition.  Unfamiliar kitchen, lots of competition for space, no specific instructions and the opportunity to make or break someone's Christmas dinner.  On such occasions, it's good to have a little bit of wisdom from Julia Child in your back pocket.&lt;br /&gt;&lt;br /&gt;My travel plans to Illinois had been delayed for two days by snow and ice, so I ended up flying on Christmas day, getting to my brother's house about an hour and a half before guests were showing up for dinner.  Everything on the menu was traditional in that household except for the fish, which my brother doesn't eat, so I got volunteered to cook that.&lt;br /&gt;&lt;br /&gt;Again, I did have some warning.  Several days before, my brother had mentioned on the phone that some guests had asked for fish instead of tenderloin, and that he had bought some frozen tilapia filets.  All he needed was a recipe.  I said that for simple white fish, I used to like the method that Julia Child had gotten from some monks in the south of France, an episode entitled ``Fish in Monk's Clothing,'' where the fish is baked covered in lots of  aromatic vegetables.  "Search on the internet, I'm sure you'll find a recipe," I said.&lt;br /&gt;&lt;br /&gt;Well, he had searched and had found four recipes for tilapia, but none were Julia's.  I didn't like the look of them and although I hadn't made this dish in years, I preferred to find my own way again.  Fortunately, the dish turned out well, but the down side was that I had no recipe to give to the people who asked for one, only a bunch of vague constraints.&lt;br /&gt;&lt;br /&gt;The essential thing is that the mix of vegetables should taste good, but be reasonably mild so as not to overpower the fish, and should still have a lot of moisture in it.  You need enough to cover the fish reasonably well.  The vegetables drip flavor into the fish while at the same time protecting it from losing moisture in the direct heat of the oven.&lt;br /&gt;&lt;br /&gt;(For the Haskell readers, think of the following as a sort of QuickCheck test suite for the actual method.)&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Chop and saute a bunch of aromatic vegetables, season with salt and pepper, thyme or other mild herbs, and reduce with some white wine.  The vegetables should be soft, but still very moist and it's good to have some liquid remaining.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;TASTE the vegetables.  If they don't taste good, fiddle with the seasoning until they do.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Season the filets with salt and pepper, then place on an oiled baking pan.  If the tails of the filets are much thinner than the main part of the body, overlap them so that the fish is roughly the same thickness all over.&lt;/li&gt;&lt;li&gt;Layer the vegetables over the fish along with any remaining liquid.&lt;/li&gt;&lt;li&gt;Bake gently until the fish is just opaque and flakes easily.  I think we did 350F for about 15 minutes, but this will vary with the amount and size.  You could also microwave it for 5-10 minutes, covered, if you use a glass or porcelain casserole dish.&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;As for which vegetables, that varies based on what I have on hand, but start by sweating an onion in olive oil and butter, then adding celery and a few chopped cloves of garlic.  It is fine to brown the onion a bit, but not the garlic.  This time we added some chopped mushrooms and parsley.  I have added carrots in the past, but that's about as strong as I would go.  Julia Child used a head of iceberg lettuce chopped up, but I've never had the nerve to try that.  Spinach or swiss chard make a nice choice, but kale, mustard greens and cabbage are too strong.  Fennel is a nice addition if you like anise flavor.&lt;br /&gt;&lt;br /&gt;Any simple white fish works here, such as flounder, sole, tilapia, catfish, etc. I think I've done it successfully with bluefish, but I would avoid salmon.&lt;br /&gt;&lt;br /&gt;How close this is to what Julia Child did, I really don't remember, because I only saw the show once long ago, but I'm pretty sure I've got the essence right.  It's a simple way to marry fish with whatever vegetables are available.  In any case,  it was good enough for Christmas dinner.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6919669035402552575-7132974857700892001?l=cliffordbeshers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cliffordbeshers.blogspot.com/feeds/7132974857700892001/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6919669035402552575&amp;postID=7132974857700892001' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6919669035402552575/posts/default/7132974857700892001'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6919669035402552575/posts/default/7132974857700892001'/><link rel='alternate' type='text/html' href='http://cliffordbeshers.blogspot.com/2008/12/fish-in-monks-clothing.html' title='Fish in Monk&apos;s Clothing'/><author><name>Clifford Beshers</name><uri>http://www.blogger.com/profile/07441435909838565635</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://4.bp.blogspot.com/_IDeOPgpXAhM/SRmXgg3aveI/AAAAAAAAL4w/JABO0VHZGX4/S220/DSC_2138.jpg'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6919669035402552575.post-3978963660491865112</id><published>2008-12-14T19:37:00.000-08:00</published><updated>2008-12-14T19:59:39.097-08:00</updated><title type='text'>The Pattern of Walking</title><content type='html'>&lt;a href="http://picasaweb.google.com/clifford.beshers/ThePatternOfWalking#slideshow"&gt;These images&lt;/a&gt; may look like Christmas lights, but they were created simply by holding a camera on long exposure while walking on the beach at dusk.  If you just wave the camera around, the patterns are uninteresting, because they have little cohesion, but just walking straight created unexpectedly interesting results.&lt;br /&gt;&lt;br /&gt;They remind me of high school physics, when we learned about cycloids by attaching a light to a bicycle tire.  The walking images are more regular than I expected, but also far more convoluted than a cycloid.  Just as the hidden motion of the tire was revealed in that experiment, these images must show something fundamental about walking.  I'm just not sure what.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6919669035402552575-3978963660491865112?l=cliffordbeshers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cliffordbeshers.blogspot.com/feeds/3978963660491865112/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6919669035402552575&amp;postID=3978963660491865112' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6919669035402552575/posts/default/3978963660491865112'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6919669035402552575/posts/default/3978963660491865112'/><link rel='alternate' type='text/html' href='http://cliffordbeshers.blogspot.com/2008/12/pattern-of-walking.html' title='The Pattern of Walking'/><author><name>Clifford Beshers</name><uri>http://www.blogger.com/profile/07441435909838565635</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://4.bp.blogspot.com/_IDeOPgpXAhM/SRmXgg3aveI/AAAAAAAAL4w/JABO0VHZGX4/S220/DSC_2138.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6919669035402552575.post-764304665538802648</id><published>2008-11-17T22:59:00.000-08:00</published><updated>2008-11-17T23:00:57.713-08:00</updated><title type='text'>Never turn your back on the ocean</title><content type='html'>That's a good rule in SCUBA diving and it's a &lt;a href="http://picasaweb.google.com/clifford.beshers/JonahAndTheWave#slideshow"&gt;good idea on the beach&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6919669035402552575-764304665538802648?l=cliffordbeshers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cliffordbeshers.blogspot.com/feeds/764304665538802648/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6919669035402552575&amp;postID=764304665538802648' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6919669035402552575/posts/default/764304665538802648'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6919669035402552575/posts/default/764304665538802648'/><link rel='alternate' type='text/html' href='http://cliffordbeshers.blogspot.com/2008/11/never-turn-your-back-on-ocean.html' title='Never turn your back on the ocean'/><author><name>Clifford Beshers</name><uri>http://www.blogger.com/profile/07441435909838565635</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://4.bp.blogspot.com/_IDeOPgpXAhM/SRmXgg3aveI/AAAAAAAAL4w/JABO0VHZGX4/S220/DSC_2138.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6919669035402552575.post-6315307153932136301</id><published>2008-11-10T23:18:00.000-08:00</published><updated>2008-11-10T23:47:40.789-08:00</updated><title type='text'>Functional Programming and the Universe</title><content type='html'>In Lee Smolin's TED talk &lt;a href="http://www.ted.com/index.php/talks/lee_smolin_on_science_and_democracy.html"&gt;&lt;span&gt;How science is like democracy&lt;/span&gt;&lt;/a&gt;, he describes how our understanding of space and time has evolved.  He describes three stages of cosmology:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Aristotelian, which is hierarchical and all properties are defined with respect to that hierarchy;&lt;/li&gt;&lt;li&gt;Newtonian, where properties are all defined with respect to an eternal absolute background of space and time;&lt;/li&gt;&lt;li&gt;Quantum Theory or Relational Universe, where the universe is nothing but an ever evolving network of relationships, and all properties are about relations between subsystems.&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;Two quotes from the talk that jumped out at me:&lt;br /&gt;&lt;blockquote&gt;&lt;/blockquote&gt;&lt;blockquote&gt;According to Newton, space is just the way that god knows where everything is.&lt;/blockquote&gt;And this one, regarding the modern relational model of the universe:&lt;br /&gt;&lt;blockquote&gt;Space is just one aspect, so there's no meaning to say absolutely where something is, there's only where it is relative to everything else that is, so we call it a relational universe.&lt;/blockquote&gt;In other words, even the physicists don't use an object-oriented model to describe objects any more.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6919669035402552575-6315307153932136301?l=cliffordbeshers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cliffordbeshers.blogspot.com/feeds/6315307153932136301/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6919669035402552575&amp;postID=6315307153932136301' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6919669035402552575/posts/default/6315307153932136301'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6919669035402552575/posts/default/6315307153932136301'/><link rel='alternate' type='text/html' href='http://cliffordbeshers.blogspot.com/2008/11/functional-programming-and-universe.html' title='Functional Programming and the Universe'/><author><name>Clifford Beshers</name><uri>http://www.blogger.com/profile/07441435909838565635</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://4.bp.blogspot.com/_IDeOPgpXAhM/SRmXgg3aveI/AAAAAAAAL4w/JABO0VHZGX4/S220/DSC_2138.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6919669035402552575.post-7918805111527481126</id><published>2008-10-31T08:41:00.000-07:00</published><updated>2008-10-31T09:01:56.992-07:00</updated><title type='text'>Halloween Slideshow</title><content type='html'>As a public service, I've made a &lt;a href="http://picasaweb.google.com/clifford.beshers/Halloween#"&gt;Halloween slideshow&lt;/a&gt; out of photos I've taken over the last year.  Comprising over a hundred scary, ghoulish and horrifying images, you can set it playing on a spare monitor and be frightened all day long.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6919669035402552575-7918805111527481126?l=cliffordbeshers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cliffordbeshers.blogspot.com/feeds/7918805111527481126/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6919669035402552575&amp;postID=7918805111527481126' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6919669035402552575/posts/default/7918805111527481126'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6919669035402552575/posts/default/7918805111527481126'/><link rel='alternate' type='text/html' href='http://cliffordbeshers.blogspot.com/2008/10/halloween-slideshow.html' title='Halloween Slideshow'/><author><name>Clifford Beshers</name><uri>http://www.blogger.com/profile/07441435909838565635</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://4.bp.blogspot.com/_IDeOPgpXAhM/SRmXgg3aveI/AAAAAAAAL4w/JABO0VHZGX4/S220/DSC_2138.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6919669035402552575.post-766398249557507571</id><published>2008-10-14T22:36:00.000-07:00</published><updated>2008-10-15T00:04:51.349-07:00</updated><title type='text'>Pie Night</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_IDeOPgpXAhM/SPWVblrY1VI/AAAAAAAAKwI/HSAhqEszFrI/s1600-h/Pumpkins_320.jpg"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer;" src="http://2.bp.blogspot.com/_IDeOPgpXAhM/SPWVblrY1VI/AAAAAAAAKwI/HSAhqEszFrI/s200/Pumpkins_320.jpg" alt="" id="BLOGGER_PHOTO_ID_5257272441228023122" border="0" /&gt;&lt;/a&gt;My friends Michael and Susan have a wonderful tradition that grew out of growing too many pumpkins.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_IDeOPgpXAhM/SPWTUmBiXDI/AAAAAAAAKv4/g55cl1F8XDE/s1600-h/PieNight_320.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://4.bp.blogspot.com/_IDeOPgpXAhM/SPWTUmBiXDI/AAAAAAAAKv4/g55cl1F8XDE/s200/PieNight_320.jpg" alt="" id="BLOGGER_PHOTO_ID_5257270122038582322" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;                     Pie night.&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_IDeOPgpXAhM/SPWV2lG7GsI/AAAAAAAAKwQ/ABFhcXvMORI/s1600-h/PieNightGap_320.jpg"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer;" src="http://1.bp.blogspot.com/_IDeOPgpXAhM/SPWV2lG7GsI/AAAAAAAAKwQ/ABFhcXvMORI/s200/PieNightGap_320.jpg" alt="" id="BLOGGER_PHOTO_ID_5257272904931547842" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;They make 10-15 pies, everybody brings a pie, everybody eats pie until they can't eat no more.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;And then we have pie for breakfast.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6919669035402552575-766398249557507571?l=cliffordbeshers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cliffordbeshers.blogspot.com/feeds/766398249557507571/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6919669035402552575&amp;postID=766398249557507571' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6919669035402552575/posts/default/766398249557507571'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6919669035402552575/posts/default/766398249557507571'/><link rel='alternate' type='text/html' href='http://cliffordbeshers.blogspot.com/2008/10/pie-night.html' title='Pie Night'/><author><name>Clifford Beshers</name><uri>http://www.blogger.com/profile/07441435909838565635</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://4.bp.blogspot.com/_IDeOPgpXAhM/SRmXgg3aveI/AAAAAAAAL4w/JABO0VHZGX4/S220/DSC_2138.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_IDeOPgpXAhM/SPWVblrY1VI/AAAAAAAAKwI/HSAhqEszFrI/s72-c/Pumpkins_320.jpg' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6919669035402552575.post-7162901999755774991</id><published>2008-08-04T21:23:00.000-07:00</published><updated>2008-08-04T22:58:40.964-07:00</updated><title type='text'>Two-dimensional zip</title><content type='html'>I've been doing battle with things like CSS recently (the W3C will be first against the wall when the revolution comes,) so it was a pleasure to run into a little Haskell puzzle and an elegant solution.&lt;br /&gt;&lt;br /&gt;I was working with a matrix represented with a list of lists: [[a]]. I wanted to add the row and column indices to each element, giving: [[((Integer,Integer),a)]].&lt;br /&gt;&lt;br /&gt;This isn't a pattern I remember seeing before, but it seemed simple enough, so I just hacked away. Here's my first try:&lt;br /&gt;&lt;br /&gt;&gt; index grid = zipWith indexrow [0..] grid&lt;br /&gt;&gt;  &amp;nbsp; &amp;nbsp; where indexrow rn rs = zipWith (\cn r -&gt; ((rn,cn),r)) [0..] rs&lt;br /&gt;&lt;br /&gt;Serviceable, but neither pretty nor general.  The one dimensional case is so elegant; for any list, you can add indices with:&lt;br /&gt;&lt;br /&gt;&gt; index1d xs = zip [0..] xs&lt;br /&gt;&lt;br /&gt;The zip function is simple and the infinite list of indices covers all cases.  So it occurred to me I was looking for two things: a two-dimensional version of zip; and a grid of index tuples, semi-infinite in both directions.&lt;br /&gt;&lt;br /&gt;Both turned out to be simple enough.  Here's the grid of tuples using list comprehensions:&lt;br /&gt;&lt;br /&gt;&gt; indices2d = [[(r,c) | c &lt;- [0..]] | r &lt;- [0..]]&lt;br /&gt;&lt;br /&gt;And the two-dimensional zip:&lt;br /&gt;&lt;br /&gt;&gt; zip2d = zipWith zip&lt;br /&gt;&lt;br /&gt;And it's easy to reproduce the "With" version:&lt;br /&gt;&lt;br /&gt;&gt; zip2dWith f =  zipWith (zipWith f)&lt;br /&gt;&lt;br /&gt;So now my function looks like this:&lt;br /&gt;&lt;br /&gt;&gt; index2d grid = zip2d indices2d grid&lt;br /&gt;&lt;br /&gt;or just:&lt;br /&gt;&lt;br /&gt;&gt; index2d' = zip2d indices2d&lt;br /&gt;&lt;br /&gt;This version is clearer, simpler and easily generalizable to higher dimensions.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6919669035402552575-7162901999755774991?l=cliffordbeshers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cliffordbeshers.blogspot.com/feeds/7162901999755774991/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6919669035402552575&amp;postID=7162901999755774991' title='13 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6919669035402552575/posts/default/7162901999755774991'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6919669035402552575/posts/default/7162901999755774991'/><link rel='alternate' type='text/html' href='http://cliffordbeshers.blogspot.com/2008/08/two-dimensional-zip.html' title='Two-dimensional zip'/><author><name>Clifford Beshers</name><uri>http://www.blogger.com/profile/07441435909838565635</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://4.bp.blogspot.com/_IDeOPgpXAhM/SRmXgg3aveI/AAAAAAAAL4w/JABO0VHZGX4/S220/DSC_2138.jpg'/></author><thr:total>13</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6919669035402552575.post-2087858585461657241</id><published>2008-05-29T20:45:00.000-07:00</published><updated>2008-05-29T22:04:35.096-07:00</updated><title type='text'>Eschewing flip</title><content type='html'>I realized recently that I've developed a small dislike of the Haskell function &lt;span style="font-style: italic;"&gt;flip&lt;/span&gt;, which reverses the order of arguments of a binary function:&lt;br /&gt;&lt;blockquote&gt;mod 3 5  ==&gt; 3&lt;br /&gt;flip mod 3 5  ==&gt; 2&lt;br /&gt;&lt;/blockquote&gt; &lt;span style="font-style: italic;"&gt;flip&lt;/span&gt; is generally used in place of a lambda expression, when constructing a specialized function:&lt;br /&gt;&lt;blockquote&gt;map (\x -&gt; mod x 17) [1..]  -- with lambda&lt;br /&gt;map (flip mod 17) [1..]  -- with flip&lt;br /&gt;&lt;/blockquote&gt;Unfortunately, my brain really doesn't like that reversal.  When reading any non-trivial expression using &lt;span style="font-style: italic;"&gt;flip&lt;/span&gt;, I have to stop and think about which argument is now where.&lt;br /&gt;&lt;br /&gt;I've found that I prefer sections.  You need to have one of the arguments handy, but I find that's often the case:&lt;br /&gt;&lt;blockquote&gt;map (`mod` 17) [1..] -- with section&lt;br /&gt;&lt;/blockquote&gt;I like this form better because it preserves the visual ordering of the arguments, which seems to be deeply seated in my reasoning process.  Because of Haskell's flexibility with switching between prefix and infix application, it's easy for me to adopt a style to suit this preference.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6919669035402552575-2087858585461657241?l=cliffordbeshers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cliffordbeshers.blogspot.com/feeds/2087858585461657241/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6919669035402552575&amp;postID=2087858585461657241' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6919669035402552575/posts/default/2087858585461657241'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6919669035402552575/posts/default/2087858585461657241'/><link rel='alternate' type='text/html' href='http://cliffordbeshers.blogspot.com/2008/05/eschewing-flip.html' title='Eschewing flip'/><author><name>Clifford Beshers</name><uri>http://www.blogger.com/profile/07441435909838565635</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://4.bp.blogspot.com/_IDeOPgpXAhM/SRmXgg3aveI/AAAAAAAAL4w/JABO0VHZGX4/S220/DSC_2138.jpg'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6919669035402552575.post-5490729067030186540</id><published>2008-05-13T15:06:00.001-07:00</published><updated>2008-05-13T15:14:02.641-07:00</updated><title type='text'>Paul McCartney was in a band before Wings?</title><content type='html'>Jeremy Shaw observed today that "Haskell is moving up in the world."  His evidence was that a Google search for "haddock" now puts the Haskell documentation tool third on the list.&lt;br /&gt;&lt;br /&gt;I guess we'll know that Haskell is a complete and total success when we overhear some kid in a supermarket asking, "Haddock is a fish?"&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6919669035402552575-5490729067030186540?l=cliffordbeshers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cliffordbeshers.blogspot.com/feeds/5490729067030186540/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6919669035402552575&amp;postID=5490729067030186540' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6919669035402552575/posts/default/5490729067030186540'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6919669035402552575/posts/default/5490729067030186540'/><link rel='alternate' type='text/html' href='http://cliffordbeshers.blogspot.com/2008/05/paul-mccartney-was-in-band-before-wings.html' title='Paul McCartney was in a band before Wings?'/><author><name>Clifford Beshers</name><uri>http://www.blogger.com/profile/07441435909838565635</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://4.bp.blogspot.com/_IDeOPgpXAhM/SRmXgg3aveI/AAAAAAAAL4w/JABO0VHZGX4/S220/DSC_2138.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6919669035402552575.post-3216344628709620191</id><published>2008-02-13T20:38:00.000-08:00</published><updated>2008-02-13T22:36:07.230-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='haskell'/><title type='text'>Rewinding the Mind</title><content type='html'>Jeremy Shaw sent me &lt;a href="http://ohgizmo.com/2006/10/01/dvd-rewinder/"&gt;this bit about a DVD rewinder&lt;/a&gt;. Very humorous, of course, but there's also a nice little moral about programming in there.&lt;br /&gt;&lt;br /&gt;When I was at Linspire, we often got questions from people looking to switch to Linux for the first time:  How do I defrag my disk?  Where do I buy anti-virus software?&lt;br /&gt;&lt;br /&gt;We would explain that Linux filesystems didn't need defragmenting and that the virus problem was virtually non-existent. But sometimes, there was just no reassuring them.  IT people sometimes said they simply had to have virus protection software, bought and paid for, because the company had made it mandatory for all computers.  We felt a little silly, but we licensed one, shipped it and then they switched.&lt;br /&gt;&lt;br /&gt;I wonder how many people learning a functional language wondered how to allocate and deallocate memory like they did in C?  Whether the answer is obvious or not depends on one's understanding of the semantics of the language.  If you have a model of C semantics in your head and you're looking at Haskell code, you're predictions about what's going to happen are bound to be wrong.&lt;br /&gt;&lt;br /&gt;All these are examples of essentially the same problem.  If we can't see (or otherwise sense) how a technology works, then a change in the underlying mechanism will leave us confused because our mental models are out of date.&lt;br /&gt;&lt;br /&gt;I tend to prefer designs that show a technology at work, such as record players as opposed to most CD or DVD players.  Unfortunately, miniaturization and digitalization only make the problem worse.  I suppose that's why Hollywood always has been at the forefront of computer graphics, because the audience has no idea what's going on without all the flashing lights.&lt;br /&gt;&lt;br /&gt;I will pursue these ideas further in some upcoming posts about functional programming and user interface design.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6919669035402552575-3216344628709620191?l=cliffordbeshers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cliffordbeshers.blogspot.com/feeds/3216344628709620191/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6919669035402552575&amp;postID=3216344628709620191' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6919669035402552575/posts/default/3216344628709620191'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6919669035402552575/posts/default/3216344628709620191'/><link rel='alternate' type='text/html' href='http://cliffordbeshers.blogspot.com/2008/02/rewinding-mind.html' title='Rewinding the Mind'/><author><name>Clifford Beshers</name><uri>http://www.blogger.com/profile/07441435909838565635</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://4.bp.blogspot.com/_IDeOPgpXAhM/SRmXgg3aveI/AAAAAAAAL4w/JABO0VHZGX4/S220/DSC_2138.jpg'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6919669035402552575.post-5441892086499398544</id><published>2008-01-31T10:35:00.000-08:00</published><updated>2008-01-31T10:51:41.285-08:00</updated><title type='text'>The Programming Grapevine</title><content type='html'>&lt;span style="font-size:100%;"&gt;&lt;span style="font-family:Courier New;"&gt;Two non-Haskell programmers from Linspire went indoor rock climbing last night. One was wearing a Firefox t-shirt and someone next to him asked if he worked for Mozilla. He explained that he actually worked at Linspire, to which the guy said, "Oh, you guys use Haskell there, don't you?"&lt;br /&gt;&lt;br /&gt;It's nice to know that the word has gotten around.&lt;br /&gt;&lt;br /&gt;Well, David Fox and I left last summer and Jeremy Shaw has one foot out the door, so the Haskell presence at Linspire is just about over, but we continue to use and maintain many of the tools and libraries we built there.  David and Jeremy have been cleaning up the version number policy in the Debian package builder (called the autobuilder) so that we can build Debian repositories of Haskell software.  There is still some work to do, but you can look at our &lt;a href="http://src.seereason.com/"&gt;darcs repositories&lt;/a&gt; to see if there is anything that might interest you.&lt;br /&gt;&lt;br /&gt;To see what we're up to now, see Section 7.1.6 of the &lt;a href="http://www.haskell.org/communities/12-2007/html/report.html"&gt;Haskell Communities and Activities Report.&lt;/a&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6919669035402552575-5441892086499398544?l=cliffordbeshers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cliffordbeshers.blogspot.com/feeds/5441892086499398544/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6919669035402552575&amp;postID=5441892086499398544' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6919669035402552575/posts/default/5441892086499398544'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6919669035402552575/posts/default/5441892086499398544'/><link rel='alternate' type='text/html' href='http://cliffordbeshers.blogspot.com/2008/01/programming-grapevine.html' title='The Programming Grapevine'/><author><name>Clifford Beshers</name><uri>http://www.blogger.com/profile/07441435909838565635</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://4.bp.blogspot.com/_IDeOPgpXAhM/SRmXgg3aveI/AAAAAAAAL4w/JABO0VHZGX4/S220/DSC_2138.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6919669035402552575.post-3736483222470158184</id><published>2008-01-14T21:33:00.000-08:00</published><updated>2008-01-14T21:47:53.591-08:00</updated><title type='text'>Even a blind chicken finds a kernel of corn every once in a while.</title><content type='html'>Translated, that means, if you take enough walks at sunset and snap enough photos, eventually you will get lucky.  I took this photo this evening at Windansea beach in La Jolla:&lt;br /&gt;&lt;br /&gt;&lt;div id="so57" style="padding: 1em 0pt;"&gt;&lt;img style="width: 800px; height: 569px;" src="http://docs.google.com/File?id=dcqvq83w_19f2k486gs" /&gt;&lt;/div&gt;&lt;br /&gt;No, it's not just a nice sunset.  I mean &lt;i&gt;really&lt;/i&gt; lucky.  Look at this closeup of the left center of the image:&lt;br /&gt;&lt;div id="m9:r" style="padding: 1em 0pt;"&gt;&lt;br /&gt;&lt;img style="width: 800px; height: 523px;" src="http://docs.google.com/File?id=dcqvq83w_209xp4rxf8" /&gt;&lt;/div&gt;&lt;br /&gt;That dolphin jumped only once that I saw.  I just happened to press the shutter at the right time.&lt;br /&gt;&lt;br /&gt;If only I'd been using a real lens. The little 4X zoom lens on my Canon A630 is really at the edge of its range here.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6919669035402552575-3736483222470158184?l=cliffordbeshers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cliffordbeshers.blogspot.com/feeds/3736483222470158184/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6919669035402552575&amp;postID=3736483222470158184' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6919669035402552575/posts/default/3736483222470158184'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6919669035402552575/posts/default/3736483222470158184'/><link rel='alternate' type='text/html' href='http://cliffordbeshers.blogspot.com/2008/01/even-blind-chicken-finds-kernel-of-corn.html' title='Even a blind chicken finds a kernel of corn every once in a while.'/><author><name>Clifford Beshers</name><uri>http://www.blogger.com/profile/07441435909838565635</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://4.bp.blogspot.com/_IDeOPgpXAhM/SRmXgg3aveI/AAAAAAAAL4w/JABO0VHZGX4/S220/DSC_2138.jpg'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6919669035402552575.post-8144778631014007009</id><published>2008-01-14T12:40:00.000-08:00</published><updated>2008-02-13T22:36:31.779-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='haskell'/><title type='text'>Mebbe</title><content type='html'>My friend David has always had a knack for brevity and wit, the most recent example being this snippet of Haskell:&lt;br /&gt;&lt;span style="font-size:100%;"&gt;&lt;blockquote&gt;mebbe x = maybe x id&lt;/blockquote&gt;Not as clear as &lt;span style="font-style: italic;"&gt;fromMaybe&lt;/span&gt;, perhaps, but much funnier.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6919669035402552575-8144778631014007009?l=cliffordbeshers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cliffordbeshers.blogspot.com/feeds/8144778631014007009/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6919669035402552575&amp;postID=8144778631014007009' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6919669035402552575/posts/default/8144778631014007009'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6919669035402552575/posts/default/8144778631014007009'/><link rel='alternate' type='text/html' href='http://cliffordbeshers.blogspot.com/2008/01/mebbe.html' title='Mebbe'/><author><name>Clifford Beshers</name><uri>http://www.blogger.com/profile/07441435909838565635</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://4.bp.blogspot.com/_IDeOPgpXAhM/SRmXgg3aveI/AAAAAAAAL4w/JABO0VHZGX4/S220/DSC_2138.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6919669035402552575.post-248800433279393104</id><published>2008-01-06T12:55:00.000-08:00</published><updated>2008-01-14T21:43:34.473-08:00</updated><title type='text'></title><content type='html'>I visited New York City at Christmas time, attending the Christmas Eve service at &lt;a title="All Souls Unitarian Church" href="http://allsoulsnyc.org/" id="zdwd"&gt;All Souls Unitarian Church&lt;/a&gt;, which I attended regularly growing up.  I don't attend any church regularly, but if I did, this would be the one, as the ministry and congregation have a very open, rational, and gentle approach to religion.  Even so, my mind generally wanders during the prayers because I find them a bit bland.  My ears perked up this time, though, when Forrest Church said: "&lt;i&gt;Want what you have; Do what you can; Be who you are.&lt;/i&gt;" That's a nice thought for someone who gets distracted easily by new projects.&lt;br&gt;&lt;br&gt;He expanded on that idea later in the prayer:&lt;br&gt;&lt;blockquote&gt;&lt;p class="western"&gt;   And let us do what we can,&lt;/p&gt;&lt;p class="western"&gt;Not climb every mountain,&lt;/p&gt;&lt;p class="western"&gt;But, dismissing pipe dreams,&lt;/p&gt;&lt;p class="western"&gt;Climb one splendid mountain,&lt;/p&gt;&lt;p class="western"&gt;Doing—not less than, not more than—but precisely what we can,&lt;/p&gt;&lt;p class="western"&gt;That our life may be filled with attainable meaning. &lt;/p&gt;&lt;/blockquote&gt;    In the light of the new year, it seems a bit bland, but I guess that's the way of prayers: they resonate with your emotions. I was decompressing from my pre-Christmas rush to complete some projects and this caught me like a rogue wave.  Here's the &lt;a title="full text of the prayer" href="Doc?id=dcqvq83w_15fwk2h8gd" id="f6wa"&gt;full text of the prayer&lt;/a&gt;.&lt;br&gt;&lt;br&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6919669035402552575-248800433279393104?l=cliffordbeshers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cliffordbeshers.blogspot.com/feeds/248800433279393104/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6919669035402552575&amp;postID=248800433279393104' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6919669035402552575/posts/default/248800433279393104'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6919669035402552575/posts/default/248800433279393104'/><link rel='alternate' type='text/html' href='http://cliffordbeshers.blogspot.com/2008/01/i-visited-new-york-city-at-christmas.html' title=''/><author><name>Clifford Beshers</name><uri>http://www.blogger.com/profile/07441435909838565635</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://4.bp.blogspot.com/_IDeOPgpXAhM/SRmXgg3aveI/AAAAAAAAL4w/JABO0VHZGX4/S220/DSC_2138.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6919669035402552575.post-7163146508032390774</id><published>2007-12-02T23:03:00.000-08:00</published><updated>2008-02-13T22:36:50.844-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='haskell'/><title type='text'>Slouching Towards Bethlehem</title><content type='html'>After five years of discussions about programming languages, there are signs that my friend Joe has started to grok the benefits of functional programming.  He's listened to me talk about it and agreed that it sounds good, but he only recently did some reading that really got the message across. &lt;a href="http://codenoise.com/2007/12/functional-invasion"&gt; Read how a book on Erlang&lt;/a&gt; got him excited about FP.&lt;br /&gt;&lt;br /&gt;Last weekend I went tide-pooling with a friend and two of her kids.  Half way there, her son Will (7) noticed that we all had coats and complained that his mom hadn't told him to bring one.  She said, "I did tell you, but only twice.  I have to repeat things five times before you hear me."&lt;br /&gt;&lt;br /&gt;We all have trouble absorbing information that seems counter to our experience.  In Will's case, he couldn't imagine the cold, wet ocean breeze from the comfort of his living room.  For Joe, the functional approach was just so foreign, especially given that he was solving problems so well with imperative languages, that he could never really feel any benefit.&lt;br /&gt;&lt;br /&gt;At &lt;a href="http://cufp.galois.com/"&gt;CUFP&lt;/a&gt; this year, many people speculated that the need to exploit multi-core processors would be a motivating factor for people to move towards functional programming. (&lt;a href="http://cufp.galois.com/2007Abstracts.html#AnwarGhuloum"&gt;Intel is betting on it.&lt;/a&gt;) This proved true in Joe's case.  He's currently doing server work in Ruby and he mentioned a few weeks ago that he'd been running into limitations of the Rails/DB design.  Reading about the ease of threaded programming in Erlang suddenly made things click.&lt;br /&gt;&lt;br /&gt;Patience and persistence pay off.  People will hear when they are listening, understand when they have the need, switch when they can no longer contain their excitement.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6919669035402552575-7163146508032390774?l=cliffordbeshers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cliffordbeshers.blogspot.com/feeds/7163146508032390774/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6919669035402552575&amp;postID=7163146508032390774' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6919669035402552575/posts/default/7163146508032390774'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6919669035402552575/posts/default/7163146508032390774'/><link rel='alternate' type='text/html' href='http://cliffordbeshers.blogspot.com/2007/12/slouching-towards-bethlehem.html' title='Slouching Towards Bethlehem'/><author><name>Clifford Beshers</name><uri>http://www.blogger.com/profile/07441435909838565635</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://4.bp.blogspot.com/_IDeOPgpXAhM/SRmXgg3aveI/AAAAAAAAL4w/JABO0VHZGX4/S220/DSC_2138.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6919669035402552575.post-1330319848513644463</id><published>2007-12-02T22:40:00.000-08:00</published><updated>2008-12-10T04:15:16.789-08:00</updated><title type='text'>Shifting Sands of La Jolla</title><content type='html'>Finally, some photographic evidence of just how much the contours of Windansea beach change.  We had a lot of rain come in off the ocean on Friday and you can see just how much of the sand was removed by the storm surge in one day.  There was no ledge in the sand on Thursday evening.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: left;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_IDeOPgpXAhM/R1OoUAhE90I/AAAAAAAAABc/00G41phPp94/s1600-R/IMG_4155.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://2.bp.blogspot.com/_IDeOPgpXAhM/R1OoUAhE90I/AAAAAAAAABc/kGX6tcej_mk/s400/IMG_4155.JPG" alt="" id="BLOGGER_PHOTO_ID_5139636661449455426" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_IDeOPgpXAhM/R1OoUwhE91I/AAAAAAAAABk/E09LTD2mgm8/s1600-R/IMG_4160.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://1.bp.blogspot.com/_IDeOPgpXAhM/R1OoUwhE91I/AAAAAAAAABk/bewEsq51fB8/s400/IMG_4160.JPG" alt="" id="BLOGGER_PHOTO_ID_5139636674334357330" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_IDeOPgpXAhM/R1OoVwhE92I/AAAAAAAAABs/eR6RJa4AEZ4/s1600-R/IMG_4173.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://1.bp.blogspot.com/_IDeOPgpXAhM/R1OoVwhE92I/AAAAAAAAABs/uCvtsYphLz4/s400/IMG_4173.JPG" alt="" id="BLOGGER_PHOTO_ID_5139636691514226530" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6919669035402552575-1330319848513644463?l=cliffordbeshers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cliffordbeshers.blogspot.com/feeds/1330319848513644463/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6919669035402552575&amp;postID=1330319848513644463' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6919669035402552575/posts/default/1330319848513644463'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6919669035402552575/posts/default/1330319848513644463'/><link rel='alternate' type='text/html' href='http://cliffordbeshers.blogspot.com/2007/12/shifting-sands-of-la-jolla.html' title='Shifting Sands of La Jolla'/><author><name>Clifford Beshers</name><uri>http://www.blogger.com/profile/07441435909838565635</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://4.bp.blogspot.com/_IDeOPgpXAhM/SRmXgg3aveI/AAAAAAAAL4w/JABO0VHZGX4/S220/DSC_2138.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_IDeOPgpXAhM/R1OoUAhE90I/AAAAAAAAABc/kGX6tcej_mk/s72-c/IMG_4155.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6919669035402552575.post-8318112417414461490</id><published>2007-11-29T21:31:00.000-08:00</published><updated>2008-12-10T04:15:17.046-08:00</updated><title type='text'>Functional Programming Marketing</title><content type='html'>Following the discussions at CUFP about how to achieve broader adoption of functional programming, I had my car tricked out for some direct advertising:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_IDeOPgpXAhM/R0-jSxMmrvI/AAAAAAAAABM/QrHENwrjEuc/s1600-R/FunctionalProgramming.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://3.bp.blogspot.com/_IDeOPgpXAhM/R0-jSxMmrvI/AAAAAAAAABM/C0Su_DqL1GI/s400/FunctionalProgramming.jpg" alt="" id="BLOGGER_PHOTO_ID_5138505242692202226" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Okay, I confess.  But it was so close:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_IDeOPgpXAhM/R0-jghMmrwI/AAAAAAAAABU/mnCL2-Vm7Ww/s1600-R/FunctionDrinks.jpg"&gt;&lt;span style="font-weight: bold;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://2.bp.blogspot.com/_IDeOPgpXAhM/R0-jghMmrwI/AAAAAAAAABU/S77807IJnRU/s400/FunctionDrinks.jpg" alt="" id="BLOGGER_PHOTO_ID_5138505478915403522" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6919669035402552575-8318112417414461490?l=cliffordbeshers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cliffordbeshers.blogspot.com/feeds/8318112417414461490/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6919669035402552575&amp;postID=8318112417414461490' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6919669035402552575/posts/default/8318112417414461490'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6919669035402552575/posts/default/8318112417414461490'/><link rel='alternate' type='text/html' href='http://cliffordbeshers.blogspot.com/2007/11/functional-programming-marketing.html' title='Functional Programming Marketing'/><author><name>Clifford Beshers</name><uri>http://www.blogger.com/profile/07441435909838565635</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://4.bp.blogspot.com/_IDeOPgpXAhM/SRmXgg3aveI/AAAAAAAAL4w/JABO0VHZGX4/S220/DSC_2138.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_IDeOPgpXAhM/R0-jSxMmrvI/AAAAAAAAABM/C0Su_DqL1GI/s72-c/FunctionalProgramming.jpg' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6919669035402552575.post-6396307853509521980</id><published>2007-11-27T09:24:00.000-08:00</published><updated>2007-11-27T16:37:46.787-08:00</updated><title type='text'>Futurama on Type Inference</title><content type='html'>I enjoyed Futurama when it first appeared in 1999, but through the reruns on Cartoon Network and the magic of TiVo, my admiration has continued to grow. Wired magazine has an &lt;a href="http://www.wired.com/entertainment/hollywood/magazine/15-12/ff_futurama?currentPage=1"&gt;excellent article&lt;/a&gt; pairing a history of the show (past, present &lt;span style="font-style: italic;"&gt;and&lt;/span&gt; future,) with the announcement of two new seasons released on DVD. I own about three DVDs and never watch any of them, but I won't wait for these episodes to appear on TV.&lt;br /&gt;&lt;br /&gt;Futurama delights in science humor, (math, physics, computer science,) which seems like a disaster for mainstream media, even to me. But the Wired article reveals how the creators, Matt Groening and David X. Cohen, managed to (eventually) walk the tightrope of financial success by keeping the main story line humorous for all, but adorning it with humor for the minority.&lt;br /&gt;&lt;br /&gt;A personal favorite, and one I think all functional programmers will enjoy, is this little gem about narrowing types:&lt;br /&gt;&lt;b&gt;&lt;/b&gt;&lt;blockquote&gt;&lt;span style="font-weight: bold;"&gt;Moon farmer:&lt;/span&gt; Yep, goes down to -173 degrees.&lt;br /&gt;&lt;span style="font-weight: bold;"&gt; Fry:&lt;/span&gt; Celsius or Fahrenheit?&lt;br /&gt;&lt;span style="font-weight: bold;"&gt; Moon farmer:&lt;/span&gt; First one, then the other.&lt;br /&gt;&lt;/blockquote&gt;Hats off to Futurama for making math funny.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6919669035402552575-6396307853509521980?l=cliffordbeshers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cliffordbeshers.blogspot.com/feeds/6396307853509521980/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6919669035402552575&amp;postID=6396307853509521980' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6919669035402552575/posts/default/6396307853509521980'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6919669035402552575/posts/default/6396307853509521980'/><link rel='alternate' type='text/html' href='http://cliffordbeshers.blogspot.com/2007/11/futurama-on-type-inference.html' title='Futurama on Type Inference'/><author><name>Clifford Beshers</name><uri>http://www.blogger.com/profile/07441435909838565635</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://4.bp.blogspot.com/_IDeOPgpXAhM/SRmXgg3aveI/AAAAAAAAL4w/JABO0VHZGX4/S220/DSC_2138.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6919669035402552575.post-8507142931489564623</id><published>2007-11-18T19:47:00.000-08:00</published><updated>2007-11-18T20:34:35.752-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='haskell'/><title type='text'>Data: Singular or Plural?</title><content type='html'>My brother Sam was visiting recently and corrected me when I used the word "data" as a collective singular rather than the plural. He made some huffy comment about the difference being important to scientists. Back to that in a moment.&lt;br /&gt;&lt;br /&gt;A few days ago I discovered that professional wrestling was older than I thought while watching a film from the 1940's.  Well today I discovered that the use of data as a singular noun dates from at least that far back as well. This time my source is "The Philadelphia Story," also filmed in the 1940's.  Jimmy Stewart, playing an author working as a journalist, says, "Our research department didn't give us much data."&lt;br /&gt;&lt;br /&gt;I was about to send a snide note to Sam, when I started to wonder about the 'data' statement in Haskell, used to construct new types.  There is also a 'type' statement and a '&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;newtype&lt;/span&gt;', both apparently singular, but then, each constructs exactly one type. So I have to wonder, is "data" in this context also singular?&lt;br /&gt;&lt;br /&gt;If Haskell used "datum" instead, and there was more than one element in the type, it wouldn't make sense, I suppose. Of course, no sane language designer would force you to use 'datum Singular = One', but 'data Plural = One | Two', would he?  Details like that are important in the semantics of Haskell, though perhaps not the syntax.  Still, perhaps I should be more careful about my usage.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6919669035402552575-8507142931489564623?l=cliffordbeshers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cliffordbeshers.blogspot.com/feeds/8507142931489564623/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6919669035402552575&amp;postID=8507142931489564623' title='8 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6919669035402552575/posts/default/8507142931489564623'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6919669035402552575/posts/default/8507142931489564623'/><link rel='alternate' type='text/html' href='http://cliffordbeshers.blogspot.com/2007/11/data-singular-or-plural.html' title='Data: Singular or Plural?'/><author><name>Clifford Beshers</name><uri>http://www.blogger.com/profile/07441435909838565635</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://4.bp.blogspot.com/_IDeOPgpXAhM/SRmXgg3aveI/AAAAAAAAL4w/JABO0VHZGX4/S220/DSC_2138.jpg'/></author><thr:total>8</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6919669035402552575.post-5962961402715107701</id><published>2007-11-16T21:00:00.000-08:00</published><updated>2007-11-17T01:29:25.957-08:00</updated><title type='text'>Your Grandfather's Professional Wrestling</title><content type='html'>I've always thought of "professional wrestling" as a relatively new phenomenon, but I just discovered it is at least thirty years older than I thought.  I am referring, of course, to the type of wrestling that is more opera than sport, with tough guys leaping from the ropes and whacking each other with chairs.  I remember it on TV as early as the 1970's and always thought it was originated about then.  I've certainly never seen earlier TV clips of anything like it.&lt;br /&gt;&lt;br /&gt;Imagine my surprise to find essentially the same drama depicted in the 1941 film "Shadow of the Thin Man."  It wasn't quite as gaudy, but all the elements were there: the wrestlers were big, fat and mean; the bout was acrobatic and exaggerated, nothing like olympic wrestling; and the fans relished the battle between good and evil, cheering wildly as the bad guy took a beating.&lt;br /&gt;&lt;br /&gt;It seems the sport had a reputation of being fake even then. As Nora Charles passes the ring on her way out, she looks at the losing wrestler, his face down on the mat, struggling to escape a head lock. "I hope you get out of that," she says.  He immediately stops grunting and replies, "Thank you, ma'am," as calmly as a doorman, then returns to his struggles.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6919669035402552575-5962961402715107701?l=cliffordbeshers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cliffordbeshers.blogspot.com/feeds/5962961402715107701/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6919669035402552575&amp;postID=5962961402715107701' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6919669035402552575/posts/default/5962961402715107701'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6919669035402552575/posts/default/5962961402715107701'/><link rel='alternate' type='text/html' href='http://cliffordbeshers.blogspot.com/2007/11/your-grandfathers-professional.html' title='Your Grandfather&apos;s Professional Wrestling'/><author><name>Clifford Beshers</name><uri>http://www.blogger.com/profile/07441435909838565635</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://4.bp.blogspot.com/_IDeOPgpXAhM/SRmXgg3aveI/AAAAAAAAL4w/JABO0VHZGX4/S220/DSC_2138.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6919669035402552575.post-8296766143667234799</id><published>2007-11-06T09:34:00.000-08:00</published><updated>2007-11-06T09:42:19.336-08:00</updated><title type='text'>The Sound of Wire Hangers</title><content type='html'>My brother was in town for a conference and left on an early flight this morning.  I woke up a bit when I heard the sound of spoon on cereal bowl, a very distinctive and penetrating sound. I sat bolt upright sometime later when I heard three successive &lt;span style="font-style: italic;"&gt;sproings, &lt;/span&gt;like very loose piano strings being plucked.&lt;br /&gt;&lt;br /&gt;It turned out they were the sound wire hangers springing back into shape.  I had washed some of his t-shirts and hung them to dry on a very high rod in his room.  He couldn't reach the hangers themselves, so he had eventually just pulled on the shirts until they came off.  It was a very odd sound to wake up to.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6919669035402552575-8296766143667234799?l=cliffordbeshers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cliffordbeshers.blogspot.com/feeds/8296766143667234799/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6919669035402552575&amp;postID=8296766143667234799' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6919669035402552575/posts/default/8296766143667234799'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6919669035402552575/posts/default/8296766143667234799'/><link rel='alternate' type='text/html' href='http://cliffordbeshers.blogspot.com/2007/11/sound-of-wire-hangers.html' title='The Sound of Wire Hangers'/><author><name>Clifford Beshers</name><uri>http://www.blogger.com/profile/07441435909838565635</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://4.bp.blogspot.com/_IDeOPgpXAhM/SRmXgg3aveI/AAAAAAAAL4w/JABO0VHZGX4/S220/DSC_2138.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6919669035402552575.post-2856517468796085189</id><published>2007-11-05T09:28:00.000-08:00</published><updated>2007-11-05T09:58:28.855-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='cooking'/><category scheme='http://www.blogger.com/atom/ns#' term='recipes'/><category scheme='http://www.blogger.com/atom/ns#' term='food'/><title type='text'>Stalking Spicy Cocoa (Cocoa Capsaicin)</title><content type='html'>Last winter I made a serious attempt to cut all refined sugar out of my diet.  I was also not drinking coffee at the time.  Either one would have been fine, but removing both left a gap that I needed to fill, so I started experimenting with a sugarless cocoa. I ended up with a recipe that I felt was drinkable, but not stunning.  Still, after several months of making it, I found that I could not go back to the normal sugared cocoa.  Anything over a pinch of sugar tasted out of balance.  Winter is knocking at the door again (in San Diego, that means it is getting down to 50F at night and doesn't make it to 80F during the day), so I'm going to start fiddling again.&lt;br /&gt;&lt;br /&gt;I knew two interesting facts about cocoa: adding a pinch of salt improves the flavor; the Aztecs used chile peppers instead of sugar.  I like spicy foods and there's a local chocolate company that makes a nice chile pepper chocolate bar, so I felt I had a good starting point.&lt;br /&gt;&lt;br /&gt;Removing the sugar definitely leaves a gap. Adding salt warms the flavor of the chocolate, but it is easy to go too far. With sugar, I add just a few grains of kosher salt per cup.  Without sugar, I increased this to a small pinch with good results, but if I went as far as a normal pinch for savory dishes, the flavor of the salt came through.  The quantities are small enough that measurements with standard kitchen equipment are tough, and I think it's better to find the break point with your own taste buds.&lt;br /&gt;&lt;br /&gt;Next, I added cayenne pepper. This produced a satisfactory bite, but there was still a gap on the tongue where the sugar used to be.  So I started adding other spices: cumin, coriander, cinnamon and nutmeg.  You can get pretty aggressive with the cumin, but the coriander is like the salt in that a little helps and a little bit more is too much. It's hard to get a nice clean flavor with this technique, but you do get a sort of earthy bass line and that's what I ultimately came to like.&lt;br /&gt;&lt;br /&gt;I also experimented with adding back just a pinch of sugar, about the same amount as the salt, and that was enough, given all the other new flavors, to make it taste sweet again.&lt;br /&gt;&lt;br /&gt;As I'm writing this, it occurs to me that I should go back and get a whole variety of dried chile peppers and start from scratch.  There are a lot of varieties that I have not dabbled with, many with more rounded flavors than cayenne.  Also, I doubt the Aztecs used milk. Perhaps there is another path that will lead to a better result.  Seems like an excellent project for the coming winter.&lt;br /&gt;&lt;br /&gt;To make this yourself, put a small, heavy sauce pan over low heat and add a pinch each of:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;kosher salt,&lt;/li&gt;&lt;li&gt;cayenne,&lt;/li&gt;&lt;li&gt;cumin,&lt;/li&gt;&lt;li&gt;coriander and&lt;/li&gt;&lt;li&gt;cinammon.&lt;/li&gt;&lt;/ul&gt;Toast the spices gently for thirty seconds or so. Add:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;freshly grated nutmeg and&lt;br /&gt;&lt;/li&gt;&lt;li&gt;a heaping table spoon of (sugarless) cocoa powder (dutch process is good.)&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;Toss to combine.  Add:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;a mug full of milk,&lt;/li&gt;&lt;/ul&gt;whisking in a little bit at a time until the cocoa is fully combined with the milk.  Heat until the milk begins to steam, but not to the point of simmering. Add:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;1/4 teaspoon vanilla extract.&lt;/li&gt;&lt;/ul&gt;Pour and serve.  The spices accumulate in the bottom of the mug.  If you don't like the grittiness, be careful as you pour to leave them behind or strain the cocoa through a fine sieve.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6919669035402552575-2856517468796085189?l=cliffordbeshers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cliffordbeshers.blogspot.com/feeds/2856517468796085189/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6919669035402552575&amp;postID=2856517468796085189' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6919669035402552575/posts/default/2856517468796085189'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6919669035402552575/posts/default/2856517468796085189'/><link rel='alternate' type='text/html' href='http://cliffordbeshers.blogspot.com/2007/11/capsaicin-cocoa.html' title='Stalking Spicy Cocoa (&lt;i&gt;Cocoa Capsaicin&lt;/i&gt;)'/><author><name>Clifford Beshers</name><uri>http://www.blogger.com/profile/07441435909838565635</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://4.bp.blogspot.com/_IDeOPgpXAhM/SRmXgg3aveI/AAAAAAAAL4w/JABO0VHZGX4/S220/DSC_2138.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6919669035402552575.post-6829012938163512938</id><published>2007-11-03T23:12:00.000-07:00</published><updated>2007-11-04T07:34:52.211-08:00</updated><title type='text'>Barbarians and Technology</title><content type='html'>I am reading "Wilful Behavior", by Donna Leon, a murder mystery set in Venice.  Although it is written in English, certain items are only referred to by their Italian names.  She never writes "cell phone," always "&lt;span style="font-style: italic;"&gt;telefonino&lt;/span&gt;," which I take to be "little phone." Clearly, Leon thinks the Italian term is superior, or at least more colorful, and I would have to agree.  It seems especially effective when we learn from Leon's detective that his wife thinks of modern humans as "barbarians with &lt;span style="font-style: italic;"&gt;telefonini&lt;/span&gt;."&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6919669035402552575-6829012938163512938?l=cliffordbeshers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cliffordbeshers.blogspot.com/feeds/6829012938163512938/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6919669035402552575&amp;postID=6829012938163512938' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6919669035402552575/posts/default/6829012938163512938'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6919669035402552575/posts/default/6829012938163512938'/><link rel='alternate' type='text/html' href='http://cliffordbeshers.blogspot.com/2007/11/barbarians-and-technology.html' title='Barbarians and Technology'/><author><name>Clifford Beshers</name><uri>http://www.blogger.com/profile/07441435909838565635</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://4.bp.blogspot.com/_IDeOPgpXAhM/SRmXgg3aveI/AAAAAAAAL4w/JABO0VHZGX4/S220/DSC_2138.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6919669035402552575.post-2657912727006482487</id><published>2007-11-01T19:12:00.001-07:00</published><updated>2007-11-01T19:48:08.459-07:00</updated><title type='text'>British Programming Style</title><content type='html'>(Reposted to welcome Planet Haskell readers. Apologies if it appears twice.)&lt;br /&gt;&lt;br /&gt;While attending ICFP 2007 in Freiburg, David Fox and I ate dinner with Norman Ramsey, Jeremy Gibbons and one other, whose name I now forget. Jeremy had brought us to the Heilige Geist (Holy Ghost) am Munsterplatz (cathedral square). Both the food and the company were great. David ordered the venison liver appetizer and I had the venison ragout, both of which were unusual and excellent. I taught the group how to play binary word search, which they took to quite readily. And, of course, we had a number of discussions about programming language research.&lt;br /&gt;&lt;br /&gt;But the high point of the evening was a quiet remark made by Jeremy Gibbons. I have completely forgotten the context, but I vividly remember this sentence:&lt;blockquote&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;/blockquote&gt;&lt;blockquote&gt;   Operational semantics isn't really a British thing.&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6919669035402552575-2657912727006482487?l=cliffordbeshers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cliffordbeshers.blogspot.com/feeds/2657912727006482487/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6919669035402552575&amp;postID=2657912727006482487' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6919669035402552575/posts/default/2657912727006482487'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6919669035402552575/posts/default/2657912727006482487'/><link rel='alternate' type='text/html' href='http://cliffordbeshers.blogspot.com/2007/11/british-programming-style.html' title='British Programming Style'/><author><name>Clifford Beshers</name><uri>http://www.blogger.com/profile/07441435909838565635</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://4.bp.blogspot.com/_IDeOPgpXAhM/SRmXgg3aveI/AAAAAAAAL4w/JABO0VHZGX4/S220/DSC_2138.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6919669035402552575.post-207912349523114982</id><published>2007-10-27T14:20:00.000-07:00</published><updated>2007-11-08T19:31:12.150-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='steel-cut oats'/><category scheme='http://www.blogger.com/atom/ns#' term='gluten free'/><category scheme='http://www.blogger.com/atom/ns#' term='cooking'/><category scheme='http://www.blogger.com/atom/ns#' term='recipes'/><category scheme='http://www.blogger.com/atom/ns#' term='food'/><title type='text'>Lamb Stew with Zucchini and Steel-Cut Oats</title><content type='html'>I grilled a leg of lamb earlier this week when refugees from the San Diego fires were staying with me.  Normally I make this dish for parties and there is nothing left over, but this crowd had small appetites.  Even after some lovely lamb sandwiches, there was plenty left.  The weather has now turned colder and we're getting a bit of rain, so I decided a stew was in order.  I had some lovely zucchini that would certainly go well with the lamb, but I felt the stew could use a binding agent.&lt;br /&gt;&lt;br /&gt;Earlier this year I saw Alton Brown's show on oatmeal.  All my previous attempts at making steel-cut oats had failed to impress, but &lt;a href="http://www.foodnetwork.com/food/recipes/recipe/0,1977,FOOD_9936_17140,00.html"&gt;his recipe&lt;/a&gt; produced a wonderful dish that has since been a staple. But that left me wondering why oats are such a niche grain: breakfast cereal, cookie filler and granola grain.&lt;br /&gt;&lt;br /&gt;Alton's trick to cooking steel-cut oats is to delay the addition of salt, because it seals the starch in the grain. If allowed to escape, the starch forms a creamy sauce, just like &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;Arborio&lt;/span&gt; rice in risotto.   It seemed like that was just what I needed for my stew.&lt;br /&gt;&lt;br /&gt;The experiment was a success. The oats didn't lose their texture, as rice sometimes does, and the starch thickened the sauce, but never felt like glue, as flour sometimes does.  The dish also has the benefit of being wheat and gluten free (except for trace elements that might have been introduced while processing the oats), a plus for several people I know.&lt;br /&gt;&lt;br /&gt;The following recipe fits easily into a large latte' mug.&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Half a small yellow onion, diced.&lt;/li&gt;&lt;li&gt;Two small zucchini, diced.&lt;/li&gt;&lt;li&gt;1/2 C grilled lamb, diced.&lt;/li&gt;&lt;li&gt;1/4 C steel-cut oats.&lt;/li&gt;&lt;li&gt;1 1/2-2 C chicken broth.&lt;/li&gt;&lt;li&gt;Olive oil.&lt;/li&gt;&lt;/ul&gt;Heat a sauce pan over low to medium heat, add enough olive oil to cover the bottom and sweat the onions until translucent.  Add the zucchini, toss until they begin to soften, then add the oats and continue to toss until the zucchini is soft and moist looking.  There should be enough oil to cover the oats so that they do not stick, and ideally they should toast a bit.&lt;br /&gt;&lt;br /&gt;Add the lamb, toss, then add enough stock to cover the ingredients.  Bring to a simmer, cover and cook for fifteen minutes.  Taste the stew and season as needed.  I put a lot of spices on my grilled lamb, so I added just a little salt at this point.  Cover and simmer until the oats are tender, another 10-15 minutes.&lt;br /&gt;&lt;br /&gt;I also have some leftover chuck roast.  Perhaps I'll try the same again tomorrow with that instead of the lamb.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6919669035402552575-207912349523114982?l=cliffordbeshers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cliffordbeshers.blogspot.com/feeds/207912349523114982/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6919669035402552575&amp;postID=207912349523114982' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6919669035402552575/posts/default/207912349523114982'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6919669035402552575/posts/default/207912349523114982'/><link rel='alternate' type='text/html' href='http://cliffordbeshers.blogspot.com/2007/10/lamb-stew-with-zucchini-and-steel-cut.html' title='Lamb Stew with Zucchini and Steel-Cut Oats'/><author><name>Clifford Beshers</name><uri>http://www.blogger.com/profile/07441435909838565635</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://4.bp.blogspot.com/_IDeOPgpXAhM/SRmXgg3aveI/AAAAAAAAL4w/JABO0VHZGX4/S220/DSC_2138.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6919669035402552575.post-1499532453801979392</id><published>2007-10-26T12:07:00.000-07:00</published><updated>2007-10-26T18:37:43.626-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='haskell'/><category scheme='http://www.blogger.com/atom/ns#' term='gerboa'/><category scheme='http://www.blogger.com/atom/ns#' term='seereason'/><title type='text'>Don't you want a title that's not boring?</title><content type='html'>I've been meaning to create a blog for some time, but have been waffling between using blogspot and making my own blog technology in Haskell.&lt;br /&gt;&lt;br /&gt;Well, today my friend Ellie (8) is visiting.  She has her own blog (lala090909.wordpress.com) and has been bugging me to start mine. Clearly, she was right, so I had her create me an account at blogspot (she recommended wordpress.com, because everyone at Club Penguin uses it, but all the people I know use blogspot, so she acquiesced: "Fine, if you want to be boring.")&lt;br /&gt;&lt;br /&gt;("Wow, that's a lot of writing," she just said.)&lt;br /&gt;&lt;br /&gt;After typing in my name, she asked for the title.  "Clifford's Posts," she suggested?  "Ruminations," I replied.  "Oh no, more boring," she moaned.  When I insisted, she said, "Fine, how do you spell that?"  Halfway through the letters, she said, "All capitals?"  "No, just the first letter." "How about one capital, one lowercase, and so on."  "Hmm...," I said. "You don't want it all boring, do you?"&lt;br /&gt;&lt;br /&gt;Clearly, we have different audiences.  The current point of contention is that she doesn't know what "ruminatons" means.  I've delayed telling her for some time and she finally said, "Ruminations isn't that bad, I guess."&lt;br /&gt;&lt;br /&gt;So here's the rub. I'm involved in starting a new business, using functional programming (Haskell) to make a website that will both teach math skills and be fun.  Seems like I've got the boring part of the math down pat.  I'm going to have to work on the fun part.&lt;br /&gt;&lt;br /&gt;Addendum:  After all that fuss, blogspot capitalized the title anyway.&lt;br /&gt;&lt;br /&gt;Ellie just read this and said, "You're not boring, it's just that adults tend not to use colors and other things that make it exotic."&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6919669035402552575-1499532453801979392?l=cliffordbeshers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cliffordbeshers.blogspot.com/feeds/1499532453801979392/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6919669035402552575&amp;postID=1499532453801979392' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6919669035402552575/posts/default/1499532453801979392'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6919669035402552575/posts/default/1499532453801979392'/><link rel='alternate' type='text/html' href='http://cliffordbeshers.blogspot.com/2007/10/dont-you-want-title-thats-not-boring.html' title='Don&apos;t you want a title that&apos;s not boring?'/><author><name>Clifford Beshers</name><uri>http://www.blogger.com/profile/07441435909838565635</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://4.bp.blogspot.com/_IDeOPgpXAhM/SRmXgg3aveI/AAAAAAAAL4w/JABO0VHZGX4/S220/DSC_2138.jpg'/></author><thr:total>3</thr:total></entry></feed>
