Category Archives: General

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

Beef in Wine Sauce

sirloinwine_sm.jpg
Beef in wine sauce, over egg noodles. This is my current favorite way to convert an iffy bottle of red wine into tasty, tasty food. About a third of a bottle of shifty wine (here, a $9 cab that wasn’t actually worth $9 even before it sat re-corked in the fridge for a week) and some sirloin steak, onions and mushrooms, seasoned with garlic, pepper, salt, and a dash of thyme, and thickened with milk and flour. This batch had a dollop of sour cream added at the end because it was handy and milkfat makes everything better. It’s sort of like a quicker, easier, cheaper Beef Bourguignon. I should really try using some bits of bacon for the initial cooking fat like you do for modern beef bourguignon, theres always some around and you can’t go wrong with bacon fat.

Posted in FoodBlogging, OldBlog | Leave a comment

Musical Barrel #1

One of my hobby projects just came to fruition earlier tonight. A team from Collexion has been working on building a pair of musical Bourbon barrels to support local charity auctions. The first one (6 notes from an internal glockenspiel, triggered by capacitive touch sensors on the rings, with an excellent paint job by Sam Wilson) sold earlier tonight at Spirits of Giving, bringing in $1500 to be split between Collexion and the Nash Brigthon Project. It’s great to be doing technological art, and it’s great that it can be used to support good causes. I forgot to bring my camera, but as soon as I get sent pictures from the people who did have them I’ll throw at least one up.

Edit: I don’t have pictures, but here is a video of the demonstration.

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

Paper Submission +1

Got another conference paper out last night, half an hour before the deadline. I’m again the third author, but this time I am there for contributing content, not just huge amounts of editing. This is a better paper than the one that didn’t make it in at SuperComputing; our focus is more on the theory behind the LARs desing and it’s many interesting implications, and the polish is much better. The venue is also more appropriate, this paper is out to IPDPS, who have a better track record taking things as “out there” as this one, both because of their editorial process and focus.

It’s great to be working with committed people; both my co-authors and our advisor were there and working to make it better until 11:45 at night when we finally got it squared away and submitted.

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

David Shippy Talk

The David Shippy talk in my last post was quite good; it featured a solid mix of business politics, and computer architecture, which drew a room-filling audience. That said, a LARGE portion of the audience was made up of EE280 students, who were apparently there in place of class. This is not a bad thing; conditioning the underclassmen to pay attention to seminars is an worthy goal. It also means the level of the talk was very well suited, if the audience had been a bunch of specialists on the topic (and a non-trivial portion of it was) it would have been inappropriately general, but for the spectrum of people in the room I would say it was pretty spot on.
I hung around afterwards, both to ask a question and because there were some very interesting conversations going on among the stragglers. As for the question, I wanted to know about the relationship of the PPC based Cell PPE and Xenon cores, to the things Nintendo uses…He was also in charge of the Gecko and Broadway chips that IBM makes for Nintendo to use in the GameCube and Wii respectively as well; and they share a common lineage but not a common design. Some of the straggler conversation was the expected material about computer architecture (especially historical stuff) which was informative, but there was one about engineering education that I found VERY interesting. I’m not sure that I should be quoting it, but suffice to say there are apparently solid numbers that confirm the suspicion that a high GPA (in high school or college) or SAT/ACT scores are not strongly correlated with success in EE/ECE programs at UK.
All in all, a cool talk, with lots of encouraging side factors.

Posted in Announcements, General, OldBlog, School | Leave a comment

Decent Seminars!

UK (and the college of engineering in particular) is surprising me with the quality of seminar speakers this semester, Bruce Schneier last week, and tomorrow David Shippy , chief architect for of IBM’s microprocessor team for games (the people who designed the Broadway, Cell, and Xenon processors inside all three of the major game consoles at the moment), and co-author of The Race for a New Game Machine: Creating the Chips Inside the XBox 360 and the Playstation 3 will be speaking. His hand is on so much of the buzz in the tech news it should be really interesting to hear from him first hand, especially if we get a seminar-appropriate highly technical version. I’ve seen reviews of the book that gripe about lack of technical detail (and writing style); hopefully an in-person presentation to a known technical audience will take care of both problems and get things up to good material + good presentation.

The seminar is at 1:00PM in CRMS (I forget the room number) which brings me to the other thought…
folks need to work on their seminar announcement system. No email (to the seminars list). No updated websites (there is a seminars link on the department website …which is about 6mo out of date), just some posters hanging on the walls around Engineering. There were regular, highly visible announcements for the uninspiring dreck last year, why isn’t there publicity for the good stuff now?

Posted in Announcements, General, OldBlog, School | 1 Comment

Chicken Paprikash

chickenpaprikash_sm.jpg
Another “look what I made” format food post, chicken paprikash made with what was once this recipe, but has habituated and drifted over time. Served over rice ( I’ve never been terribly found of Spätzle, and rice is more my habit than noodles) and sugar snap peas, which make an amazing if slightly improbable combination. Also a glass of Moroccan-esque iced tea: it is brewed at unusually high temperature from gunpowder tea and fresh mint leaves, and it is sweetened beyond all reason, but I feel wrong calling it Moroccan tea because it isn’t pulled and is served cold. I love having time to cook, even when I know it is just a lull in the standard semester storm.

Posted in FoodBlogging, OldBlog | 3 Comments