Sunday, October 9, 2011

Startup tools

A fantastic curated list of startup tools.

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

A book! Oz is a ... neat language. Its standard interface is, sigh, Emacs. You can imagine how I like that. But hey, I really, really need to get my head into NLP, so this would be another good place to start.

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.

Test-driven Django tutorial

Does what it says on the tin.

Survey of debugging techniques

Or rather, "bug-avoidance techniques", perhaps. Good article.

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.
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

A long post (and another) by Tim Rogers on the evil brain-sucking parasite that is Sims Social and other games. Here's what would be cool:
  • Economic analyses of popular games
  • Simulations of popular games
  • Genetic algorithm to devise new ones. Hee.
Or: how to take over the world without actually working.

Stripe

A new payment gateway that looks quite promising.

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!