3 ms·
> The way to fix this trend would be to reimagine the presentation layer of the browser as something other than a stack of hacks over hypertext, but so far nobo
by breck 5y ago
> The way to fix this trend would be to reimagine the presentation layer of the browser as something other than a stack of hacks over hypertext, but so far nobody seems to have a good solution.
About a decade ago I had the start of a Eureka moment on how to do this (back then — https://medium.com/space-net/spacenet-51aca95d49a2 https://medium.com/space-net/spacenet-51aca95d49a2, nowadays https://treenotation.org/ https://treenotation.org/). It seems to me we've missed a sort of fundamental universal notation of the universe, which you can think of as "two-dimensional binary". I predict we will soon see a Cambrian Explosion of new formats and languages that are simpler and more interoperable with each other, and some will have the opportunity to build new great languages for rendering stacks.
- jamiek88 5y agoWow that tree notation looks super interesting! Bookmarked for a later in-depth read but my interest is piqued!
- ImprobableTruth 5y agoHow is this not just S-expressions with indentation instead of parentheses? What makes it different from say Sweet Expressions?
- breck 5y agoCommon question. You cannot do column and matrix operations natively against S-Expressions (You need to parse the whole thing). This turns out to be very important and useful. S-Expressions need to be transversed in 1-D linear order. When you two-dimensionalize S-Expressions and remove the parens, you get Tree Notation.
- lambda 5y agoHey, nice! I have a notes file experimenting with a similar tree-style minimalist data notation; it's definitely an area that needs more exploration. I like what you've done with it, I'll need to take a closer look. While I was thinking about it, I also decided to take a look into prior art, which took me all the way back to Landin's "The Next 700 Programming Languages" from 1966 which introduced the hypothetical language ISWIM, which was the first to introduce indentation based syntax and inspired the ML and Haskell family of languages (https://www.cs.cmu.edu/~crary/819-f09/Landin66.pdf https://www.cs.cmu.edu/~crary/819-f09/Landin66.pdf) It wasn't exactly what I was looking for, but it's fascinating to see how long we've been thinking about these kinds of issues.
- breck 5y agoYes, and surprisingly there are not too many that use any indentation based syntax (about 1 in 50). However, of the ones that do (abc, aldor, boo, buddyscript, cobra, coffeescript, csl, curry, elixir, f-sharp, genie, haml, haskell, inform, iswim, literate-coffeescript, livescript, madcap-vi, madcap, makefile, markdown, miranda, nemerle, net-format, nim, occam, org, promal, python, restructuredtext, sass, scss, spin, stylus, xl-programming-language, yaml) there are some real gems. Some more interesting read's in this space: 2003 - Egil Möller's I-expressions - https://srfi.schemers.org/srfi-49/srfi-49.html https://srfi.schemers.org/srfi-49/srfi-49.html 1984 - Alan Kay's 3-D spreadsheet - http://worrydream.com/refs/Kay%20-%20Computer%20Software%20-%20SciAm.pdf http://worrydream.com/refs/Kay%20-%20Computer%20Software%20-... 1972 - Mark Wells' A Review of Two-Dimensional Programming Languages - http://sci-hub.cc/10.1145/942576.807009 http://sci-hub.cc/10.1145/942576.807009
- lambda 5y agoCool! Thanks for some more reading and inspiration. Here's what I have in my notes buffer; I hadn't gotten much further than this. Ssn: /([0-9]{9})|([0-9]{3})-([0-9]{2})-([0-9]{4})/\1\2\3/ People: Table first: String last: String dob: Date ssn: SSN Csv headings: True load people.csv as: People select first last dob filter dob.age > 21 Well, I had some discussion, alternate forms of the syntax, links to prior art, etc, but not much else worth sharing. Will have to add your TreeNotation and Ohayo to that list, as well as these other links you've shared.
- breck 5y agoVery nice! The nice thing about these kinds of notations is that they last. Simplicity is timeless. I can immediately grok exactly what you are doing here. :)
- zepto 5y agoDo you have a more formal documentation for treenotation? The idea is intriguing but I couldn’t find the actual rules specified on the site.
- breck 5y agoThe rules for the basic notation are really simple. It's just basically a grid (visualize a spreadsheet), where each line is a row and each word is a cell. Indent a line to indicate a child node/row. An updated spec: https://faq.treenotation.org/spec/ https://faq.treenotation.org/spec/
- zepto 5y agoThanks - that’s what I was looking for! Looks like a potential improvement on s-expressions to me in terms of a readable syntactic kernel. For what it’s worth, I have been interested in the concept of 2d languages for quite some time, and I’m not sure what your definition is. To me this seems to have a 1d topology - I.e. it’s still left to right top to bottom, and there are no loops or semantics that require reading in other directions. I contrast this with something like a circuit diagram or labview program. I may be missing something though.