Fun Stuff

I’ve been doing some random hacking recently in my free time — stuff to get my mind off of the mad gcj bug fixing for F7. Mostly Emacs stuff at the moment, packaging up my recent hacks and posting them to gnu-emacs-sources. But, I’ve also done a bit of javascript hacking; I wanted to write a web app, just to see what it is like (I’ll post more on that when it is really ready). Anyway, I ran across some fun things that are worth looking at.

For Emacs, check out RLX, a Rogue-like game written in Emacs Lisp. Super wacky! I’ve only looked at the screenies though, not actually tried it… :(

At FOSDEM I kept telling people I was going to write Space Invaders in Emacs Lisp, using the image support, and perhaps having the invaders be actual (fontified) space characters. Well, dammit, someone else got there first — in 1989, no less.

If you want to improve your Emacs experience and have some time to burn, the Emacs Wiki is great; there’s all kinds of useful info, elisp code, etc, in there.

For Javascript, I found a clone of MS Paint written as a web app. Maybe everybody out there has heard of this already? I’m so not-web-focused that I didn’t realize this was even possible.

Chris Blizzard (who I owe some email) pointed out jitblit to me. That’s pretty cool and it reminds me of what Apple is doing with LLVM and OpenGL. We’ll see more of this sort of specialized use of JITs now that they are becoming more common, generic, and library-ized.

I spent a little time looking at Elsa, a parser for C and C++. It seems nicely documented — much better than GCC. But, unfortunately, it doesn’t look like a solid way to start my incremental compilation project. For one thing the parser, according to the documentation is missing most error checks, and mostly assumes your code is valid. This is fine for analysis but not for production.


  • Wow — the guy who wrote RLX is doing a lot of awesome stuff.

    I don’t have a clear idea on what jitblit is yet, but I wish I did. Let me know if you’re able to describe it well. :)

  • Yeah, I was amazed by that RLX screenshot, and he is also working on other cool stuff.

    I’ve been looking at the various “wiki-ish” modes, like org, planner, muse… but I really just want something pretty dumb — basically an Emacs-y replacement for the Gnome sticky notes applet.

    My understanding of jitblit is that they have a problem where there are decisions at many layers, which are interchangeable, but where certain paths are very frequent. E.g., you could render to any number of different surfaces, but for a given rendering “job” the path is actually fixed, and only a given output format will be used. So, perhaps you can render more quickly by jitting and making direct calls, rather than paying the cost of conditionals or virtual functions or whatever.

    But I admit my understanding is vague since I am not really familiar with cairo.

  • Tom, error checking could always be added later. The only reason it’s not complete in elsa atm is due to lack of time. One could still use it to write an incremental compiler and then add more type checking later. Elsa is unfinished, but it is not a typical hacky single purpose C++ parser.
    Worse than incomplete type checking – since it’s unrelated project to GCC, it wont parse all of the code that GCC will accept.However just like the type checking it would probably be fairly straight-forward to finish up unimplemented parts.
    I’d be happy to see another compiler appear based on Elsa as it would be nice to have alternative C++ compilers (say ones that integrate into your text editor easily like ejc) and it would help Elsa to have an actual compiler rely on it.

  • Taras –

    Yeah, I agree, ELSA is not hacky. I’m always impressed by projects that put this much effort into documentation; I think it speaks to a commitment to quality.

    As to a project to make g++ incremental… while painful it is probably best to start with the existing g++, in order to maintain compatibility. A decision that, perhaps, I’ll regret later :-)

Join the Discussion

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>