Category Archives: General

Beer Reduction Sauce

While travelling I had a meal at a Gordon Biersch (chain brewery restaurant) with what they call “Märzen sauce,” which was pretty good, and I wanted to check my guess for how it was made. Nothing else particularly appealed while I was shopping for dinner ingredients tonight, so I decided to try to clone with the wheat ale I had in the fridge.

Pork in a thickened beer reduction with mushrooms, with asparagus and rice.

I was pretty sure it was made on the cook meat in oil with salt and pepper (and garlic powder?)-> remove meat -> add flour to to whatever is left in the pan -> cook until dark -> deglaze with beer -> add sliced mushrooms (and garlic?) -> cook down -> plate meat with pan sauce process, and decided to try it. I went with real garlic later in the process, which I suspect was wrong, and I would have to test again to see if I got the ordering right in one place (flour and mushrooms steps may be swapped), but it seems to be right otherwise, and, more importantly, came out tasty.

Posted in FoodBlogging | Leave a comment

SC’11 Lessons

I learned some really interesting things at SC this year, and now that I’ve had a day to process, I want to share. Many of these observations come from first or second hand conversations, or justifiable interpretations of press releases, so I don’t promise they are correct, but they are plausible, explanatory, and interesting. I apologize for the 1,000 word wall of text, but there is a lot of good stuff.

  • This is the big one: I’m pretty sure I understand the current long term architecture plan being pursued by Intel, AMD, and Nvidia. This plan signals the end of the current style of monolithic symmetric processor cores.
    They are all apparently pursuing designs with a small N of large integer units, coupled to M >> N SIMD engines.

    • Nvidia’s “Project Denver” is a successor/big sibling to Tegra design, and appears to be the beginning of a line with 2-8 64-bit (probably) ARM cores tightly integrated with a big honking GPU-like SIMD structure for FP. The stale press release about this stuff is kind of nauseating to read, but it looks like they’re betting the farm on that design.
    • Intel’s HPC efforts are going to be based on a lot of MIC (Many Integrated Cores, successor to the Larabee stuff) parts coupled with a few big cores like the current Xeons. The MIC chips are basically large numbers of super-Atoms: tiny, simple, dumb integer units attached to big SWAR (SIMD Within a Register) units focused on SSE/AVX performance. This is less speculative than most observations, they made a pretty good press push (This for example) on this idea.
      The ring interconnects and higher per-“thread” hardware complexity are probably not a good idea in the long run (IMHO), but having an integer unit for every big SWAR engine will be a major advantage in terms of programming environment and code generation. I suspect the more cautious approach is because Intel doesn’t want/can’t afford another Itanic, where the tools couldn’t generate good code for the programming model on their intended high-end part.
    • AMD’s two current products are stepping stones to a design similar to Nvida’s – Bulldozer is a design with some ridiculously powerful x86-64 integer units decoupled from a smaller number of shared FPUs. The APU (I haven’t heard the “Fusion” name in a while) designs are CPUs tightly coupled to GPU structures. The successor parts will be a hybrid of the two – a few big, bulldozer style integer units, with a large number wide next-gen GPU SIMD structures coupled to them.

    I think this is generally a good design direction, particularly with current directions in computing in mind, but it is going to make the compiler/concurrent programming world exciting for a while.

  • AMD appears to be gearing up to abandon a fifth generation of GPGPU products. CTM, CAL, Brook+, OpenCL on 4000 series cards have all been deprecated while still shipping, and indications are that OpenCL (and general driver) support for the current architecture (4-wide VLIW SIMDs, like in the 5- and 6- series) has been relegated to second-class citizen status, while they work on a next generation architecture. The rumor is the next gen parts will be 4 independent banks of SIMD engines instead of 4-wide VLIW SIMD engines, which should be both both nicer to program and generate code for and more similar to Nvidia.
  • Nvidia is going to open source their CUDA environment. One of the primary objections to CUDA in a lot of circles is reluctance to use a proprietary single-vendor programming environment (people who have been in super/scientific computing for long have all been burnt on that in the past), and the Integer+SIMD model is going to require that not be an issue. This is assembled from information from several places, including PGI, Nvidia, and various scientific compute facilities, much of it second hand or further, but it would make sense.
  • I still don’t exactly know what went down at Infiscale, but the impression that the Perceus community was abandoned by the company, the developers fled, and it was a bad scene seems to be correct. No one I know that was there seems to be talking, but they’re all on their way to other interesting things, especially Greg Kurtzer’s Warewulf3 project at LBL.
  • The dedicated high performance compute nodes in Amazon’s EC2 cloud are actually connected as a few large partitionable clusters, users just can’t (nominally, don’t need to) see and instrument the topology like they could with a normal cluster. This is from interpreting press releases, because the people manning Amazon’s booth really didn’t want to chat (and, in fact, were kind of dicks when we tried). This explains how they’ve been getting performance out of a loosely coupled cloud — which is to say they aren’t, they just have a huge cluster attached to their cloud that shares the interface.
  • The current hard drive production problems have given SSDs the opportunity they need to become first class citizens. Talking to OEMs, the wholesale cost per capacity on HDDs almost tripled, and the supply lines aren’t all that stable, so everyone is scrambling to make things work with mostly SSDs. I saw a lot of interesting new form factors for SSDs, and several flavors flash or battery backed “nonvolatile” DRAM floating about as well, so the nature of storing data-sets is changing.
  • I saw motherboards with 32 DIMM slots (mostly AMD Interlagos based) on the floor. I saw 32GB DIMMs on the floor. I saw some shared-memory systems with multiple Terabytes of RAM in them. The standard for high memory machines has roughly quadrupled in the last year or two.
  • The number of women (not booth babes, real technical people, especially younger ones) and educators on the show floor this year was way higher than in the past. This is very good for the field.

