Current Paper - 25,500 words/70 references
WebSeer is the name that I branded the software that performed my web survey and maybe the work for my masters, I forget. Over the last eight years I have lived with this software that was constantly changing, never done, and never useful to anyone else. At several stable points in the past, I attempted to teach other graduate students to use it and it was too abstract to grasp. I started talking about code elegance and reflection-based visitor patterns or dataflow programming and the several people who had a vested interest in understanding couldn't use it. Some of that was lack of documentation and "getting started" type stuff. But in the end, the core problem was that I was obsessed with building frameworks as opposed to getting stuff working. My overhead on actual functionality has been generally about 90% of my effort I'd say.
So given that I only had what amounts to several days of time to work on programming this month, I chose to start as barebones as I could get, while giving some thoughts to the next logical step. As someone who has been through a lot of frameworks in my days, mostly web ones, frameworks suck. These days I usually start off looking for the bare simplest solution I can find that looks sufficiently robust and go from there. I think a lot of people already have that figured out, but it took me a while.
By the end of this week, I should have completed a fairly small and straightforward library of classes that have simple transformation methods. They input one thing and output another. Generally, we start with a URL and eventually end up with features (string->double) measurements with enough of these methods. The things that I input and output right now are
protocol buffer structures. This was useful because it avoided me having to maintain data structure classes. Since I use a bunch of different models, this would have been wasted time writing boilerplate.
So for starters, you will be able to download these simple little classes (which sometimes wrap more complex libraries) and quickly have a whole lot more Web page features than you know what to do with, incorporating textual features, tag features, and visual features. Great, simple case solved and if everything else goes to hell, something will be usable.
From there we grow from reasonable all the way up to unreasonable:
1. A demo in a browser that you type in a URL and you have a way to show the measurements that are generated. These will be uncheckable by model and feature generation function so you can filter down the list and be able to interpret the mass of features in a piece-meal manner. I can do this with a single page I think...keep it simple.
2. A way to take whatever features you've checked and download just a self-contained set of jars and a feature generator facade that will just produce those features, for running real systems. Some of the features require several libraries and often in your experiments you find that certain classes of features are just not that useful, so this will get you up and running quickly without doing any real effort.
3. Web services wrapping these little transformation functions so that they can be used from other languages. I have several ideas in mind, but haven't settled on anything. WSDL is more supported and has service addressing built in if its on top of HTTP, but I hate XML pretty intensely.
The eventual goal is to have these written in multiple languages and to have the methods and data structures exposed in a more language-unspecific documentation and implementation manner so that language doesn't have to be a barrier.