Month: December 2011

  • Proposal to Stress-Test Implementations of C++11 Concurrency

    I recently submitted a proposal to NSF’s “small” Computer Systems Research solicitation. The rest of this post contains the body of the proposal, edited a bit for formatting (citations are missing and there are no doubt some leftover latex-isms) and to remove some sections that are tedious to people not sitting on an NSF panel.…

  • What PC-lint is Really For: Enforcing Language Dialects

    John Carmack’s piece about using static analyzers is really nice, and he’s right that applying PC-lint to a significant piece of C code results in page after page of warnings. Faced with this problem on a code base I cared about, and not wanting to give up, I first created a config file for PC-lint…

  • Book Beginnings

    If a book starts out just right, I’ll keep going back and rereading the first few sentences long after I’ve finished the book. Here are a few that did that to me. Fagles’ translation of the Odyssey: Sing to me of the man, Muse, the man of twists and turns driven time and again off…

  • Bit Puzzle Results

    This is the followup piece to Monday’s bit puzzle. First off, the spec for this problem wasn’t clear what to return when both arguments are the same. But let’s look at Carlos’s comment about where this code would be used: If you think of a binary number as a sequence of binary tree decisions on the…

  • Mount Olympus

    Today I got out of Salt Lake City’s stifling inversion for a little while.

  • A Bit Puzzle

    I love a good bit-level puzzle. Today’s is one I learned about from a comment in a Google+ discussion: Given two words a and b, return the high bits that they have in common, with the highest bit where they differ set, and all remaining bits clear. So 10101 and 10011 yields 10100. Then do…

  • A Different Approach to System Security

    I enjoy it when science fiction has something useful to say about computer security. Towards the end of Iain M. Banks’ Matter, there’s a big space battle and we find this passage: “Compromised,” Hippinse told him. “Taken over by the other side. Persuaded by a sort of thought-infection.” “Does that happen a lot, sir?” “It…

  • Android Projects Retrospective

    The Android Projects class I ran this semester has finished up, with students demoing their projects last week. It was a lot of fun because: I find mobile stuff to be interesting the students were excited about mobile the students were good (and taught me a ton of stuff I didn’t know) the course had…

  • Pluggable Domain-Specific Testcase Reducers

    An important part of effective random testing is providing developers with actionable testcases, and a big part of creating actionable testcases is testcase reduction. Delta debugging, as exemplified by the delta tool, is a good generic reduction technique. However, in many cases, as I discussed the other day here, a domain-specific reducer can do a…

  • How Integers Should Work (In Systems Programming Languages)

    My last post outlined some of the possibilities for integer semantics in programming languages, and asked which option was correct. This post contains my answers. Just to be clear: I want practical solutions, but I’m not very interested by historical issues or backwards compatibility with any existing language, and particularly not with C and C++.…