Monthly Archives: October 2009

Chicken Fricassee

chixfric_sm.jpg
A somewhat nontraditional chicken fricassee, inspired by the version served at Gumbo Ya-Ya. This batch is too spicy (due to the Euclid Kroger’s epically inconsistent peppers) and not dark enough (due to my inability to get a roux that dark without burning it), but quite delicious. It definitely bears playing with, I want to get better at braising (Especially maintaining color and texture), and this is a easy, tasty way to practice.

Posted in FoodBlogging, OldBlog | Leave a comment

Languages for Computers, Languages for Computing

We had a day of playing with Lisp in CS655 in preparation for the next assignment, and, like every time I am exposed to Lisp, it makes me think about one of my favorite ways of classifying programming languages. The dichotomy is is, as above, “Languages for computers” — Languages that directly manipulate the way computers tend to be actually implemented (Like C and FORTRAN, which have admittedly symbioticly pushed the design of modern computers) and “Languages for computation” — Languages built around a computational model (Like ML and Smalltalk). I’m a much bigger fan for the former.

Lisp sort of falls in-between. Lisp is definitely a “Lambda calculus with sugar” language in conception, but it has at various times actually made sense for the hardware it ran on. Initially, Lisp was implemented on the IBM 704; the CAR and CADR nomenclature for the head and tail of a list endemic to Lisp is derived from the way in which registers could be split and addressed on the 704, and is actually a fairly clever way of efficiently utilizing the available resources. This is also probably why Lisp is case insensitive; the 6-bit, Hollerith-card derived BCD character representation used on early IBM machines only had capital letters. Later on, mostly as a response to the AI communities’ love of writing computationally intensive programs in Lisp, which was (and continues to be) extraordinarily inefficient on most hardware, there were several generations of dedicated Lisp Machines, built with a bizarre tagged architecture specially suited to running Lisp code. These are now a well and truly dead breed, as they were expensive special-purpose machines of the kind almost completely eliminated by commodity hardware in the 90s, but did prove that it was possible (albeit expensive and ungainly) to make hardware that suited Lisp the same way most machines are suited to C and Fortran.

The remainder of this post is sort of an expansion of my griping about ML a few posts back, generalized to “computation” style languages. My first objection is partly personal; I’m much more interested in the way computers actually work, than the (admittedly alluring and elegant) field of computational theory, which frankly has very little bearing on the way computers work, and even less on the way they are used. This does lead to an argument that programs should be written to suit the prevailing hardware rather than the programmer, as they will be run many times but only written once, but that argument can be over-applied to any high level language, and can be mitigated by ever increasingly smart compliers. Another reason I don’t tend to take the “computation” type languages all that seriously is that I don’t really believe in attempting to formally verify programs. My observation is that programmers tend to be pretty good at writing what they mean (possibly excluding fringe cases) in any language they are comfortable with, but pretty bad at figuring out exactly what they intend to write, which is a validation problem, usually made worse by attempts at premature verification. There are a couple notable efforts to formally verify non-trivial programs, like se4l, but these conspicuously tend to be written in languages not designed to support formal verification. To the best of my knowledge there aren’t any formally verified programs large numbers of people actually use on a regular basis (it would be cool if there were; please correct me if there are examples, I’d love to see them).

Posted in Computers, General, OldBlog | Tagged , | 1 Comment

XMOS

I ran into an ad for development boards from XMOS the other day, and, being generally curious about unusual little processors, read up on them. The architecture they are using sounds like a really good idea to me, and I hope it’s as well executed as it is clever. Some of the cool stuff:

Programmable hardware – they call it “Software Defined Silicon”, it appears to be FPGA-like programmable switching setups between the cores, and some programmable features in the IO blocks.

Static scheduling – This is my bet for the way to solve the memory latency problem that continues to be my favorite candidate for “the next big problem in computing”. Caches and parallelism can only hide so much, and caches are responsible more than their share of uglyness.

LLVM-based tools- I’ve been working with LLVM for LARs, and there is a lot of similarity to the designs. I’m pretty well convinced now that LLVM is a Good Thing and the programming environment they built with it sounds promising; it appears to be C, extended with features to better support thread concurrency and the programmable I/O stuff.

