N8x0 PowerVR Drivers!

Since the N800 came out there has been a lot of rumbling in the community about the unutilized hardware present in the device (and it’s sibling/successor, my beloved N810). The piece most complained about are the PowerVR MBX 3D accelerator and 5MB SRAM included on the OMAP2420 SoC the device is built around. The explanation has always been a mixture of licensing issues for the drivers, and that the external Epson S1D13745 display controller was better suited to the 800×480 (still unusually high for mobile devices) resolution, despite being rather slow and devoid of 3D-capability.

With the advent of the N900 and it’s non-backward-compatible Maemo 5 OS, there is some fear in the community that the N8×0 devices will be abandoned. The N900 looks like a very cool device, but like many tablet owners, part of the appeal of my N810 was that it wasn’t designed to have a >$50/month cellular data plan. Nokia’s offical (and seemingly very classy) stance is that they will provide support for continued community developed FOSS software for the platform, which currently mostly means Mer, a community firmware/ partial Maemo 5 backport. There are also several other linux-based OS ports to the N8×0 platform, and a burgeoning effort to produce a binary-compatibility-maintaining system software update like the ones Nokia used to produce for Maemo 4 which will hopefully all cross-pollinate sources and keep the platform alive. One only has to look at how long the OpenZaurus (later merged into OpenEmbedded/Ångström) community held on, and how much they accomplished to be hopeful.

The combination of these thoughts? Nokia (and the various other relevant IP owners) announced they will be supplying drivers for the PowerVR to the community in the immediate future. With a little luck the Mer hackers will get them integrated into a release soon, which may contribute to tipping to Mer as the predominant OS for n8×0 devices over the OS2008/Maemo 4 stack Nokia provided.

I depend so much on my n810 I haven’t really been into OS hacking on it, but as it ages and the community firmwares come to the fore I suspect I’ll get more into it (if I have time). Maybe as they get cheap I’ll even end up with one of the “knockoffs” to use as a test platform in the same primary machine/beaterbox setup as my bigger machines.

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

Epigrams on Programming

My Languages for Computers, Languages for Computing post reminded me of several of the “Perlisms” from Epigrams on Programming, a collection of humorous observations on programming published by Alan Perlis in SIGPLAN Notices 17(9), September 1982. Most of them are still as, or more, relevant now than they were when they were published.

Everyone who deals with computers regularly: GO. READ. THEM.

Some of my favorites:
19. A language that doesn’t affect the way you think about programming, is not worth knowing.
31. Simplicity does not precede complexity, but follows it.
49. Giving up on assembly language was the apple in our Garden of Eden: Languages whose use squanders machine cycles are sinful. The LISP machine now permits LISP programmers to abandon bra and fig-leaf.
87. We have the mini and the micro computer. In what semantic niche would the pico computer fall?
114. Within a computer natural language is unnatural.

The fact that many of the epigrams are contradictory in clever ways just makes them better.

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

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

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