Tuesday, October 18, 2016

Declarative knowledge on the CPAN

I was struck today once again by the realization that CPAN contains a lot of declarative knowledge hidden inside various modules. This time it's Date::Calendar::Profiles, which contains a great deal of information about holidays around the world. A CPAN module is probably not the best place to maintain that stuff, but there it is.

Tuesday, September 6, 2016

Literate programming posts

HNN seems to be posting about litprog again lately.

Here's one about literate Clojure. [hnn] Jacques mentions Leo, which I think I evaluated and didn't care for, once. I don't remember why.

John Shipman responds to the notion that "literate programming [is] considered harmful" (just because you quote the greats doesn't mean your insights are great).

Well, that's just two. Could be coincidence instead of enemy action. But it was enough to make me notice.

Saturday, August 27, 2016

Excel and statistics

This spring I worked through an entire statistics class in Excel (well, mostly in Excel). This is mostly because I somehow never actually learned any statistics in college and still have to understand the concepts for translation, but also partly because I've done some other math-oriented stuff in Excel and wanted to learn more about that.

Here's the thing: like many Microsoft tools, Excel can be incredibly powerful - as long as you're using it the way its designers conceived. Go off the reservation and abruptly things get very difficult.

But it's worse. Turns out that specifically for statistics, Excel kind of sucks. Like, wrong-answer-level sucks. The recommendation of the article in the link: use R (or some commercial statistics package).

So here's an interesting idea: wouldn't it be interesting to build a spreadsheet tool that translates to R behind the scenes? Plus has somewhat better handling of tabular data? (That part drives me crazy in Excel: I have to know the shape of my data in advance.)

There might well be such a tool already. If not, it would be fun to build it.

Sunday, July 10, 2016


Felix is a high-level compiled scripting language with a kitchen-sink approach that appeals to me. It kind of feels something like what I'm fumbling towards in the machine end of Decl.

Wednesday, June 22, 2016

Table-oriented programming

I'm fairly sure I've seen something along these lines before, but this came up on HNN this week and piqued my interest. (As usual, the "this reminds me of...." comments are a treasure trove of fascination.) (Also, it's not the first time it's been on HNN.)

So the idea is essentially that collections are poorly handled in ... basically all existing languages, including SQL. And you know, that's entirely true. But since Decl has essentially made tables a first-class object in the language (I mean, I just keep running into them, you know?) maybe it would behoove me to think more deeply on the whole issue.

This site is moribund - in fact, archived off GeoCities - but I should archive it to a project directory and see if I can distill out a few good principles to bake into Decl.

It's full of sound advice. Data dictionaries, for example - that's something that keeps cropping up in my notes, and has for years. Anyway, the author seems to have been a prolific opponent of OO programming on Usenet, and frankly not terribly well-regarded, but many of the ideas here are quite sound.

Here's an interesting sort of philosophical rumination on the matter: OOP Oversold?

My thoughts: essentially, any single way of approaching the problem of organizing software is just a view onto the semantic content. Sometimes OOP will be a great help (well - it's basically always a great help) and sometimes it's more natural to think in terms of tables, or a functional language, or what have you.

But they're all approximations. Like mathematics, there are myriad valid ways of looking at a given problem, and they're all true. Forcing your expression into a single paradigm will basically always fail, because there will be some meaning that has to be ignored in order to fit the framework.

The only way to get around that is to have a framework as closely aligned with natural language semantics as possible. Hence Decl.

Still, though. Tables. Gotta think about this.

Oh! Also, people keep mentioning Lua when talking about tables. A really quick Google doesn't tell me much about why (except that Lua calls its hashes tables), but some more in-depth investigation would probably be a good idea.

Saturday, June 11, 2016


Gherkin is a language used for "behavior-driven development", in which a restricted subset of English (or some other natural language) is used to describe the behavior of some software. Behat then tests it using a domain model, which I find interesting. It's part of the PHP ecosystem.

The idea is that you've got a description of usage scenarios that you can agree on with non-technical users. I think that's pretty cool. But also you've got a higher-level description of the program, which arguably is something the programming system should use and/or have access to. The descriptions there are clues to the semantic domains you're interacting with, so analysis of them should result in a reasonable semantic model of the program.

Anyway. Worth thinking about.

Tuesday, May 24, 2016

Language dilettantes

Interesting post on stability versus features (well, more than that: read it), referring back to an interesting attempt to quantify a number of programming languages with a scoring system [wayback] and the whole thing set off a pretty interesting set of musings at HNN, as per usual.

Thursday, April 28, 2016


REBOL (Relative Expression Based Object Language, an acronym that somehow evokes the TARDIS to me) seems to be a language that has a lot of the semantic aspirations that Decl does. Interesting!

Friday, April 22, 2016

Alda: yet another music language

Music in Clojure, apparently.

6 lesser-known Python data handling libraries

There is just a lot of neat stuff in Pyworld. Data handling, for instance.

wftk again?

So here's a neat little checklist management system that sure looks a lot like the original goals for the wftk back in 2000: Checklistomania. [github][hnn]

As usual, I have the inchoate feeling that none of this would be a tenth as challenging in Decl. I should work on Decl.

Wednesday, April 20, 2016

Programming games

That is, games that involve programming (including Stockfighter) - cool post.

System design cheatsheet



Futhark is a special-purpose language for specifying GPU operations that can then be embedded in a driver program running on the regular CPU. This is really pretty cool.

Sunday, April 3, 2016

Book: Procedural Content Generation in Games

Looks interesting.

The Organized Crime and Corruption Reporting Project

The OCCRP is another of those data journalism efforts that make me drool. Text analysis, oooh.

Monday, March 28, 2016

HNN thoughts on declarative specification of Excel

Just a note for later. I've been using a lot of Excel lately - it's a great tool, as far as it goes, but when you reach its limits, you've just plain reached them. There are some interesting points made in this HNN thread, some of which I'll enumerate at a later date.

Wednesday, February 17, 2016

R and semantic programming

I'm reading a pretty fascinating HNN thread on R today. I haven't worked a lot with the R/Matlab/Octave types of languages (my daughter has, and I've helped her debug things, but I don't really know what I'm doing with them). It seems that a semantic approach, kind of layering type inference onto an editor or something, might be really interesting here.

Worth considering, anyway.

Saturday, January 9, 2016

Automatic Differentiation

Well, this is just all kinds of cool. I hadn't realized you could calculate the differential without differentiating. Just ... never occurred to me, although in retrospect it makes sense.

I really want to do things with this.

Friday, December 18, 2015

Meta post

So I've been busy. Actually, the database says I've been insanely busy with paying work this year, by far my record year since I've been doing translation. As the year winds down and we move into January, I hope to get back to coding in earnest.

I've been looking at Stockfighter as a testbed for some of these Decl notions - in the sense that doing programming forces me to evaluate directions in the tools. For example, right off the bat I want to write a Perl API wrapper for convenience, and I'm doing that in a (quasi) literate manner using Decl syntax. The syntax stuff is pretty solid already; nodal access is still kind of primitive but it's just this kind of task that helps improve things like that. Most of what I'm doing can roll back into the Decl core as a whole, because it's all stuff like mapping and text generation.

I'm looking at TXL again to get a mental handle on tree transformations, and thinking of working through its tutorial examples, then translating them into a Decl context. TXL works from general languages to generate its internal syntax trees, and of course Decl basically starts from the syntax tree already, but the problem space that TXL was designed to work with is one of the things I think Decl should address.

Editing has also been on my mind again; I'm thinking of adapting Wx::StyledText to work with Decl in a native manner. It would be quite useful for debugging to be able to pop up a Decl text in a window any time I liked, especially once mapping starts to work.

I think I have a good handle on what needs to go into the Decl core, and a decent presentation framework for it as a book/tutorial/cookbook series. That seems pretty tasty. Although now I think maps are going to have to go in there, and they weren't yet (even though I was actually using them in the book already - as a part of literate programming, so maybe this is just added detail in that existing chapter).

I'm very close to being able to do a filesystem domain, and once I've got a handle on that, project management will be nearly trivial. And that means I can get back into NLP for real, because I'll have the framework in place to use it in the day-to-day in meaningful ways. That should pay off pretty well.

So that's kind of the rough situation here at the end of 2015. I've done some pretty solid work this year, even with the sad necessity to earn all that money. And I really think 2016 is where things are going to start to heterodyne.

Update August 2016: So instead we decided to leave Budapest and return to Puerto Rico by way of Bloomington. The result: no heterodynage. Maybe now that things are settling down and we have a new house in Puerto Rico. Of course, the coffee project is now starting to heat up, and that's a radically different kind of work.