Ekeko: a Clojure Library for Meta-Programming
Ekeko is a Clojure library for querying and manipulating an Eclipse workspace. Ekeko provides support for answering program queries (e.g., "is my code bug free?" or "does my code follow the prescribed design?") as well as transforming programs (e.g., "patch my code as follows") in a declarative manner. Ekeko is meant as the successor to SOUL.
Available from the damp.ekeko GitHub repository.
Exapus: A web-based platform for exploring API usage
Exapus is a web application for exploring the usage of APIs within a single project (i.e., project-centric exploration) and across a corpus of projects (i.e., api-centric exploration) along the dimensions of where, how much and in what manner. Several metrics and visualizations are provided.
Joint work with Ralf Lämmel and Ekaterina Pek.
GASR: General-purpose Aspectual Source code Reasoner
GASR (General-purpose Aspectual Source code Reasoner) is a tool for answering user-specified questions about the structure as well as the behavior of an aspect-oriented program. Examples range from "which pointcut definitions are overridden in a subtype?" over "which pointcuts have a join point shadow in an advice?" to "can these advices be executed consecutively?". Such questions have to be specified as a logic query of which the conditions quantify over the program’s source code.
Joint work with Johan Fabry.
Available from the GASR GitHub repository.
The SOUL Program Query Language
Program queries can answer important software engineering questions ranging from "is my code bug free?" over "does my code follow the prescribed design?" to "how can my code be refactored?". SOUL is a Prolog-like language with specialized features for querying programs. SOUL itself is a long-lived team effort.
Contributions that I still maintain are:
- its support for querying the Java projects in an Eclipse workspace (i.e., the Cava library)
- its domain-specific unification procedure (which consults results from the SOOT static analysis framework)
- its support for example-driven pattern detection
- a fuzzy logic programming variant of SOUL
The above features are described in my dissertation:
More information can be found on the dedicated SOUL website.
CrimeSPOT: a language and runtime for developing active wireless sensor network applications
CrimeSPOT is a domain-specific language for programming WSN applications on top of event-driven middleware. Its node-centric features enable programming a node's interactions through declarative rules rather than event handlers. Its network-centric features support reusing code within and among WSN applications. Unique to CrimeSPOT is its support for associating application-specific semantics with events that carry sensor readings.
Joint work with Christophe Scholliers and Wouter Amerijckx.
Available from the CrimeSPOT website.
Impressive Open Source Software by PhD Students I have been AdvisingIn reverse-chronological order:
- QwalKeko by Reinout Stevens: an applicative logic meta-programming library for reasoning about fine-grained evolutions of versioned source code
Interpreter for SETL written in Scheme
In my second year at university, we were asked to write an interpreter for the SETL programming language in PLT Scheme. Although the code is no longer up to my standards, I offer it for download as SETL interpreters are sparse. You can start the interpreter by executing file "read-eval-print.scm" in PLT DrScheme (Graphical language, version 372 is the latest known to work). You can open and execute one of the included example SETL programs from within the GUI:
For my teaching activities, I needed a way to let the students draw simple graphics using the Scheme-like Pico programming language. I implemented a rudimentary (one-way) Pico-to-DrScheme bridge, thereby gaining access to all the DrScheme libraries including the drawing and turtle graphics libraries. TurtlePico is available here: turtlepico. Mandatory screenshot:
Around the year 2000 (before the demise of Be), I was an avid BeOS user. There's still some evidence floating around the web in the form of an unace and XSnow version compiled for BeOS. There's also an ancient screenshot of my desktop at the time that I still caress.
In the late nineties, every teenage programmer still wanted the world to share in the monstrosities he or she had put together overnight. As the internet started booming, silly NameOfPimpledTeenageProgrammerSoft websites were popping up everywhere on the likes of Angelfire, Lycos and Geocities. My Coensoft website was no exception. Unfortunately, by the time I wanted to erase this stain from my public record, there was already a permanent record in the Internet Wayback Archive.
In 2003, a Dutch reporter pleaded for a "Digital Vacuumcleaner" in an article [mirror]for the e-zine Breekpunt. My Coensoft site was featured as an example of an orphaned site. A quote I'm particularly fond of is the following (translated from Dutch): "Next in line: four nice and free programs, probably made by somebody named Coen." Two of the least embarrassing monstrosities from that period are the games Star Trek Shooter and QuizTris. I've put them back online in case anyone is looking for a good chuckle (as if the mirror of the site wasn't hilarious enough already).
Description from Jeh's Games: "This is a tetris variant, but before you are allowed to play you have to answer a quiz question correctly, otherwise a tetris piece will drop down and ruin your game! Great for fans of trivia and quizzes and off course for the Tetris collectors".
- Star Trek Shooter
Who needs fancy graphics when you can save starbases and navigate through Borg vessels destroying one after another?
Download Star Trek Shooter