Burn, baby, burn

As I type this, I’m burning my history project.

Onto a CDR, of course.

It’s not so much that the program is perfect — the Known Issues and Limitations section of the User’s Guide proves that — as it is that I was planning on turning it in this week, and I really need to spend time on other things. There’s no more heinous problems with it, the user interface is as simple and clear as I can make it, and there’s no known bugs that wouldn’t take more time than I care to invest to fix. There’s even a User’s Guide to accompany it, which is really just one page of documenting the program itself, a page of aforementioned Known Issues and Limitations, and six or seven pages describing the models and pointing some interesting things out about them, plus the glossary and bibliography. It’s almost like a fun-sized history paper (all written today) to go along with the program. As an added bonus, I appear to have concluded that Copernicus’s heliocentric model really wasn’t all that revolutionary.

Random musing on Ant: it’s nice for building things that it knows how to handle (like Java), but awful for building things that it doesn’t (like LaTeX). I know it’s ghetto, but the target in my build.xml file for building the User’s Guide just runs make on the Makefile that calls latex a bunch of times. I’m sorry, but that’s 100x easier than writing a fistful of Java class to teach Ant how to handle LaTeX.

Well, the CD’s finished burning. All that’s left is uploading the User’s Guide to my network drive so I can print it out in a computer lab tomorrow morning and turn the thing in. Plus sleep. Sleep is good.

2 Responses

  1. ant fucking sucks. It seems like they designed it for Tomcat and nothing else, and their “platform-independent” thing becomes pretty hollow as soon as you need to do any file-level operation which isn’t provided by it (such as, say, deleting or renaming files).

  2. In principle, the extra abstraction gives you both better configurability and better cross-platform support. With makefiles, you need to specify the exact commands to run, so you end up assuming features about the compiler being used; e.g., g++ and CC (Sun’s C++ compiler) use almost completely different flags once you get away from the basic -c and -o options. If you want to tweak build options, you need to edit the rules yourself. That’s part of the reason for the unholy abomination that is the GNU autotools, trying to abstract away the per-platform specifics when all you really want to do is compile a few C++ files with optimizations and debugging info. In principle, Ant lets you specify your build targets in terms like that; the local Ant configuration can then decide what compiler to use and with what options.

    In principle, at least.

    The big advantage of makefiles is how general they are; you can do *anything* with them. Running latex a few times over an input and compiling C++ code aren’t really any different in that respect: check timestamps and rebuild if necessary. Ant can’t do this (as far as I can tell) unless you write a special extension for whatever language’s files you’re working with. Way too much effort when I just want to call latex if I updated the document.

    To be fair, Ant does have operations that do file deletions, file moves, etc. If it had a make-like “if timestamp(A) > timestamp(B), do this” rule, it could be a decent alternative to make, since you’d have both approaches at your disposal.

Comments are closed.