Sunday, October 9, 2011
Puppet vs. Chef
As deployment solutions (at least in the Ruby world) Puppet and Chef are turning out to be pretty popular. Neither jumps out at me as a really beautiful syntax, but deployment (i.e. system configuration) strikes me as a sensible thing to start analyzing, starting with Puppet and Chef. What are their commonalities? What are their differences? How interchangeable are they?
Saturday, October 8, 2011
Concurrent Constraint Programming in Oz for Natural Language Processing
XSB Prolog
XSB is an open-source, tabled (i.e. memoized) Prolog. It has a Perl binding. It would be interesting to pursue. Very interesting, actually.
HNN: what data structure does the brain use?
I didn't expect much from this thread, but it ended up chock full of interesting things to follow up.
TermL: another specification for expressing symbolic trees
No further comment, except to note that Decl support for this would be convenient.
OMeta: pattern-matching language
I'm a tad surprised I hadn't already blogged this, but OMeta is a language for expressing pattern matches. It can be embedded in Python as PyMeta. Interestingly, PyMeta includes a parser for TermL (about which see next post).
Pattern-matching a la OMeta/XSLT/what have you is definitely going to be one of the modes supported by Decl, but I still don't really grok it. So ... OMeta. For study and illumination.
One-liner music
So there's been a Thing about one-line algorithms fed into /dev/audio to create music (some pleasing, some not) [js in-browser equivalent].
It would be cool to do some kind of social evolutionary variant of the JS one. If only to provide a convenient way to tag your favorites, you know?
Linear regression and linear algebra
OK, OK, I shouldn't be so excited about this, but my machine learning class hasn't even started and I'm already grooving on the preparation parts. Including linear regression and linear algebra.
- Linear regression in financial analysis [investopedia] - this is magic to a lot of people.
- Linear algebra is nearly universally based on BLAS: the Fortran-written Basic Linear Algebra Subprograms.
- Here's a textbook on elementary linear algebra.
- ATLAS is a library for linear algebra built on top of BLAS.
- And in general this all leads into numerical linear algebra.
So, yeah, that's all a valuable domain. I could particularly see a code generator writing literate programs to solve linear algebra problems, then running them in a separate process. This is the kind of thing I want to get into.
Monday, October 3, 2011
E-discovery
This is exactly what I want to do: mechanical discovery of facts and structure from large collections of documents. The New York Times has an article.
That article mentions the Enron corpus, the collection of emails collected - and then published - by the Justice Department. There are various versions here and there, including one from the EDRM organization (Electronic Discovery Reference Model). That organization deserves a closer look.
Saturday, October 1, 2011
OpenMath
OK, I have to admit, OpenMath is really cool. Here's the list of software and tools that work with it - all pretty thin, actually, but their heart's in the right place. This is exactly what I was looking for. It's always such a relief to find somebody else has done the work already!
Note from the software-and-tools page: there's an OpenMath-to-LaTeX translator (apparently written in Perl, no less!) that ... well, it does what I was discussing earlier today. So very cool. (Update: it was written in 2000 and is therefore not at all OO, but it's unencumbered and built on a rather slick modular architecture, so I've asked the author if I could polish it up [rewrite it] and put it on CPAN. Very, very slick.)
So here's the plan, more or less:
- XML, binary, and Declarative versions of representation
- LaTeX output
- Octave output and manipulation and parsing back in
- Some kind of overarching systems description a la "semantic Excel"
- Some kind of graphical presentation as active areas a la Equation Editor (but better)
I'm this close to being able to put together that stylus-to-LaTeX math manipulation tool I was thinking about in the 90's, just by using off-the-shelf components. I need a tablet. I badly need a tablet.
Visual Modeling and Programming with Graph Transformations
Dorothea Blostein at the University of Queensland is really into some very cool stuff. (Ran across her at the link from the previous post - she's working in knowledge representation.)
Graph transformation languages look really neat. She's written a book. It's in pieces of PDF on her site, so I should download them - but I don't really have an effective way to organize downloaded PDFs and papers yet, so instead I've just linked to her page, above.
Math
Ah, math, my old nemesis.
Necessarily, a machine learning class uses math (which is one of the reasons I'm taking it) and so I'm thinking about How People Think About Math. This would be a good thing to work on anyway - someday I really hope to get back to that Hofstadterian AI research track - and so here I am, thinking.
Here, by the way, are some neat Javascript tools for learning and working with math. One spinoff of all this is that I'd like to do something that generates things like this - kind of like a big Javascript Excel generator. That's something I've wanted to do for a long time, actually. So we'll see how well I do on that subgoal.
But the larger goal is this: when working with mathematical functions, we typically have a boatload of different representations floating around. Typesetting is done in TeX, of course, but there also has to be a more semantically-oriented form that's useful for tossing to Mathematica/Maple/Octave/whatever the heck you're using (and that includes expressing it as Python or C or Perl).
But the key is this: underlying all that, there is a semantic structure that is the actual equation or expression. That is what I want to approach. And in fact it's an area of active research (of course) - most of which is behind paywalls. Thanks, Springer-Verlag! But searching on names still turns up fascinating links [OMDoc]. If I only had all the time in the world, I could start reading arbitrary numbers of interesting papers. (I'm actually more interested in building a research tool to support the reading of arbitrary numbers of interesting papers in a more efficient manner. But that's a story for another day.)
As far as I can tell in half an hour's search, the state of the art for representing mathematical semantic structures appears to be MathML or something more or less like it. Yeah, XML as serialization, which makes my eyelid twitch, but hey, there you go.
I'll get further into this as the class progresses, of that I'm sure.
Update: OpenMath is the thing I'm looking for.
Gamification
Notificon
A JavaScript tool to permit a page's favicon to include two characters of indication. Very neat!
What would be neater: a tagging system that was semantic in some way, to permit the functionality-based indexing of this kind of component.
Spambot combat
Here's an article with some very nice techniques for building more spamproof submission forms. Tl;dr:
- Timestamp: don't allow a long period between reading and posting. (I had mixed success with this way back when.)
- Hash: check the IP, timestamp, post # - prevents playback attacks.
- Randomized field names.
- Honeypot fields: invisible (not hidden) fields that, if filled in, are a spam indicator.
The author of the post uses these and only these to block spam - no content-based filters at all. That's cool.
As you know, Bob, I have long wanted to produce a workflow system of sorts that would include spam content filters; form generation is something I hadn't even considered - but it's a great idea. So ... keep this in mind.
Learning algorithms
Here's a nice presentation about (1) learning to program, (2) why algorithms matter, (3) a lot of maze algorithms, and (4) how a general algorithmic approach can often generate better solutions.
Nice stuff. Also, the final slide generates mazes using different algorithms. Neat!
Subscribe to:
Posts (Atom)