ugh that sounds nasty. I glanced once at the site generator landscape and ran away screaming. I was hoping maybe something usable had emerged but... at least this one doesn't seem to be it.

@natecull @teleclimber silly question, but do you have preferences for config/markup/template/query/data/metadata formats?

@natecull @teleclimber plenty of opportunity to fuck up outside of choices for those, but i am curious , some people get pretty fussy about it.

@zensaiyuki @teleclimber

I don't actually much like any current markup/query/config formats, which is why I've been trying to brew my own (slightly extended Lisp S-expressions).

My problem with most markup formats is that they start out thinking 'oh it's okay, don't sweat the syntax, nobody will ever need to do $BIG_THING in it' and always, always, sometimes within six months, they have to do $BIG_THING in it.

Every markup format becomes a Turing-complete programming language. Law of nature.

But is turing completeness a real problem here? What if your static site generator does not terminate? It's not like it affects the actual "runtime" (people visiting the result), and you can do a lot of stuff more cleanly with a proper programming language.
Of course, a compiler not terminating is bad, but here we're talking more about libraries to build your own custom compiler, which does not need to be held to the same high standards.
@zensaiyuki @teleclimber

@fgaz @natecull @teleclimber the problem comes from the sorta stuff the blog post is complaining about. sooner or later complexity is going to seep in somewhere, and it’s a choice about where you put that complexity. the filesystem, and subtleties in naming are the wrong choice. similar problems would arise from starting with a “simple” non turing complete markup/templating language and trying to force it to do something outside the original usecases that it wasn’t designed for

@fgaz @natecull @teleclimber a good example is the mustache templating language. really great for most things. but then you need a simple way of feeding in an array and getting a numbered list. or you just want to print out the keys and values of an object and it doesn’t provide a way to print keys. or you need to show a different bit of content depending on the contents of a value. mustache can’t do any of that, so you either put more logic in code outside of mustache, or you make handlebars

@fgaz @natecull @teleclimber and before you know it, handlebars 5.0 is a full featured programming language

@fgaz @natecull @teleclimber (i heart mustache and handlebars, but its limitations make a good example)

or you get fed up with the limitations of mustache and we just promiscuously mix html and javascript like people do with react.js. just mix all that shit together. the circle is complete.

@fgaz @natecull @teleclimber we’re now to the point where people are noticing how much of a pain it is to individually feed bits of configuration to each react component and are reinventing CSS but as a janky javascript framework that reads theme variables from a json file.

@fgaz @natecull @teleclimber of course this all leads to Gall’s Law, and its corrolary, Greenspun’s Tenth Rule

@fgaz @natecull @teleclimber i found this one: “Tesler’s Law” or “the law of conservation of complexity”, every system has an irreducible level of complexity, and the only choice is where to put it: on the users, the application developers or the platform developers.

@zensaiyuki @fgaz @teleclimber

I feel like there's maybe a rider to this:

if you divide a system into modules such that the complexity is in the correct modules, overall system complexity lowers. If you put the complexity in the wrong modules, overall system complexity rises (potentially exponentially if you got the module divisions super wrong).

ergo you can tell if you've decomposed a system correctly by how much non-essential complexity the system as a whole has.

@zensaiyuki @fgaz @teleclimber

this is a rule I just now made up so I have no idea if it holds in real life

@natecull @fgaz @teleclimber i recently read a thing that outlined a way to spotcheck the complexity of a system by expressing lines of communication between modules as a graph. the goal is you want the graph to be representable in 2D without any of the edges crossing over each other.

@zensaiyuki Meanwhile in the industry, your legacy system module connection diagram looks like a circle network diagram of Metcalfe's Law.


@natecull @teleclimber @fgaz

@clacke @natecull @teleclimber @fgaz i’ve decided the worst possible outcome is projects like TiddlyWiki and Twine who appear to have not decided where to put the complexity by assuming anyone using their software is all 3: a user, an application develooer and a platform developer- and so to even use twine, or tiddlywiki, you must first know html, css, javascript, plus whatever wiki language, and all the details of how twine and tiddlywiki are implemented.

@zensaiyuki @clacke @teleclimber @fgaz

Darn, Twine too? I thought that was aimed at newbies.

I guess that's why I kinda like p5js, it's somewhat simple. Ish. it's still javascript though and to do text output, you still have to know about the DOM, which I don't really want to.

@natecull @clacke @teleclimber @fgaz i thought it was aimed at newbies too. but then I tried to use it and the first decision it asks me to make is which “skin” do i want, which sounds like i am picking a color scheme but actually includes the wiki dialect and which features are available. anything beyond plain text, including just an ordinary image, i needed to edit html to add in.

that’s the impression i got from the documentation which seemed to assume it was talking to twine devs

@natecull @clacke @teleclimber @fgaz i cannot for the life of me work out how it got a reputation for being newbie friendly.

@natecull @clacke @teleclimber @fgaz and you have to decide up front, projects aren’t convertable from one skin to another, you gotta start over, and learn the different wiki language.

@natecull @clacke @teleclimber @fgaz i got the impression that maybe it was twine 1 that was newbie friendly. when i looked at it, only early versions of twine 2 were available, and i couldn’t find a download link for twine 1. this was years ago so maybe they fixed it.

@natecull @clacke @teleclimber @fgaz so i just found and tried twine 1: muuuuch simpler. looks like it accidentally the whole turing

@natecull @clacke @teleclimber @fgaz i mean, even here. one thing I know for sure is that the pervasive notion that learning *any* wiki language, including markdown, is in any way “newbie friendly” is nonsense. the vast majority of people flee at the first sight of an angle bracket. it’s curiously difficult for developers to grasp this, to them wiki formats are easy.

@natecull @clacke @teleclimber @fgaz the fact that twine lets you add custom javascript and css is maybe nice for ultra power users but to me it seems like it defeats the whole point. if i am writing my own custom javascript/ css, what do i need twine for?

Sign in to participate in the conversation

Server run by the main developers of the project 🐘 It is not focused on any particular niche interest - everyone is welcome as long as you follow our code of conduct!