Live data from Hacker News

Project Mage is an effort to build a power-user environment in Common Lisp

project-mage.org

41–50 of 74 posts

Re: Project Mage is an effort to build a power-user environment in Common Lisp

#41

I can't edit the top post, as it was posted a few days back, and the thread has resurfaced. Currently, I am preparing an "elevator pitch" (as a few people have suggested me do), and I hope to publish it in a few hours. So, if the "Power of Structure" article is too long to consume and you just want to get the central idea, there will be such a summary soon. Also: the project needs funding. I will work on it regardles…

your elevator pitch still assumes quite a slow elevator doing quite a long ride...

Time is going to get by whether we like it or not.

Here it is, by the way: https://project-mage.org/elevator

Re: Project Mage is an effort to build a power-user environment in Common Lisp

#42

Earlier quoted context omitted.

your elevator pitch still assumes quite a slow elevator doing quite a long ride...

Time is going to get by whether we like it or not. Here it is, by the way: https://project-mage.org/elevator

What I was getting at is that IMO you failed to boil down the essence of the proposal to a length that could be called 'elevator pitch'. By the time you start preaching the essence, everybody's arrived at their floor already.

Re: Project Mage is an effort to build a power-user environment in Common Lisp

#43
Me: this task is big, I’m not at all sure whether it’ll take a week or two, let’s better subdivide it into subtasks and estimate each one in turn

This guy: I am pretty sure I can get done in ~5 years

Seriously, though, fingers crossed! I no longer use CL professionally, but it will always have a dedicated spot in my heart. I’ll be keeping a close eye on this.

Re: Project Mage is an effort to build a power-user environment in Common Lisp

#44
It makes me sad to see these kinds of efforts in 2023. It just seems very likely that we will have various advancements in AI (for example Hey GitHub) for input methods/ text-editing before this reaches to an MVP stage. While even 5 years ago I would choose Emacs and split ergonomic keyboards over any other cool new solution, I feel like recent developments in AI are just too good.

Re: Project Mage is an effort to build a power-user environment in Common Lisp

#45

Earlier quoted context omitted.

Have you thought about how your system might be adapted for power users that have accessibility requirements, such as blind people? I'm guessing you'd rather not implement the current GUI accessibility APIs, but would rather have something like Emacspeak that directly implements the alternative UI (e.g. speech output) inside the Lisp environment.

You know, I really haven't thought about that, but now that you mention it, I have heard before that in Emacs, the advice facility is very useful to the goal. Well, all I can say is that I see no problem in adding speech output or in adding advice. The system is going to be very flexible to the end user.

I think the trick to all accessibility issues is actually logging/tracing. Similar to kafka, you can have consumers watching the UI log to act upon.

Re: Project Mage is an effort to build a power-user environment in Common Lisp

#46
Just a few additional comments from our last exchange, based on https://project-mage.org/elevator. I prefer this elevator pitch because it gives some insight on how to proceed, beyond the stylistic choices. (If not a rant, it's a mixed bag of all I could think about the subject, since I never really exchanged about these ideas, so I'm interested in your thoughts as well.)

The example of splitting "Hello world" into a list of words is a pretty bad example; structure as in list of words is something that text editors manage well (delete word, inner, etc). It contrasts with syntactic information that gives you structure that expands the range of what your editor can do. If you know something is a noun, you can give only a list of nouns to replace them, and any replace would be able to ignore any verb that is written the same way (I'm not sure what IDE that does scoped replace manages variables shadowing correctly, but this is something you should be able to do with structure).

The idea of recursive, specialized micro-editors sounds like a real good idea. There should also probably be a way to specify that something is an encoding of a structure. For example, escaped shell commands, or SQL written as strings (not everything has DSLs, and even then it would still be useful). Ironically the delta diff program would correctly highlight syntax of SQL strings because it only analyzes the text, as opposed to most IDEs. There is also some prior art in the field, which reminds me of [0].

I'm currently working on knowledge management, which I think you have to split in different subfields; there's a great deal of overlap with project and document management, yet these would be mainly distinct workflows. I think logseq [1] and org-roam [2] tick all boxes for knowledge management, strictly speaking, but other tools are needed nonetheless. (digression: If you split it into plenty of different subsystems with another query system on top of it, you might just call your knowledge management a computer and the shell that querying tool. The issue you might have is that every program has its own API, so interfacing requires a custom facade, unless you directly write/eval shell commands.)

There was another idea between code editing and knowledge management, called literate programming, which had a fairly high profile advocate (Donald Knuth). The idea would be to explain the code in the way that made sense for humans, and have the system (something in between the text and compiler, if not the compiler itself) assemble these blocks in 'computer order' for execution. He explicitly said that literate programming is not 'documented code', which is what people usually understand by it, but does not represent any paradigm shift. There's the Leo editor [3] that took some ideas from it, but I think it's also something that never really took off.

Again, good luck etc.

[0] https://tratt.net/laurie/blog/2014/an_editor_for_composed_pr...

[1] https://github.com/logseq/logseq

[2] https://github.com/org-roam/org-roam-ui

[3] https://leo-editor.github.io/leo-editor/

Re: Project Mage is an effort to build a power-user environment in Common Lisp

#47
post #13

Earlier quoted context omitted.

I haven't finished reading everything but so far I like what I read. In a way, it reminds me of the software research project STEPS which aimed to reinvent computing with much less code than normal software. I consider this project a failure not because its funding got cut before the end but because nobody managed to reproduce their achievements (non reproducible research isn't research). I wish you more success!

