tag:blogger.com,1999:blog-25785783247810666382024-03-14T11:50:03.512-07:00Semantic programmingUnknownnoreply@blogger.comBlogger2110125tag:blogger.com,1999:blog-2578578324781066638.post-4162717105896816162016-10-28T14:04:00.000-07:002016-10-28T14:04:06.601-07:00Project management software and scope creepProject 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 <i>will </i>manage it - the question is whether you'll manage it <i>well</i> or not), every software developer sooner or later takes a stab at building a project management tool.<br />
<br />
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.<br />
<br />
Why does it happen? A lack of semantic explicitness.<br />
<br />
Case in point - or rather, what's set me off <i>this</i> 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.<br />
<br />
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 <i>talk</i> about the proprietary space!) I find at least a dozen contenders.<br />
<br />
They all involve stack lock-in, to a greater or lesser extent, because, well, that's what syntactically specified software does.<br />
<br />
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>I promise you</i>....Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-2578578324781066638.post-8379821525328007622016-10-18T18:02:00.000-07:002016-10-18T18:02:20.966-07:00Declarative knowledge on the CPANI was struck today once again by the realization that CPAN contains a <i>lot</i> of declarative knowledge hidden inside various modules. This time it's <a href="https://metacpan.org/source/STBEY/Date-Calc-6.4/lib/Date/Calendar/Profiles.pm">Date::Calendar::Profiles</a>, 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.Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-2578578324781066638.post-7112009585404910492016-09-06T19:29:00.000-07:002016-09-06T19:29:12.512-07:00Literate programming postsHNN seems to be posting about litprog again lately.<br />
<br />
Here's one about <a href="https://web.archive.org/web/20160811193330/http://fgiasson.com/blog/index.php/2016/08/11/literate-clojure-programming-anatomy-of-a-org-mode-file/">literate Clojure</a>. [<a href="https://news.ycombinator.com/item?id=12429437">hnn</a>] Jacques mentions <a href="http://leoeditor.com/">Leo</a>, which I think I evaluated and didn't care for, once. I don't remember why.<br />
<br />
John Shipman <a href="http://johnwshipman.blogspot.com/2016/02/is-literate-programming-harmful.html">responds</a> to the notion that "literate programming [is] considered harmful" (just because you quote the greats doesn't mean your insights are great).<br />
<br />
Well, that's just two. Could be coincidence instead of enemy action. But it was enough to make me notice.Unknownnoreply@blogger.com1tag:blogger.com,1999:blog-2578578324781066638.post-19399367192028375492016-08-27T15:04:00.000-07:002016-08-27T15:04:05.690-07:00Excel and statisticsThis 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.<br />
<br />
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.<br />
<br />
But it's worse. Turns out that specifically for statistics, <a href="http://www.practicalstats.com/xlsstats/excelstats.html">Excel kind of sucks</a>. Like, wrong-answer-level sucks. The recommendation of the article in the link: use R (or some commercial statistics package).<br />
<br />
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.)<br />
<br />
There might well be such a tool already. If not, it would be fun to build it.Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-2578578324781066638.post-10811188601174710022016-07-10T13:44:00.001-07:002016-07-10T13:44:13.405-07:00Felix<a href="http://felix-lang.org/">Felix</a> 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.Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-2578578324781066638.post-26614938120238875772016-06-22T12:17:00.001-07:002016-06-22T12:18:25.047-07:00Table-oriented programmingI'm fairly sure I've seen something along these lines before, but <a href="http://www.oocities.org/tablizer/top.htm">this</a> came up on <a href="https://news.ycombinator.com/item?id=11949692">HNN</a> 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 <a href="https://news.ycombinator.com/item?id=892163">HNN</a>.)<br />
<br />
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.<br />
<br />
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.<br />
<br />
It's full of sound advice. <a href="http://www.oocities.org/tablizer/ddsamp.htm">Data dictionaries</a>, 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.<br />
<br />
Here's an interesting sort of philosophical rumination on the matter: <a href="http://www.tattvum.com/oop-oversold">OOP Oversold?</a><br />
<br />
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 <i>always</i> a great <i>help</i>) and sometimes it's more natural to think in terms of tables, or a functional language, or what have you.<br />
<br />
But they're all approximations. Like mathematics, there are myriad valid ways of looking at a given problem, and <i>they're all true</i>. 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.<br />
<br />
The only way to get around that is to have a framework as closely aligned with natural language semantics as possible. Hence Decl.<br />
<br />
Still, though. Tables. Gotta think about this.<br />
<br />
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. Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-2578578324781066638.post-80575923362369466062016-06-11T12:52:00.000-07:002016-06-11T12:54:02.633-07:00Gherkin/behat<a href="http://docs.behat.org/en/v2.5/guides/1.gherkin.html">Gherkin</a> 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.<br />
<br />
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 <i>also</i> 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.<br />
<br />
Anyway. Worth thinking about.Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-2578578324781066638.post-48328628812847060192016-05-24T20:42:00.003-07:002016-05-24T20:42:52.935-07:00Language dilettantesInteresting post on stability versus features (well, more than that: <a href="http://prog21.dadgum.com/219.html">read it</a>), referring back to an interesting attempt to quantify a number of programming languages with a <a href="https://web.archive.org/web/19970607000758/http://www.lib.uchicago.edu/keith/crisis/crisis.html">scoring system [wayback]</a><span id="goog_122115152"></span><span id="goog_122115153"></span> and the whole thing set off a pretty interesting set of <a href="https://web.archive.org/web/19970607000758/http://www.lib.uchicago.edu/keith/crisis/crisis.html">musings at HNN</a>, as per usual.Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-2578578324781066638.post-42808712859507489282016-04-28T18:06:00.000-07:002016-04-28T18:06:38.510-07:00REBOL<a href="http://www.rebol.com/rebol-intro.html">REBOL</a> (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!Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-2578578324781066638.post-9063634928795866302016-04-22T19:06:00.006-07:002016-04-22T19:06:46.200-07:00Alda: yet another music language<a href="https://github.com/alda-lang/alda">Music in Clojure</a>, apparently.Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-2578578324781066638.post-89824402956933700642016-04-22T19:05:00.003-07:002016-04-22T19:05:57.951-07:006 lesser-known Python data handling librariesThere is just a <i>lot</i> of neat stuff in Pyworld. <a href="http://jyotiska.github.io/blog/posts/python_libraries.html">Data handling</a>, for instance.Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-2578578324781066638.post-48341044903774947812016-04-22T19:04:00.003-07:002016-04-22T19:04:41.578-07:00wftk 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: <a href="https://18f.gsa.gov/2016/04/21/checklistomania-makes-it-easy-to-keep-track-of-relative-tasks/">Checklistomania</a>. [<a href="https://github.com/18F/checklistomania">github</a>][<a href="https://news.ycombinator.com/item?id=11549101">hnn</a>]<br />
<br />
As usual, I have the inchoate feeling that none of this would be a tenth as challenging in Decl. I should work on Decl.Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-2578578324781066638.post-52651127184835606272016-04-20T21:43:00.004-07:002016-04-20T21:43:58.379-07:00Programming gamesThat is, games that involve programming (including Stockfighter) - <a href="http://blog.codinghorror.com/heres-the-programming-game-you-never-asked-for/">cool post</a>.Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-2578578324781066638.post-49764835602966443572016-04-20T20:54:00.001-07:002016-04-20T20:54:25.684-07:00System design cheatsheet<a href="https://gist.github.com/vasanthk/485d1c25737e8e72759f">Interesting</a>.Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-2578578324781066638.post-17951193557651332032016-04-20T20:53:00.004-07:002016-04-20T20:53:43.547-07:00Futhark<a href="http://futhark-lang.org/">Futhark</a> 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.Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-2578578324781066638.post-76449320603056444222016-04-03T16:17:00.002-07:002016-04-03T16:17:34.021-07:00Book: Procedural Content Generation in Games<a href="http://pcgbook.com/about-the-book/">Looks interesting</a>.Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-2578578324781066638.post-67405348836249572832016-04-03T16:15:00.000-07:002016-04-03T16:15:07.700-07:00The Organized Crime and Corruption Reporting ProjectThe <a href="https://www.occrp.org/en/">OCCRP</a> is another of those data journalism efforts that make me drool. Text analysis, oooh.Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-2578578324781066638.post-5232805752733116562016-03-28T18:28:00.001-07:002016-03-28T18:28:21.638-07:00HNN thoughts on declarative specification of Excel<a href="https://news.ycombinator.com/item?id=9941086">Just a note for later</a>. 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.Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-2578578324781066638.post-31472172672636789462016-02-17T02:57:00.002-08:002016-02-17T02:57:56.883-08:00R and semantic programmingI'm reading a pretty fascinating <a href="https://news.ycombinator.com/item?id=11112763">HNN thread on R</a> 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.<br />
<br />
Worth considering, anyway.Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-2578578324781066638.post-84278927999051366762016-01-09T05:27:00.003-08:002016-01-09T05:27:57.590-08:00Automatic DifferentiationWell, this is just all kinds of cool. I hadn't realized you could <a href="http://h2.jaguarpaw.co.uk/posts/symbolic-expressions-can-be-automatically-differentiated/">calculate the differential without differentiating</a>. Just ... never occurred to me, although in retrospect it makes sense.<br />
<br />
I really want to do things with this.Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-2578578324781066638.post-22326438879953102772015-12-18T12:43:00.002-08:002016-08-27T15:10:26.160-07:00Meta postSo I've been busy. Actually, the database says I've been <i>insanely</i> 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.<br />
<br />
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.<br />
<br />
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.<br />
<br />
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.<br />
<br />
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 <i>using</i> them in the book already - as a part of literate programming, so maybe this is just added detail in that existing chapter).<br />
<br />
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 <i>that</i> 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.<br />
<br />
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.<br />
<br />
<i>Update August 2016</i>: 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 <a href="http://coffeebotting.blogspot.com/">coffee project</a> is now starting to heat up, and that's a radically different kind of work. Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-2578578324781066638.post-90260959971687945122015-12-18T12:32:00.002-08:002015-12-18T12:32:27.157-08:00Codebase as living organism<a href="http://www.meltingasphalt.com/a-codebase-is-an-organism/">Here's an interesting article</a> with a fascinating new metaphor, really two insights: (1) the machine is not the codebase and (2) the codebase can be seen as a living thing. Worth a read.Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-2578578324781066638.post-87257127430648734612015-11-13T00:56:00.001-08:002015-11-13T00:56:51.561-08:00The next CSo people are actually to the point now where the replacement of C as the ubiquitous system programming language is at least within the limits of plausibility. Here's a <a href="https://www.quora.com/Which-language-has-the-brightest-future-in-replacement-of-C-between-D-Go-and-Rust-And-Why/answer/Andrei-Alexandrescu">Quora post</a> from one of the originators of D identifying three candidates: <a href="http://dlang.org/">D</a>, <a href="https://www.rust-lang.org/">Rust</a>, and <a href="https://golang.org/">Go</a>. Each has strengths, each has weaknesses. I suspect we'll see some convergent evolution.<br />
<br />
I <i>like</i> this proliferation of languages of late. Shows the diversity of thought.Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-2578578324781066638.post-74209445818489502932015-11-13T00:53:00.000-08:002015-11-13T00:53:00.365-08:00Joke generation with Wolfram<a href="http://community.wolfram.com/groups/-/m/t/607811">Interesting.</a> Not all <i>that</i> fascinating, but any kind of computational handling of language is pretty cool.Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-2578578324781066638.post-18616258583375585232015-11-13T00:41:00.002-08:002015-11-13T00:41:22.568-08:00Parinfer and typing/understanding LispNow this is the kind of thing I love to see: <a href="http://shaunlebron.github.io/parinfer/index.html">Parinfer</a> [<a href="https://news.ycombinator.com/item?id=10547772">hnn</a>]. It uses indentation to show structure while inferring paren closure to preserve syntactic validity. You can switch back and forth between inferring parens or inferring indentation. It <i>makes sense</i>. This kind of thing is really exciting to see.Unknownnoreply@blogger.com0