The biggest worry is they don’t seem to actually have their chips in any high profile devices, which may just mean they haven’t been around long enough, and may mean there is some hidden problem with their products that I haven’t caught on to yet.

I don’t have enough free time and energy to think its a good idea to drop $100+ on a dev kit which will sit unused on my shelf “until I have time”, nor do I have a project for which it would be appropriate, but I’d love to to sit down and play with one of their dev kits (the little credit-card boards are cool, but the one with the QVGA touchscreen is way cooler…) and see if it really is as good as it looks (One of the many cool project ideas I doubt I’ll ever get to: I’d love to try to port a conventional(ish) OS to these things in a way that actually took advantage of the architecture (I’m thinking tricks with a microkernel across threads), both for the porting experience and because it would be a good (predicted) future of parallel programming playground. There is a review of the fancy kit with the screen above, and it sounds like the software tools (at least at the time of the review) and documentation are still a little rough, but they seem to agree its a promising idea, and do note that XMOS seemed to be aware of the issues and showed signs of moving to solve them. Definitely a product to watch.

Posted in Computers, Electronics, General, OldBlog | Tagged , , | Leave a comment

ML and Music

I’ve been working on figuring out ML for an Advanced Programming Languages assignment. ML is a peculiar language, so it’s been taking some time, and when I’m spending hours staring at blocks of text I tend to get more into music as a complimentary activity. Both are turning up things worth sharing.
ML:
Functional programming has always confused me; as a computer engineer it strikes me as a deeply unnatural thing for the computer to do (what the hell does it look like in memory? — I mostly know and it isn’t pretty), and it isn’t a terribly natural paradigm for humans (although I will grant that is would likely be no more of a contortion for someone not accustomed to programming than any other paradigm). I guess there is a reason the deeply functional stuff tends to be mostly limited to “interesting” languages that are mostly outside the mainstream. I can “feel the power” on a lot of fronts; the ability to completely describe functions as input/output pairs is cool, recursion is natural and easy, and the type system is nifty, but it all still feels a little uncomfortable to me.
Music:
I’ve spent the last couple weeks on a Hyper Crush kick . Pandora brought me Hyper Crush off an A Kiss Could be Deadly derived station a while ago, and it took me a while to make up my mind about them. They make INCREDIBLY catchy, ostentatiously course, and somehow still incredibly geeky techno-influenced hiphop, which is either absolutely brilliant or unforgivably obnoxious. Aside from endless energy and spectacular synthesizer work, their songs are laced with a vast and remorseless collection of samples from and references to bits of pop-culture ephemera from the 1960s onward. Just to name a few, one track begins with a sample from The Shangri-Las “Leader of the Pack”, and another borrows its background from “Crazy Frog”. Both mixtape releases (Both available legitimately free online, but buried behind some flash obstructions) are shot through with samples from West Side Story, The Wizard, Back to the Future, and a wide swath of 80s and 90s video games. It is the pure sound of geeks letting their hair down, and it feels damn good.

To compliment the loud, I started listening to The xx yesterday, which I actually learned about from the music section in the back of last week’s The Week, which is usually too pretentious to pay attention to. Their debut album xx is unbelievably complex and nuanced for a first effort from a group of 20somethings. The lyrics are often male/female harmonies (I like the female vocalist’s voice much better, but thats par for the course with me), which are not necessarily the same words or timing for both voices but remain in harmony none the less. The lyrics are also quite subtle, one could reasonably make it through the entire album without realizing it’s mostly about sex. The coolest thing to me is how much they play with negative space; the crisp gaps are as much a part of the music as the instrumentation itself. There really isn’t any standout track, good or bad, on the album, so just go listen to any random track.

Posted in Computers, General, Music, OldBlog, School | Tagged , | Leave a comment

Barrel #2: Away

barrel2guts.jpg
The 12-note barrel is away. I’m pretty sure everyone from Collexion involved is well and truly done with this particular stunt, but it was a neat project with some great results. This one went through the School of Music’s benefit gala to benefit the School of Music Service Organization. It only pulled in $750, but with the lower materials cost that still represents some income for the benefiting organization. The picture above is (almost) all the guts for the barrel, before being assembled and installed.

Posted in Announcements, DIY, Electronics, Entertainment, General, OldBlog | Tagged | Leave a comment