The earliest memory I have of ‘programming’ is in the early/mid 90s when my father brought home a computer from work. We could play games on it … so of course I took the spreadsheet program he used (LOTUS 123, did I date myself with that?) and tried to modify it to print out a helpful message for him. It … halfway worked? At least I could undo it so he could get back to work…

After that, I picked up programming for real in QBASIC (I still have a few of those programs lying around), got my own (junky) Linux desktop from my cousin, tried to learn VBasic (without a Windows machine), and eventually made it to high school… In college, I studied computer science and mathematics, mostly programming in Java/.NET, although with a bit of everything in the mix. A few of my oldest programming posts on this blog are from that time.

After that, on to grad school! Originally, I was going to study computational linguistics, but that fell through. Then programming languages (the school’s specialty). And finally I ended up studying censorship and computer security. That’s about where I am today!

But really, I still have a habit of doing a little bit of everything. Whatever seems interesting at the time!

Wombat IDE - The first Petite versions

I started the basic conversion to petite back on 13 January, but I finally managed to get everything working today. To start the conversion, the first thing that I did was split everything into three active projects:

  • ide - contains the GUI code and code to whatever Scheme system I use
  • launcher - contains the code to find the correct version of the IDE and launch it and also to update to the latest version(s) automatically
  • petite - contains the bindings to Petite and can actually act as a stand-alone command-line REPL

read more...


Wombat IDE - Yeah... Maybe I was crazy

So I started let today. And let me tell you (no pun intended) that is one sticky function to work with, once you get the entire family involved. You have let, let*, let-values, letrec, and named lets, along with all sorts of combinations thereof. I actually made it about 90% through all of these (just a few bugs to work out in letrec) before I realized that this was perhaps more than I actually wanted to do for the public version of Wombat.

read more...


Wombat IDE - Call me crazy...

…but I’m working on my own implementation of Scheme in Java. Don’t get me wrong, Kawa has been great for what it was, but there are just enough things that are just slightly off that I want to make the change.

Essentially, it all comes down to the fact that the autograder and other tools still run on Chez Scheme. Over the semester, there have been an increasing number of problems where the two don’t quite agree and so there has to be special cases done by hand. Optimally, I would like Wombat to have 100% compatibility with Chez Scheme (at least in the parts that the students use), but I don’t think that I’m going to be able to get there with what I’m doing. There’s already about 1000 lines of code to make them work better together and it’s only likely to get longer. At some point, I might as well just write my own Scheme. So here goes!

read more...


Wombat IDE - C211 Matrix Library

For the final exam, I’ve added a matrix API. The students are supposed to have implemented this, but we know that haven’t, so this way they can either use their version or mine.

Matrix API (Edit: The most up to date Matrix API can be found here):

read more...


Wombat IDE - A problem with characters

Previously character literals (of the form #\a, #\space, etc) were messing with automatic indentation and bracket matching (mostly, if you tried to do #\( or #\) ), but now it’s fixed.

Update to version 1.340.13 if this has been a problem.


Wombat IDE - Images are annoying sometimes

There have been two image bugs that have been bothering me for a while. Occasionally error messages will crop up showing an IndexOutOfBoundsException. I’ve fixed most of those, but I finally found a new one dealing with strange negative array indices. Some images don’t work correctly with read-image. I haven’t been able to determine why (I should be able to deal with any image that Java’s JAI can read), but I finally tracked it down to some kinds of grayscale images.

read more...


Wombat IDE - A bug fix and a timing function

First, a bug fix in leaf?. It now does what it’s actually supposed to and return #t if and only if the objust is a tree with both subtrees satisfying empty-tree?. Second, cpu-time has been redefined to only count time spent on actual processing (and not on output / Java wrapper code) while the old functionality has been renamed to the function real-time. Small and simple, but it’s still worth a new version.

read more...


Wombat IDE - Big fixes and confusion removal

A small list of bug fixes first:

  • Updated draw-tree to use ovals instead of rectangles to match the old version
  • Fix error messages with functions whose names end with ?
  • Added better error messages for division by 0, particularly for the function /
  • Removed whitespace at the ends of files and lines on save
  • Fixed automatic indentation on the first line of a file
  • Removed formatting from the undo/redo stack (as it’s automatic anyways)

read more...


Wombat IDE - Automatic updating

For a while now, we’ve been using Java Webstart to keep local copies of Wombat updated but I’ve been having issues keeping everything up to date. It doesn’t seem that I’m the only one either. So I’ve started writing my own update system, using a simple version file on the servers on campus that will automatically be fetched to verify that all of the files are up to date.

read more...