parseerror.com
  • i've been hearing about llvm here and there for the past couple of years, but never really took a look. i figured it was immature and not a serious contender to gcc. but recently i started poking around clang, the C/C++/ObjC frontend.

    the llvm architecture is really nice! everything is lib-ized with well-defined interfaces. you can mix and match parts of the project; so if you wanted to write a tool to analyze C, or generate documentation, or generate tests you wouldn't need to write a whole parser, you could just use theirs. this interests me because that's what I'm interested in doing. the code seems very simple and hackable, unlike GCC which is (more mature, but) monstrous and unapproachable. i've never been a fan of C++, but i think i'll pick it up for the sake of playing with llvm.

    • LLVM Programmer's Manual
    • LLVM Coding Standards
    • GDB: automatically upcast an object for dumping purposes: set print object on
    • GDB doesn't parse C++ namespace::class names correctly in casts, you need to use single quotes... (gdb) p TD->getSemanticDC()->FirstDecl $30 = (clang::RecordDecl *) 0x9452dc0 (gdb) p (clang::RecordDecl *) 0x9452dc0 A syntax error in expression, near `) 0x9452dc0'. (gdb) p ('clang::RecordDecl' *) 0x9452dc0 $31 = (clang::RecordDecl *) 0x9452dc0
    • OS X commands
    • wow, compiling/linking llvm is pretty computationally brutal. i've been trying every machine i have access to and none of them handle it that well :/
    • it's the linking of the debug executable that is so brutal; ld is taking up hundreds of MB of RAM to link together the 150 MB statically-compiled clang-cc, and writing it out to disk everytime is the killer. so even after i change one line of code, it gets relinked again from scratch. there's got to be a better way.
    • Well, i installed XCode on OS X and i have to say i was stunningly disappointed. it was more like notepad than Visual Studio. back to vim.
    • oh yeah, and iTerm sucks too.
  • The Locality of Code Changes
  • Regular Expression Matching Can Be Simple And Fast (but is slow in Java, Perl, PHP, Python, Ruby, ...). I've been reading this and re-reading this a couple of times. The technique is so simple and powerful I have trouble wrapping my head around it.
  • Examples of mutally recursive types, data and functions in Ocaml. Just what I need.
  • Software idea: A graphing library based on Visual Display of Quantitative Information.
  • structural regexps
  • Software idea: Security spider. Traverse publicly available codebases via public CVS/Subversion/Git/Mercurial repositories and dev sites like sourceforge, freshmeat, github, etc. Scan software for potential bugs.
    • Software idea: Along the same lines, how about a machine-learning system that learns about software patterns by analyzing the diffs from project code histories and applying what it learns to project HEADs?
  • I've been thinking about software development lately. I've been on what seems like a convergence recently of a few different concepts — many based on limitation.
  • Intelligent rant against XML
  • Idea: music generator program. Seems like it wouldn't be too hard to randomly mutate a song from an assortment of clips, based on a few general rules. Some basic input from the user could direct it: faster/slower, this is good/this sucks, etc.

    A slightly different bent would be a program containing a "standard library" of clips; a service would store/transfer "songs", which would just be the instructions in order to combine the shared library clips to recreate the author's song.

    You could then take that idea and "tag" each of the library clips, or any combination of them with emotive/audio descriptors like "agressive", "harsh", "sad". Then songs could be generated/selected based on the listener's current mood.

    Damn.

  • What do the symbols mean?
  • ASCII Text Generator. Man, that's handy. Sort of a web-based figlet. All respectable software projects require a logo that displays well on a line printer.
  • Saw "Dimming the Sun", a NOVA documentary on Global dimming
  • A Comparison of Solaris, Linux and FreeBSD Kernels
  • How to use hints in Oracle sql for performance
  • Got my first github pull request. git and github made merging in someone else's changes really easy. Who knows, this whole cooperative software development thing might just pan out.
  • On μ-Kernel Construction
  • L4Linux : an active port of Linux to the L4 microkernel architecture. sounds interesting.
  • 2009-05-20 I got an Op-Ed piece about bike commuting published in today's Hartford Courant.
  • rafb's pastebin site has been shut down, sad to see it go. used it for years.
  • erlang irc bot in ~50 lines of code. i started playing with this.
  • "Debugging is twice as hard as writing the code in the first place. Therefore, if you write the code as cleverly as possible, you are, by definition, not smart enough to debug it." — Brian Kernighan
  • You didn't ask for it, but it's finally here. I've been meaning to write a stupid Slashdot Headline Generator for years, and I finally lacked the ingenuity to do anything better. It isn't very interesting, but very occasionally it generates something mildly amusing... just like Slashdot!
  • East Coast Greenway
  • Smalltalk is a specification for a beautiful dynamic language and runtime environment; it's too bad it isn't more popular.
    • Ruby is a popular dynamic language heavily influenced by Smalltalk. Ruby's design contains some really nice ideas, but sadly, the implementation and management of the virtual machine, the packaging system and some of the flagship software is a mess, with baffling versioning, unreliable compatibility and frustrating pathalogical behavior.
  • March of the Terminators
  • Germany imagines suburbs without cars
  • 2009-05-10 Biked the CT coast to Manhattan with folks from Elm City Cycling. Never ridden in a group before, was a lot more fun than riding alone. Everyone was really friendly. The trip was lots of fun, pretty scenery and the traffic wasn't bad. Biking around Manhattan was so easy and natural; it was fun being faster than the cars for once.
  • 2009-05-08 I commute to work via train and bike. At least, I try to. The Metro North railroad recently changed their bicycle policy and it's making life harder for bike commuters. I wrote an article about it, have a read:

    • As of May 3, 2009 the Metro-North railroad policy regarding on-board bicycles was changed, ostensibly permitting greater access. As an MTA customer who has been commuting by train and bicycle daily for a year I can say that the new policy makes things worse, not better. Today on the 6:01PM Fairfield to Grand Central I saw two cyclists ejected from the train, one of whom I know commutes daily. He was one stop short of his destination, and the train was not full... read more >>

    If you think Metro-North should actually encourage bike commuting please contact the MTA and say so.

  • After Midnight
  • People get backslash (\) and forward slash (/) confused a lot, so I made this backslash/forwardslash reminder graphic
  • Making complex, far-off predictions is a narcissistic and futile exercise, so here goes: Brave News World
  • Livable streets
  • Your Commuting Costs By Car Vs. Train
  • I'd realized years ago how horrible of a language php is. But amazingly, php just gets worse. For example, they manage to easily temper the good news of the addition of long-overdue namespaces with the ludicrous use of the '\' character to separate them, when every other language in the Universe uses '.' (This.Makes.Perfect.Sense vs. What\Were\They\Thinking). Today a member of #php ran across another horrific misfeature; a reasonable attempt at string concatenation from a newbie programmer:

    "a" + "b"

    This code works well in java, javascript, C# and other languages, resulting in a string "ab". but in php it does the worst possible thing:

    var_dump("a" + "b"); int(0)

    It happily converts the two strings into integer 0 and adds them, destroying all data in the non-numeric strings with no warnings whatsoever. This is particularly painful because the + operator is a common string concatenator in other languages.
  • 2009-05-03 Spent some serious, quality time doing some bicycle maintenance this weekend. It was fun. I'm proud to say that everything I removed eventually made its way back on (except for the crappy plastic fenders and enormous amounts of grit and grease stuck under my fingernails, of course).

    I've been watching the excellent bicycle tutor videos and referring to my bicycle maintenence guide and am getting more confident about doing simple bike maintenance/cleaning. I'd love to be more self-sufficient; it's definitely in keeping with getting rid of my car in the first place. It's funny; like everything else bicycles are both simple and complex — fundamentally they're just a frame, wheels, handlebar, seat and drivetrain, but the details are so much more than that... each of the afore-mentioned components are just the required parts; modern bikes have lots of extra parts as well, and for every single component there are at least 3 major variants each containing a whole spectrum of options. And of course, there are interdependencies and incompatibilities, and each one has different tools.

  • google H1N1 swine flu map
  • Use rtorrent like a pro. I'm participating in the Ubuntu 9.04 release torrent; trying to upload as much as possible. I love how BitTorrent has the property that the more popular a file is the faster it is to download it. Genius.
  • []
    An EEE PC sitting on a laptop's lap.
    2009-04-21 I got my EEE PC in the mail last night. Apparently you can buy them with Linux pre-installed, but newegg didn't have any of those available, so mine had Windows XP. I installed Ubuntu Netbook Remix via a usb stick, and I must say, I am extremely impressed with it. An attractive simple, uncluttered, effective GUI on top, tailored for the modest but acceptable 1024x600 native resolution, with a proper Debian Linux system running underneath: firefox + extensions, dev tools, music and video software, everything one could want.

    The machine itself has a nice form factor, is light but seems relatively sturdy. The keyboard is (very) cramped, but I managed; and the machine made an acceptable desktop when augmented with external screen and keyboard.

      • Argh, the secondary flash drive on my EEE PC is dying. Read errors from many of the blocks; it is unusable. Need to return.
      • Had to go through EEE PC manufacturer to get RMA, wasn't too hard. Submitted it.
      • Getting functional EEE PC back soon. Hope it works.
  • older stuff is in the archive...