Tuesday, August 30, 2011


Wow. I never heard of this before - it's good for me to work on Padre!

ORMs don't kill databases - people do

A cogent article about how wrapping your SQL in an ORM can get you quick returns - until it does something boneheaded. Better to isolate your SQL in a transparent manner like I'm planning, right? Right.


Interesting: a database of URLs/domains that have been spammed.

D3 (data-driven documents) tutorial

Coooool. [here]

NPSML: Naval Postgraduate School Machine Learning Library

Worth looking at some slow day. [docs]


Another GUI framework I've never taken the time to look at closely: Qt. What drew my attention was this blog post. I'm not the only one who wants to streamline semantics for UI descriptions.

Sunday, August 28, 2011

Padre integration

Well, Padre is really incredibly extensible - except for one thing (I'm going to have to patch my current copy); you can't add a MIME type/file extension mapping from a plugin, which is very disappointing. So here's basically what I'm doing:
  • Add .dpl => application/x-decl to EXT_MIME in Padre::MimeTypes.pm (patch)
  • Create a Padre::Plugin::Decl.pm
  • There, registered_documents can assign x-decl to Padre::Document::Decl.pm
  • Create Padre::Document::Decl.pm
The Plugin module handles general UI stuff (menus, About, special tools, etc.) while the Document module customizes the editor's behavior to suit you. I'm particularly interested in folding - but so far the documentation is really chaotic.

I've got about ten windows open on this task:
Also, I had some initial success with creating a new document class and doing some rudimentary folding in it - it was harder than hell to find documentation, though. It's scattered all around the Web. Here's some links that came in handy when dealing with folding in Scintilla/wxStyledTextControl:
  • Somewhat random access, but here is some POD for the wxScintilla control.
  • Here's some guy doing folding against Scintilla in a language I haven't even identified.
  • Otherwise, there's loads of stuff written for/about wxPython that works pretty well.

Decl integration with Padre; musings about actions

Something I haven't spent much actual development time on yet, but ... it's starting to seem that the natural working mode of Decl will be to state that an action will be necessary, then to invoke various interactive services to specify that action more specifically.

So for example, if I have an invoice to issue (yes, yes, yawn) I'd start by just stating, "invoice" and passing that to ... some kind of action-consuming agent. The agent looks at this, sees that it is underspecified, and starts a conversation with me to determine just what it is I expect to do.

Once the action is fully specified (a customer has been selected, one or more outstanding jobs selected, and so on), then I can say, "Do it", and it is done, logged, whatever.

So what interfaces are available to me? Well, let's assume I want to be able to see the structure as it is built: that structure should be in Padre. With Padre::Plugin and Padre::Document, I can do that. Really easily, actually. The documentation sucks incredibly because it's not exactly a mature environment yet - but it's a great design.

So I could easily imagine right-clicking on anything in a Decl tree and getting immediate expert tools to deal with it: set up a database, select boilerplate, etc. It should end up going really fast. I'm looking forward to exploring it.

Python Web microframework BATTLE!

Very nice comparative lineup of about ten different Python Web microframeworks.

Friday, August 26, 2011


A one-size-fits-all environment for Web application writing. It apparently subsumes the database, server, and both server-side and client-side programming into one big programming language. I'm pretty sure I've linked it before, but just in case: Opa.

It might be instructive to work out their examples in Decl.

Opa's central thesis is that polyglot programming suffers from impedance mismatches that slow down any programming effort. I guess my own Decl-based WWW::Publisher's answer to that isn't to eliminate the polyglossia, but to provide some kind of macro-based assistance to make sure your polyglossia has a solid framework to work in.


OK, so Yahoo! has a UI library, YUI, for writing AJAX applications. Which I kind of knew, but ... really it would be nice to come up with a Rosetta stone for all the myriad ways of cooking a UI.

The Strong API

Some kind of ... thing for determining degrees of relatedness between terms using ... the semantic Web? Maybe? But it does look interesting!

Karma proposal

This is an interesting proposal for karma measurement using the Sharpe ratio.

More on Twilio

Some new company/applications written on Twilio.

Usability blog


Checkers playing in 1966 and today

Peter Norvig gets scary in analyzing an article about a checkers playing program. To evaluate the program, he writes a compiler for the language used to write the program. And then debugs both the language spec and the published program.

Odd that I've never started a compilers topic before now. I guess I've just trusted other people to do it better.

Interactive diagrams

Another from the same Amit: an interactive diagram of a car's blind spots.

Game programming

Target application: Listry.com

Neat! This is from an HNN announcement. As always, I'd find it instructive to try to clone it in as few steps as possible.


Here's a Wiki of "microformats" - semantic markup for various categories of things. Interesting effort. Filed under semantic Web, I guess?

deck.js - beautiful online presentations made easy

I really like this. [here][hnn]

What would be even cooler, though, is an authoring system based on Decl that could output either deck.js or PDF. That would even be easy, really. Maybe a nice get-your-feet-wet kind of application.

Monday, August 22, 2011

PHP best practices

I should just look up PHP best practices on a regular basis, shouldn't I? Read this. Now look at #6.

#6 is advocating a manually operated macro system, which is really all that snippets are. Not that it's bad advice! But imagine tracking your snippet usage across projects, and being able to refine their usage across all projects as you (or more accurately your programming system) learned more. I want to go there.

JavaScript::Writer - quasi-declarative Javascript output

[CPAN]. An interesting approach.

Binary parsing in Javascript

Cool! Very cool!

Seriously: a binary parser domain would really be useful. Gotta do some thinking on this.

Gamification as cargo cult

But a lucrative one! [article]

Seriously: larger strategies like "Web 2.0" or "social" and now "gamification" are quite reasonable collections of patterns - but pattern without content, in this case motivational content, is an empty thing.

I need a term for "site strategy patterns" or something like that.

Your Code is my Hell: Musings on Ruby project maintenance

Interesting article looking at maintenance of Ruby-on-Rails projects and how they are likely to recapitulate their phylogeny. Which tells me really (since I like software maintenance) I should be learning Ruby on Rails as the cool kids move on to whatever the hell they rabbit off to next.

Twitter Bootstrap

A ... what? CSS boilerplate distro from Twitter to make the assembly of Webapps easier. Neat - and should be pulled in wholesale. And studied, really, because a higher-level Webapp (or app) domain should be built on top of the HTML and CSS domains I finished last month.


Language Log post from last year on spambots (or actually lack thereof). Siren song to my ears.

Deployment configuration: static site on e.g. S3

There's been a little run on the notion of publishing static sites to high-availability cloud servers that's kind of cool. Definitely a nice tool for the toolbox.
  • "High Scalability" blog (follow up!) has a strategy post to this effect with good analysis.
  • Jekyll is one such option for blogging.

Sunday, August 21, 2011

OMG! CodeMatch!

CodeMatch is apparently a search-based Eclipse plugin that seems to have organized an unknown number of small snippets into parameterized macros described by pattern-like sentences. As you code, you search for those snippets, and the code is built before your eyes.

This rocks. If it retained the pattern-level semantic information it would rock harder - I wonder if those snippets are open source? This is a service - the snippets are online in their own database and seemingly accessible only through their plugin, so it looks like the answer is no.

The "getting started" page [here] is a good textual rundown of how things work. This is an incredibly fascinating development.

Wednesday, August 17, 2011

Kind of a milestone

I have Decl templates working today. That only took over a year. There are some fiddly bits I'm still polishing, but - it's a template engine, and it has some special features that make it a good one for me (chief among them preservation of indentation: Pythonic literate programming at last). So it's a good feeling.

Tuesday, August 16, 2011

Application mining

So a developer puts 200+ hours into an app, the customer fails to pay dime one, and the developer open-sources the app. Classic! Your mission, if you choose to accept it: parse the app.

Well, except it's Ruby on Rails, which is not yet one of my targets. But still - interesting enough to bookmark.

Learning NoSQL

Good article. I should follow its advice.

Website strategy

So for a while I've put strategy kinds of things over on the startup ideas blog. And insofar as strategy regards the underlying business, that's probably a good thing. But some Website strategy is a question of proper deployment - proper design of the environment that a site is operating in. And that should be here, I think.

To that end:
  • Agiliq's quick Website checklist [part1] [part2] - part 2 has a list of other checklists.
  • A neat trick: Using Adwords to comparison test different names for a service.
OK, so especially the checklist is something that should probably be in a semantic domain. I think really the whole business-process-and-strategy domain should be a Decl domain in some way. Whatever the hell that means for the future.

And certainly some of it should be in a list of deployment patterns/boilerplate.

Requests: Pythonic HTTP

The Requests library in Python is a high-level API for HTTP. Interesting philosophy.


For some reason, the concept of polyglot programming has been popping up a lot on HNN. So here are a few links:
  • Perlis languages: languages that change your thinking about programming
  • Rosetta stone for various scripting languages (not to be confused with ... yeah)
  • Crashing into Python, a really quick overview of Python. Why did I suddenly stop programming in Python, actually? I don't recall.

Thursday, August 11, 2011


Webapp boilerplate! Rocks! Not the tech I'd choose, but it's a sweet idea. [about] [hnn]

Thursday, August 4, 2011

CLI musings

And just as my attention was drawn back towards CLIs, here's an article about why they're important. CLI = API = extensibility. (Which is not to say that some higher-level support wouldn't be welcome in a standard CLI interface, but still...)


Oh, look, another attempt to do what I'm doing. Noloh: "Not One Line Of Html". A PHP-based extension/framework/whatever.

Scripting CLIs

I got the crazy idea I should script Putty. It doesn't look amenable to scripting, so ... I had the idea of maybe doing something in Perl, and ran across Net::CLI::Interact, which looks frankly fascinating.

Web testing

There is a hugely vast array of Web testing tools, even free ones. Seriously. BadBoy is an example I can't even remember finding. Somebody oughta do a feature comparison list.

Wednesday, August 3, 2011

A reason to use IE?

Seriously - it has a COM/OLE interface. That means I can script it with Perl.

I kid you not, I never expected to have any reason at all to run IE. And now I do? What's next - Outlook?

How to use git in a larger context

Again: not strictly germane, but as this is my programming blog along with being the Semantic Programming blog, here is a git workflow for larger projects. I can't quite grok it, but that's because I'm a total git noob.

Simple Android mockup

Must ... do ... this.


This ... isn't really one of the usual subjects here, but:

A/B testing vs. bandit algorithms

I'm starting to think some kind of A/B testing should be included in WWW::Publisher - probably as some kind of more generic mechanism, of course - but along comes a new strategy, the "bandit algorithm", which is more optimal, apparently. [article] [hnn]

Shell under Wx

I really want a Perl REPL inside Decl, but in a Wx or other GUI environment, I want to be able to put it into a separate window. Until now, somehow I've managed never to be able to figure out how it's done. But there is a CPAN shell in such a Wx app. What I really want, then, is to do that, but for a generic shell. (There is also such a thing for Tk, by the way.)

In the larger scheme of things, it would be nice to be able to define the "operating environment" in some way, and pop up semantically specified things like "a shell" in a way that's appropriate to that environment. In a remote context, it could even be some kind of AJAX thing. (I know it's no longer de rigeur to call it AJAX, but hey, I'm old.)

While researching it this time, I also ran across the kitchen-sink REPL Devel::REPL, based on Moose and importing lots of stuff, and PPI, which is a Perl kind-of parser that looks pretty darned interesting.

iOS to Android: a comparison

Good overview of Android, actually.

Federal Register API

The Federal Register has an API.