I think that covers most of the really good stuff coming off the floor this year, although I am still processing and may come up with some other insights when I’ve had more sleep and discussion.
Also, Pictures! WOO! (Still sorting and uploading the last batch at time of posting).

Posted in Announcements, Computers, Electronics, General | Tagged , , , , | 1 Comment

Stop SOPA

Internet censorship and overbearing laws to maintain the entertainment industries business model are always bad, but SOPA is the worst. Not that it is entirely technically implementable, but if passed it will genuinely break the internet, and ruin lives in the process. I have the support logo blackbar up for the day, and after that, check for details at http://americancensorship.org/

Posted in Computers, General | Leave a comment

Headed out to SC11 in Seattle, WA. for the week. Technical interest, travel complaints, booth hacks, advertising mockery, and schwag to follow.

Posted on by pappp | Leave a comment

Source Scroller

I’ve been working on a side project to make a source display widget for the aggregate.org SC’11 exhibit, and it is surprisingly problematic. The goals for the program are as follows:

  • Take a directory of source files as input
  • Automatically perform appropriate syntax highlighting on the source files.
  • Display (On a dark background – intended use is a floating projection display) all the source files consecutively.
  • Scroll automatically through the output in a pleasing, readable way.
  • Be capable of repeating this action unattended indefinitely.

Continue reading

Posted in Computers, DIY, General, School | Leave a comment

A Day in the Life of the KAOS Lab Thought Process

In which a simple “Do you know an easy way to convert an integer into a string of (character) digits?” turned into an expedition into ancient UNIX codebases. The process went something like this:

Labmate: Do you know an easy way to convert an integer into a string of digits?
< both of us type it in to google>
Looks like sprintf() is best, there must be a simple efficent algorithm.
How does printf() do it?
Let’s look in libc!
< grep through the various toolchain sources on my system >
Well, here’s the uClibc implementation… which is a terrifying mess of ambigously named function calls and preprocessor directives.
I wish I had some old UNIX sources to look at, that would be simple.
< a bit of googling later>
Holy crap, this is amazing! Full root images for a bunch of early UNIXes, many of them from dmr himself!
< download v5, grep /usr/source judiciously to find /usr/source/s4/printf.s>
Well crap, it’s in PDP-11 assembly, maybe a later version.
< download v7, grep /usr/src judiciously to find /usr/src/libc/stdio/doprnt.s>
Damn, still in PDP-11 assembly, but this is a fancier algorithm.
Hmm… the most understandable UNIX I’ve ever looked at was old MINIX
< spin up BasiliskII, in ‘030 mode, use this workaround to make MacMinix run>
< more grepping for justice>
Eventually, we found the printk() from MacMinix 1.5, in all its awful K&R/ANSI transitional C glory

...
#define NO_FLOAT

#ifdef NO_FLOAT
#define MAXDIG 11 /*32 bits in radix 8*/
#else
#define MAXDIG 128 /* this must be enough */
#endif

_PROTOTYPE(void putc, (int ch)); /*user-supplied, should be putk */

PRIVATE _PROTOTYPE( char *_itoa, (char *p, unsigned num, int radix));
#ifndef NO_LONGD
PRIVATE _PROTOTYPE( char *_itoa, (char *p, unsigned long num, int radix));
#endif

PRIVATE char *_iota(p, num, radix)
register char *p;
register unsigned num;
register radix;
{
register i;
register char *q;
q = p + MAXDIG;
do {
i = (int) (num % radix);
i += '0';
if (i > '9') i += 'A' - '0' - 10;
*--q = i;
} while (num = num / radix);
i = p + MAXDIG - q;
do
*p++ = *q++;
while(--i);
return(p);
}
...