STEPS is a very interesting project, indeed. I don't think it was quite a failure, after all, they did Nile and Gezira, which was pretty cool (powerful vector graphics rendering in a few hundred lines of code). Someone might reuse those in the future, I don't see why not. But from the limited things that I saw, I got the feeling there was no overarching system. And there was no thinking about flexibility in general (…

Actually there was a lot of thought given to flexibility, I think a lot of the concepts were not exposed well due to the large project scope. Maru (which is the underlying STEPS runtime) for instance was designed to be completely replaceable (See COLA papers) using a composition mechanism similar to fexprs. Maru is also very easily bootstrapped as the VM/runtime and compiler come in at under 2KLOC with all the facilities.

Re: Project Mage is an effort to build a power-user environment in Common Lisp

#48

Earlier quoted context omitted.

> Flexibility interacts poorly with composability. > Flexibility usually interacts poorly with performance as well. I disagree fundamentally. I believe there's such a thing as the flexibility of specialization. In fact: the reason why everything is so slow is because we don't have /enough/ flexibility in our systems. https://project-mage.org/on-flexibility > It's interesting that you're starting with the user interfa…

I've been reading the The Power of Structure in chunks. Your Rune section was really beginning to sell me, but I'm confused about something. I'm trying to imagine my existing Notes as a tree of objects instead of text parsed into an ad-hoc tree. Ok, that sounds good. I could imagine a leaf node being a "blurb", which itself could be something easy and familiar like a string. I could imagine it sitting beside a table,…

Good question. (Incidentally, it provides a good example for my words in the comment you have replied to.)

Words could be objects. But I will tell you more: you can start breaking words into characters and making them objects too, if you needed to. The key to performance here is to do the necessary stuff on the fly, on demand, dynamically. In other words, the word may become an object only when it needs to become a seperate entity. Suppose you use some data structure for storing sentences or paragraphs. Let's assume it's just a list. So, before a word needs to become an object that stores some information about itself, it can just be a string:

    '("This" " " "is" " " "a" "sentence" ".")
Now, if you wanted to tag the word "This" with some info (like stylization), you could turn that word into a more complex object:

    '(("This" :style bold) " " "is" " " "a" "sentence" ".")
In fact, if your application requires such an optimization, you could even store it as a simple string

    "This is a sentence."
You can choose whatever storage unit you like, as long as you can make your editor work with it. Structural approach allows specialization on the fly, you can just adapt to the granularity when you need it, since there's just full programmatic access.

Re: Project Mage is an effort to build a power-user environment in Common Lisp

#49

Earlier quoted context omitted.

Time is going to get by whether we like it or not. Here it is, by the way: https://project-mage.org/elevator

What I was getting at is that IMO you failed to boil down the essence of the proposal to a length that could be called 'elevator pitch'. By the time you start preaching the essence, everybody's arrived at their floor already.

Oh, boy, how did I miss that one... heh.

You have a point there, I have thrown in a TLDR.

Re: Project Mage is an effort to build a power-user environment in Common Lisp

#50

Earlier quoted context omitted.

Absolutely, it's image-based. I have considered Smalltalk, but I like macros a bit too much. I am pretty sure CL code will have better performance too, but don't quote me on this. A point worth making: if I were to do it in Smalltalk, I would choose the standardized one, as the most stable one. Stability is pretty important for a project like this, as you would imagine.

I think you mean you like emacs but got hit by autocorrect. I think the key is to duplicate a mid nineties office suit that is hackable with a programmers IDE thrown in. Something like AppleWorks or MS Works with a database that is universal across all the documents in the suite with structures that allow reuse

I think he meant Common Lisp macros, a powerful feature of the language (and missing from Smalltalk) that allows one to easily write code that writes code.
Post reply on HN