Project management is just one of those areas I keep coming back to, from a semantic standpoint. Since it's by definition a tool that every software development project must use (to paraphrase a financial management book I once read, if you have a project, you will manage it - the question is whether you'll manage it well or not), every software developer sooner or later takes a stab at building a project management tool.
As a result, the space is cluttered with three million solutions, all of which do more or less the same thing but expand out to include every aspect of life within an organization. This is scope creep.
Why does it happen? A lack of semantic explicitness.
Case in point - or rather, what's set me off this time: my son is doing a self-study course of AP Macroeconomics. To finish it by the time the AP exam rolls around in May, we have to make a schedule. And as I was doing that by hand with a calendar, of course, I thought: I should be doing this in Perl.
But you know what? CPAN doesn't really have anything that does that. And when I go off to find general project management tools in the open-source space (let's not even talk about the proprietary space!) I find at least a dozen contenders.
They all involve stack lock-in, to a greater or lesser extent, because, well, that's what syntactically specified software does.
And yet we all know roughly what's meant by project management. That is an area rife for a semantic approach. Sadly (or, well, it's not really sad) all my free-time development cycles are taken up by robotics these days. So this might have to stay on the back burner for another few years. But eventually I promise you....
Friday, October 28, 2016
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.
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.
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
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.
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/behat
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.
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
Friday, April 22, 2016
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.
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
Sunday, April 3, 2016
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.
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.
I really want to do things with this.
Subscribe to:
Posts (Atom)