Which is, of course, a digit at a time in one of the most straightforward ways imaginable. Minix’s kernel is designed for systems so resource constrained it has a separate prints() that can only handle char and char* to save overhead, so I can’t imagine it uses a sub-optimal technique.
This kind of thing really makes me wish I had learned OSes in the old death-march through the UNIX sources (or at least the old Tenenbaum book with MINIX) way; things are too complicated and opaque now. There always seems to me to be a golden age from around 1970 into the early 1990s where the modern computing abstractions were in place, but the complexity of production hardware and software hadn’t yet grown out of control.
In a related note, as a tool writer, looking at the earliest versions of cc is AMAZING. Most decent programmers should be able to work through the cc from v5 UNIX (574 lines of C for cc proper, 6454 more lines of C and 1606 of PDP-11 assembly in called parts) in a couple hours, and fairly fully understand how it all works. Sadly, (pre-3) MINIX came with a (binary only) CC made with ACK, which is fancy and portable and way, way, way harder to understand. dmr’s simple genius was just that.

Posted in Computers, Entertainment, General, School | Tagged , , | Leave a comment

Poached Eggs and Scones

Poached Eggs and Scones
Failed to work up requisite give-a-fuck this morning, had no pressing obligations until the early afternoon. Result: breakfast of poached eggs with fresh scones and a latte. In a related note, I need a better scone recipe.

Posted in FoodBlogging, Navel Gazing | Leave a comment

Gendered Costumes

I was eyeballing my bookshelf for a quick-n-dirty costume, because I putzed on doing anything interesting for Halloween, and might find myself in need of one. I came to a disturbing realization about the relative distinctiveness of male and female major characters in media I’m fond of.

Some examples:

Millennium Trilogy:
Lisbeth Salander: Black clothes, black wig/temp dye, and some costume punk jewelry. Best with a couple sheets of inkjet temporary tatoo stock for wasp and dragon. Recognizable to anyone who knows the character.
Mikael Blomkvist: No matter how hard you try, just a dude in a suit.

Lolita:
Dolores Haze: White top, white skirt, $2 heart-shaped sunglasses. Done. Plaid skirt and white button down with said glasses would work too. (Fun fact: those glasses are from the Kubrick movie, not the book.)
Humbert Humbert: Dude in a suit. (Unless you do something creative and likely to end in a public indecency charge)

Various William Gibson Pieces:
Cayce Pollard (Pattern Recognition): Black tube skirt, black bomber jacket, clunky boots. Recognizable to anyone who knows the character – Hell, major plots are based on her taste. (sidenote: you can now get a black MA-1 lookalike for less than $50, instead of $600 for the Buzz Rickson’s in the book. Rothco even makes them in long to get around the “bomber jackets look like halter tops on my frame” issue.)
Molly Millions (Neuromancer) – Silvered dollar-store sunglass lenses adhered to your eye-sockets, unpainted aluminum-can nail extensions. Done.
Henry Dorsett Case (Neuromancer): Not even a memorable physical description.
Hubertus Bigend (most recent three novels): Granted, he’s recognizable, but an International Klein Blue suit isn’t exactly easy to come by, even as fabric stock.

Ready Player One:
[Redacted for thpoilerth]

Note that this isn’t total lack of ideas: there are some excellent costumes I can think of, especially from old video games, but not many fall into the “Less than $20 in readily available parts” range that my level of give a fuck supports. It doesn’t help that Female-As-Male-Character costumes are, as a rule, cute, and Male-As-Female-Character costumes are, as a rule, creepy. When we were kids we made jokes about Halloween parties always degenerating to girls in costumes and guys in indistinct black outfits. It’s true because it’s our culture.

Pretty sure if I end up needing a costume, my laser printer, a piece of elastic, and some poster stock will be making a rage comics face happen at the last moment.

Posted in Entertainment, General | 1 Comment

RIP Dennis Richie

It’s been a bad week for computing pioneers. Steve Jobs on October 5th, and, more quietly, Dennis Richie died October 9th. We’re hearing all about Steve Jobs in the news, because he was a salesman and a showboat. We’re not hearing about Dennis Richie because he did his very best to avoid attention while he did interesting things.
He developed the C programming language, in which virtually all low level programming has been done for the last twenty some years, and from which most widely used modern languages inherit their syntactic structure. He was a major player in the development of UNIX, an operating system which has become so universal that both the vast majority of smartphones and the vast majority of supercomputers run one of it’s derivatives or descendants.
His contributions are so fundamental that they shape the nomenclature and notation we use to discuss computing, and in essence created the world I live in.

I have a copy of K&R in the home directory of all my computers, and always hoped to meet him. His wisdom and knowledge will be sorely missed, but he long ago discovered the secret to immortality: he didn’t just make things, he made things that make things, and as such he will live on through the tools he designed – tools so elegant that we’ll all, mostly unknowingly, be using them every day on every computer for as long as computers remain recognizable.
exit 0;

Posted in Computers, General | Leave a comment

Arduino Promotion Behavior

I was pulling up an old project (A little Simon game which has apparently fallen off the ‘net when I moved my site- will have to repost) to use as a classroom demonstration, and discovered that sometime in the last couple years, the int->unsigned long promotion in Ardino/Processing broke/changed without comment.

The code uses using primitive nested counters and delays to generate sounds and control difficulty, which means rather large numbers (100-microsecond scale delays running for seconds) are being thrown about. To isolate the change, I wrote the following test:
Continue reading

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