Monday, July 29, 2013

APL

A recent post hit HNN waxing lyrical about the glory days of programming and including APL. The real problem with APL today is that there isn't a whole lot of open-source support for it, but it turns out it's still used (or at least some of its direct successors are still used) extensively for financial modeling at e.g. Morgan Stanley and that kind of company.  It's still a valuable skill, actually, in that industry. And since it's valuable for the masters of the universe, it's mostly supported as $100K-per-CPU site licenses, and not so much as open source.

There are exceptions:
  • J, of course, which I'd seen before. You think Perl is line noise? J looks worse to my eye.
  • OpenAPL, which only runs under Linux but is interesting nonetheless.
  • Kona is an open-source re-implementation of K, "K" presumably being intended as a successor to J. It's still line noise, but the Wiki is nice.
  • NARS2000 is an experimental successor to APL written and maintained by one of APL's authors, and runs only under Windows (or Wine).
APL is neat. For quick, concise definition of linear algebra-type problems, it still can't be beat. As with many DSLs, I think it's a mistake to try to build all the filesystem and module stuff into it directly (except insofar as it can be used to memory-map files for extremely rapid access to large data), and I certainly think it should be embedded into some kind of semantically oriented declaration and documentation system, but the fact remains that it is neat.

Exegesis

Exegesis is the practice (originally in religious study) of annotating a text with its historical or other background - currently made popular by RapGenius, a tool for composing exegeses for rap lyrics and, incidentally, other texts.

It's interesting because it treats the text as an artifact that exists in a colossal web of associations and meaning, which can at least in part be explained, commented on, and clarified.  In other words, exegesis is a way of reifying the semantic web behind a syntactic object, making it explicit.

Comments in code are a form of exegesis; textual proximity stands in for explicit linking, though, and the semantic background is in natural language and thus inaccessible to the computer (not the compiler, you understand, which only cares about the syntactic object - but any automated tools we might want to use, and any deep documentation system).

So a rich code environment (like my footnote-and-section scheme) could possibly also include some kind of explicit codification of the semantics of the code. I'm still trying to work out just what it means, but there you go.

I'd like some kind of exegesis tool for my efforts to understand propaganda anyway, so maybe it would be appropriate to build one that could be used for general purposes.

Wednesday, July 24, 2013

180 sites in 180 days

This is a fun challenge by Jennifer Dewalt - she's on day 114 as I write this.

LLVM is better than assembly

Oooh - this is a nice post on writing LLVM intermediate representation instead of assembly. It's like portable assembly, really, in a representation that optimizers can work with directly, then IR compilers can convert into assembly right on the metal.

This kind of thing makes me want to take a sabbatical.

Friday, July 19, 2013

Cello - higher-level C

Cello is a different approach to high-level C programming.

Malware stored in EXIF headers of JPEG files

This is an unexpected way of providing the payload for a malware attack...

Unix command line for data science

Here's a useful post.

Regex crossword and constraint programming

So there's this neat little Regex learning site at Regex Crossword - it's fun. I worked straight through it and enjoyed the whole thing.  (HNN quote that made me laugh: "I tried to solve these with regular expressions. Now I have two crosswords.").

This led to the realization that constraint programming is actually a fun type of puzzle - and that automating it is something that was once considered AI, but is now no-true-Scotsmanned out of the domain. One example of a solution to this kind of problem using Haskell's Regex.Genex package is here. Cool stuff!

Monday, July 8, 2013

Kapi

Some sort of framework for building PHP-based RESTful APIs, apparently. I like this for its semantic flavor.

Tangle.js

I'm just fascinated by interactive documents and how they compare to Excel and that sort of interactive dataflow management tools; Tangle.js has been around for a while but it's still incredibly cool. [hnn]