Dennis Heihoff đ°ď¸ 2020-08-28 17:10:36 What started with me reverse engineering notion became a data-first recursive UI resolver I called https://github.com/den1k/root.
Here's how it differs from most common technologies today:
- Approaches to UI development like react.js + graphQL require UI components to request data in a shape that satisfies the UI tree. This means the shape of the data is determined by the UI tree. Root takes an inverse approach where the UI tree is determined by the shape of the data.
- A major benefit of this approach is that the UI layout is thus entirely determined by data, data that can be traversed, transformed and stored in arbitrary ways and by arbitrary means.
- This is powerful for unstructured, user-determined, block-based UI's like rich documents (think Roam Research, Notion etc.) enabling queries and functions that, based on users' demands, derive the optimal presentation of a document.
It packs a few more punches. The best example is probably this https://den1k.github.io/root/rich-document.html in about 200 LoC (https://github.com/den1k/root/blob/master/dev/examples/rich_document/views.cljs). Github repo https://github.com/den1k/root.
Dennis Heihoff 2020-09-24 15:32:08 @Tom Hutchinson just seeing this. Very interesting comments! Iâm arriving at similar conclusions
Eric Gade 2020-09-21 16:31:59 Ivan Reese 2020-09-21 16:41:09 This looks wonderful. It is, of course, a story that most of us here know all too well, but it's still great to see that story told and retold, each time in a different voice, reaching a new audience. I enjoyed getting to see the faces of some of the folks I've only ever read about. Also, love the use of Steve Reich in the trailer. Take my money!
Christopher Galtenberg 2020-09-21 17:22:24 Backed. Looks amazing.
"Profit and Loss" isn't a very compelling tagline, for me at least.
Ricardo A. Medina 2020-09-21 19:12:24 Looks great! Great title (+ icon). I personally vote for "undefined is not an object" as tagline, but to each its own :)
Tudor Girba 2020-09-21 19:50:40 well, undefined is actually an object đ. nice work, @Eric Gade!
Jimmy Miller 2020-09-21 20:01:54 Looks really great! Any chance of getting that reading list in text?
Chris Rabl đ°ď¸ 2020-08-27 04:23:27 I've been doing more and more writing lately, and have been wishing for a tool that allows me to write my outlines, drafts, and final compositions in the same editor window with the ability to toggle any of those "layers" on and off at will, merge them, copy selections to new layers, etc. It would work sort of like Photoshop but for writing... I have a feeling these principles could also work as an IDE extension (imagine being able to hide the "code" layer and show only the "comments" layer, or the "documentation" layer). Curious to hear your thoughts, or whether anyone else is working on something similar?
Chris Rabl 2020-09-22 04:24:02 Fair enough! Shalabh Chaturvedi Christopher Galtenberg Chris Maughan Iâm curious whether adding automatic line numbering and a column limit on the number of characters in a line might help to solve the âcoordinate systemâ problem: think BASIC crossed with the Photoshop ruler tools... I say BASIC because a common convention when writing programs was to number lines in multiples of 10 so that if you needed to add a line between two existing lines (say between 30 and 40), you could add line 31 without messing up any of your GOTOs. Only difference here is that the line numbers wouldnât be semantically meaningful to the user, so I could hide them.
Shalabh Chaturvedi 2020-09-23 00:23:11 Are you suggesting the granularity of layers be a single line?
François-RenÊ Rideau 2020-09-22 17:22:15 Eric Gade 2020-09-23 14:55:05 Ivan Reese Are you working on bringing NeWS back to life? Don Hopkins' lengthy comments are some of the few things that keep me going to HN
Ivan Reese 2020-09-23 15:20:59 @Eric Gade â Please note the metadata in square brackets at the top of my comment. That's the format I use when I "move" a comment (by deleting the original and reposting, since Slack doesn't allow me to properly move comments.) You probably mean to reply to @duncan :)
Raathi 2020-09-24 01:08:23 Kartik Agaram 2020-09-24 01:20:38 [June 15th, 2020 10:24 PM] ak: I find hyperlinks into codebases incredibly useful. Thank you GitHub and https://plugins.jetbrains.com/plugin/8183-gitlink! With hyperlinks for any line of code at any point in time I can just use regular docs (Google docs, LaTeX, Confluence, Markdown, plain text) to create pretty decent private documentation.
I still can't hyperlink to any line of code at all points in time, so that it's the same line but carrying forward transparently as new commits roll in. But I find it's actually better to err on the side of situating documentation timefully rather than timelessly. That way I'm constantly reminded that documentation can go out of date.
In principle it sucks that I can't get backlinks. "What are all my notes that link inside function foo
?" But in practice I've just never had that many docs about any single function, so I haven't missed it that much. Plain docs + hyperlinks may well be the 80% solution that gets us well into the region of diminishing returns.
Emmanuel Oga 2020-09-24 01:52:36 I often think of making it the other way around: the documentation should be a machine readable spec of what your program does. Then, you can generate the scaffold of your program and "fill the blanks". This is and old, old idea, with a first wave of implementations coming from the "4th gen language" wave, UML, etc... I just suspect these days it could be done in a much cleaner way, without so much emphasis in OOP, no gigantic specs written by committees, etc. Something https://cruise.umple.org/umpleonline/?example=PizzaSystem, sans the UML (although... entity-relationship-diagrams are still useful I think, it is a valid way to model a lot of problems).
Raathi 2020-09-24 02:16:18 Kartik Agaram Yes. Thatâs the idea. Linking to symbols will allow to do static analysis (before committing using a pre-commit hook) to make sure the documentation and the actual code are still in sync.
Chris Rabl 2020-09-24 03:11:37 Ooh, thatâs kind of neat! I especially dig the autocompletion interface inside of the documentation pane. Do you envision building this as a feature of an editor, as an extension, or something else? Personally, I can see this fitting well inside of a source control-adjacent system like GitHub (specifically inside the Wiki tool), but perhaps thatâs too âfar awayâ from the code itself...
Raathi 2020-09-24 03:54:23 My current idea is to build it as a node module. When to start the tool, it will open up a web UI where you can write the documentation. When saving the documentation, it will create a doc file to your project folder which can be committed to your source control.
Having this as a node module allows other team members to use it without having to configure anything new. But editor/IDE integration would make the experience nicer. It wonât be hard to integrate it to VSCode though.
Raathi 2020-09-24 03:57:12
but perhaps thatâs too âfar awayâ from the code itselfI want to keep it as close to code as possible. This allows us to run checks on the documentation to make sure they are not going stale.
Charlie Roberts 2020-09-24 15:08:00 @Raathi please update us when itâs ready to take a look at! I scanned through your repos (nice work!) but didnât see this project, looking forward to trying it out.
Raathi 2020-09-24 21:58:55 Charlie Roberts Iâll share it here when the repo is public. Right now this donât even have a repo đ just prototyped it locally to see how it feels.
Shubhadeep Roychowdhury 2020-09-26 16:04:59 Hey guys, a sneak peak into the upcoming open source tool we are working on. It is called docly
and we are trying to generate one line description of python functions given the code. At the moment it can do something like this
Given this -
def stem(text):
if not dostem:
return text
return ' '.join([ps.stem(w) for w in text.split()])
return stem(white_space_fix(remove_punc(lower(s))))
It can predict the doc string to be - return lowercase and stemmed version of string text
đ