Re:(5) New blogpost: Programming Resolutions for 2024 

@Lady I agree about the significance of transformations, but I don't think XML is necessarily necessary for this -- I think there is simply a major ideological/tooling hole here that XML is merely (at present) the only ecosystem with SOMETHING in. (Well, also RDF.)

I think we just, as a programming culture, have SEVERELY underdeveloped the concept of "bidirectional/invertable transformations".
(And its sister-concept of "explicitly-lossy transformations", that label the areas where it loses information.)

Like, in a tree-/graph-format as well, but also even in regular expressions -- there is no current defined syntax for expressing an invertable regex substution, /despite that being literally a simple subset of regex syntax/.

Much less the obvious (and simple but powerful) corrolary, a way to translate that "invertable regex substution" into its inverse, to get free translation to and from.

Follow

Re:(5) New blogpost: Programming Resolutions for 2024 

@gaditb the significance of XML to me is the fact that it is fairly trivially convertible to HTML (or styleable with CSS directly) [or turn it into SILE if that's your fancy]

this is a practical concern not a technological one; the most portable formats for display are XML, and if that’s your destination format, it seems helpful to maintain that as far up the chain as you can

otherwise, surely they’ve developed something in the Lisp universe for this, right? isn’t that kind of the whole point?

Re:(5) New blogpost: Programming Resolutions for 2024 

@Lady It's the "it seems helpful to maintain that as far up the chain as you can" that I disagree with -- the chain should rather be INVERTABLY TRANSFORMABLE to that (XML is a good framework target for that), but there are reasons to have different representations for different levels and contexts.

The key thing here I'm thinking is that with invertable translations, different translations become different, equally-manipulable, VIEWS of the underlying data. And different views are useful for different types of manipulation. (WYSI*-frameworks compare in this way.)

Like, approaching an unknown format, it's most useful to have access to a verbose, context-embedding view, to be able to grasp the structure in many places. OTOH, for INPUTTING, and also engaging with familiar data, you want as much context-inference as possible.

For diffing, you want a view that most effectively writes one/a few (annotatable) semantic unit(s) per line.

Re:(5) New blogpost: Programming Resolutions for 2024 

@Lady XML hits limits towards the bottom on how much context you can drop. THAT'S why Markdown appealed to people, it let them drop implicit context and engage with signifucantly reduced friction to the data and method they are inputting.

On the other side of a spectrum, compare Wikipedia's visual editor -- by minimizing the distance between the Reader-view and the ability to make a change, it allows for readers to have a more natural and empowered way of engaging and fixing issues they encounter.
(But also, look at its struggles with visual diffing.)

The s-expression ecosystem has a framework for this, yes -- that's what Domain Specific Languages are, and why so many projects start "first, write a DSL". But that's deeply embedded with s-expressions, and not trivial to make compatible with the unix philosophy.

Re:(5) New blogpost: Programming Resolutions for 2024 

@gaditb ah yeah, i mean i’m very in favour of e.g. having an underlying dataset you can represent as RDF/XML or RDF Turtle or JSON-LD, and likewise the ability to represent a document in a lightweight syntax that converts to and from XML trivially…

…although practically, i think the source serialization DOES matter. it’s really really hard to write a transform for Any RDF/XML Document but it’s really easy to write one for an RDF/XML document which follows An Exact Structure. that’s why XMP and ActivityStreams both specify limitations on the actual transmission format that implementations need to follow, even though hypothetically there are a number of different ways of conveying the same thing

i think that it’s not really possible to avoid the meta-data of document structure as being a PART of how you work with and process that data. i like XML here mainly because “document structure” in XML is exceedingly well-defined. even IF you’re actually going back and forth with something else when you edit

Re:(5) New blogpost: Programming Resolutions for 2024 

@gaditb like i actually care a lot more about XML Infoset as a baseline than XML the set of strings which match the document production specified in the eXtensible Markup Language specification (version 1.0 or 1.1)

Re:(5) New blogpost: Programming Resolutions for 2024 

@Lady I think An Exact Structure is something you can define and, crucially, embed into an invertable transformation specific to the particular collection of data and view you wish to have of it.

Like, take one more step with me and look at /user interfaces themselves/ as a (potentially: invertable-but-not-onto) translation.

The text box I'm typing this into right now isn't just a source which Tusky will when I hit Toot! use to fill in the "content" datafield of the Note object -- it is A VIEW of that datafield itself, that is (ideally) maximally useful for me filling it out. An app COULD give me a view that is the entire json-ld, but that would be less convenient for me.

Re:(5) New blogpost: Programming Resolutions for 2024 

@gaditb i think i'm mostly in agreement but my sticking point is that if you want document structure to survive data transformation then you need to pick a document structure and stick with it conceptually, even if the view only exposes a subset

i think that the document structure you should pick should be conceptualized as XML Infoset as early in the process as possible, so that all your transformations are conceptually XML Infoset to XML Infoset, even if you're using a syntax which only actually exposes a part of that

i care less whether you're actually serializing that as XML, although I think Unix philosophy would state that at application boundaries you should be

Re:(5) New blogpost: Programming Resolutions for 2024 

@Lady I think my philosophy (which... I dunno, is this Unix Philosophy?) would state that at the application-to-file-serialization you should, but I think that it would state that at the application-to-application boundary you should consider whether something different and more streamable is better,
like perhaps the format that only exists in my head application/json-seq+ld (application/json-seq, but with a single header JSON object that is a {"@context": ... } that is attached to every subsequent JSON object in the application/json-seq to make them JSON-LD objects.)

Because application-to-application is a different view than application-to-document.

Re:(5) New blogpost: Programming Resolutions for 2024 

@gaditb i think web/Unix/“view source” philosophy is that the result of any request should be a document, yeah

Re:(5) New blogpost: Programming Resolutions for 2024 

@Lady Sure the output, but not necessarily always the input, no? Plenty of pipelines have an "expand to a more streamable format" within them.

Re:(5) New blogpost: Programming Resolutions for 2024 

@gaditb i mean maybe i'm coming out as against websockets here, but idk, honestly i don't have to deal with these problems often enough to have a strong opinion

i think the easy case is easy and reachable with just XML, and maybe there's a more efficient, complex case which can be built on top of it, but the easy case should still be possible regardless

Sign in to participate in the conversation
📟🐱 GlitchCat

A small, community‐oriented Mastodon‐compatible Fediverse (GlitchSoc) instance managed as a joint venture between the cat and KIBI families.