You are viewing archived messages.
Go here to search the history.

Mariano Guerra 2023-11-27 10:57:35

Where's the emacs people in this text centric brave new world?

Context: the most interesting stuff done on text always happened on emacs, and it makes sense to use a text centric malleable software platform to experiment by adding LLMs to everything, I haven't seen much done there.

Martin Sosic 2023-11-27 11:06:24

Here :D! What exactly do you mean though? Are you referring to rise of LLMs?

Mariano Guerra 2023-11-27 11:12:42

yep, updated the original message with more context

Martin Sosic 2023-11-27 11:51:39

Yeah I also havent seen anything being done. There is a basic plugin for copilot but nothing more from what I know. I guess seeing something like Copilot X in Emacs would be cool. I think it might be due to power-users of Emacs possibly being a bit more old school, and maybe even a bit in opposition to the changes that LLMs are bringing? Might be also that, if userbase is more experienced engineers, they are just waiting for the whole space to stabilise more.

Konrad Hinsen 2023-11-27 13:43:38

There's a talk about it at EmacsConf next weekend: emacsconf.org/2023/talks/llm

The speaker has written an Emacs interface to various LLMs: github.com/ahyatt/llm

There's also interface specific to ChatGPT: github.com/xenodium/chatgpt-shell

And some support for Copilot:

robert.kra.hn/posts/2023-02-22-copilot-emacs-setup

That's just links I collected over the last weeks from Mastodon or Emacs News. There's probably more.

đź“ť Setting up Github Copilot in Emacs - Robert Krahn

Quickstart Either follow the instructions of zerolfx/copilot.el or use a ready-to-roll config provided at rksm/copilot-emacsd. This is a short walkthrough describing my current Emacs-Copilot setup. Copilot is primarily advertised as a VSCode utility but actually it works really well in Emacs. Given the ease of adjustments (e.g. when to see completions) I would even argue Emacs might provide a better experience. Table of Contents Changelog Intro & Disclaimer Copilot API & integration Copilot Emacs packages Setup & Customizations Restricting when to show completions Customizing keys Copilot-specific Tab key Ctrl-g / cancel Changelog 2023-03-20: zerolfx/copilot.

Jack Rusher 2023-11-27 16:14:24

đź“ť ChatGPT inside Emacs

Posted in r/emacs by u/ggvh • 30 points and 20 comments

Paul Tarvydas 2023-11-27 17:14:48

Khoj claims to have an emacs client and claims to be open-source khoj.dev

đź“ť Khoj: An Open-Source AI Copilot for your Second Brain

Khoj is an open-source AI co-pilot for your second brain. You can search and chat with your notes, docs or images. Self-host Khoj on your laptop or enterprise cloud completely privately, or use it via Whatsapp or our Cloud. Khoj helps you get stuff done, whatever you choice.

Guyren Howe 2023-11-29 03:02:54

But have y’all seen this? scrapscript.org

This is my kind of thinking.

Taylor Troesh 2023-11-29 03:05:47

Author here! Let me know if you have any questions 🙂 Just hit another major milestone this week and I'm expecting to open up the repo in Jan

Tom Lieber 2023-11-29 04:01:58

I haven’t seen it, but I like it. I can’t think of a project to try with it offhand, though. How will I know when I have an idea that would make a good scrapscript project?

Miles Sabin 2023-11-29 09:55:28

Reminds me of Unison ... could you compare and contrast?

Taylor Troesh 2023-11-29 12:29:36

How will I know when I have an idea that would make a good scrapscript project?

Going to be a while before people are building projects with it haha. For the foreseeable future, it's likely going to sit somewhere between zsh and wolfram language. And then hopefully something like flash/geocities 🙂 I'll try to put out frequent demos once it's usable

Reminds me of Unison ... could you compare and contrast?

Yes! Both projects are functional languages that use content addressability. Main difference is goals:

  • unison focuses on building software with novel team collaboration and distributed systems
  • scrapscript focuses on being a good global package manager and messaging format... that also might be a good general-purpose programming language one day haha
Miles Sabin 2023-11-29 12:32:44

Could you imagine writing something similar-ish to scrapscript as a Unison library?

Taylor Troesh 2023-11-29 12:44:19

After talking to paul chiusano about it a few years ago, it didn't seem like there was really enough overlap

Haven't really kept up with the project though, so maybe things have changed

Dany 2023-11-29 12:49:52

Oh, my language used to have "text" instead of "string" aswell. But after a long time, I felt I didn't want to use my "strangeness" budget on old and proven name. So.. why text?

Taylor Troesh 2023-11-29 13:09:14

More than anything, I think I'm most interested in how non-programmers might interact with this language one day. And much like SQL, when you're thinking about non-programmers, you start to choose some non-standard naming conventions 🙂

Taylor Troesh 2023-11-29 13:11:47

I just wrote a really long essay on why I think many of the on-ramps into engineering are broken. I'd love to rekindle some of the hypercard/flash/myspace/geocities magic of yore

đź“ť I hereby pardon all junior engineers

Shortsighted engineering practices have eroded public trust in technology. We can reclaim that trust by building better things together.

David Alan Hjelle 2023-11-29 16:25:58

I think I'd need to be more of a historian to really understand what exactly the "magic of yore" encompassed — even though I miss it a lot myself! — but one complicating factor is how much more complicated systems have gotten, for good reasons. A few examples:

  • desktop apps and web pages once could be written assuming a fixed window size in many cases, much simpler than making a UI that scales from a phone to a 6K display
  • ASCII is much simpler than Unicode
  • anything without a network is much simpler than something with one — security is so much easier if you don't have the world at your door

It's fascinating to me that Decker chose to ignore so many modern bits — color, Unicode, scaling UI — and ended up with something that I think captures some of that magic.

…and, yet, I haven't built anything with it, either.

David Alan Hjelle 2023-11-29 16:32:02

Linking one of my points to your essay — one of the reasons that software projects keep needing maintenance and aren't finished is because of the network and security requirements.

Taylor Troesh 2023-11-29 19:33:52

wow, this is the first time i've seen decker, and i've been desparately searching for something like it for a long time!! thank you thank you

Konrad Hinsen 2023-11-29 19:48:32

Scrapscript looks interesting to me, if only for the overlap with an idea I have been toying with myself: a language defined in terms of IPFS data blocks, i.e. linked CBOR.

@Taylor Troesh You mention IPFS but it looks like you don't actually use it, right? I see hashes that are not IPFS CIDs. Any reason for rolling your own? Building on IPFS would give you data exchange with the wide world, which I think it worth having.

How does scrapscript interact with the rest of the computing universe? How can I write code that works on my address book or my e-mail, for example? It looks like all inputs have to be in scrapscript syntax.

Guyren Howe 2023-11-29 19:50:56

Decker?

David Alan Hjelle 2023-11-29 19:58:41

@Guyren Howe beyondloom.com/decker

Taylor Troesh 2023-11-29 20:00:24

Any reason for rolling your own? Building on IPFS would give you data exchange with the wide world, which I think it worth having.

Scrapscript is storage-agnostic, so theoretically somebody could host a scrapyard on top of ipfs, filecoin, whatever. But I don't want to bite off too much at once, so I think we should start with a simple centralized kv store

I've also tried to make it namespace agnostic, so theoretically, you should be able to use ipns for scrapnames too! There are a few more tricky bits there, but the concept definitely works.

How does scrapscript interact with the rest of the computing universe? How can I write code that works on my address book or my e-mail, for example? It looks like all inputs have to be in scrapscript syntax.

Scrapscript is just like any other programming language, so not very e-mail friendly haha. Open to ideas though

Konrad Hinsen 2023-11-30 07:07:55

Scrapscript is just like any other programming language, so not very e-mail friendly haha. Open to ideas though

If Scrapscript does networking, you can implement the IMAP protocol. If Scrapscript can read local files, you can delegate IMAP to an external tool such as isync. In both cases you need a MIME parser. Just like with any other programming languages.

So in the end, my question comes down to whether Scrapscript has access to local files and to network protocols.

Taylor Troesh 2023-11-30 14:40:34

oh sorry i misunderstood what you were asking. yes, you will be able to access local files and network through the cli

Nilesh Trivedi 2023-11-29 12:23:24

Thinking about a modern agent orchestration / business process modeling / workflow language. Here is how the standard BPMN example might look like:

# Tasks are enqueued jobs to specific queues. They emit events like started, success, failure, cancelled as well as custom intermediate events.

# Tasks cannot consume events. Task invoker can cancel those tasks.

# Tasks are triggerred by specific events indicated by their corresponding "when" clause.

# Process is a stateful workflow which orchestrates tasks based on events.



process pizza() do

    x = @customer.select_pizza when $start

    y = @customer.order_pizza(kind: x.kind) when x

    z = @chef.make_pizza(order: y.order) when y

    

    p = y.order.line_items.map do |item| # array processing

        subprocess procure(item: item) #invoke a subprocess

    end when z

    q = @clerk.pack when p.all?

    

    w = @delivery_boy.deliver_pizza(to: y.address) when z

    u = @customer.pay_for_pizza when w

    v = @customer.eat_pizza when u

    success $hunger_satisfied when v



    r = @customer.ask_for_pizza when (y or r[-1] + 60.minutes) and w.pending?

    s = @clerk.calm_the_customer when r

end

image.png

Tom Lieber 2023-11-29 16:30:01

Is the text the language, the chart, or both?

Nilesh Trivedi 2023-11-29 23:58:06

Text is the proposed language. The chart is that of the classic example used in BPMN docs.

Tom Lieber 2023-11-30 00:23:02

It’s nice that the “when” syntax reads left-to-right. It necessitates naming every single task, though, and those names are the hardest part to follow for me (x, y, z, p, etc).

Nilesh Trivedi 2023-11-30 00:25:29

Yeah. Naming of tasks is needed because they are used to specify event conditions to trigger followup tasks. I couldn't think of a way out of this.

Nilesh Trivedi 2023-11-30 00:28:58

Similar approach in Spotify's Prefect framework: docs.prefect.io/latest/concepts/tasks/#wait-for

đź“ť Tasks - Prefect Docs

Prefect tasks represents a discrete unit of work in a Prefect workflow.

image.png

Tom Lieber 2023-11-30 00:29:05

I don’t see any of the task initializers being reused except procure, so I wonder if you could use ~those~ to identify and give the tasks names only when necessary? Along the lines of “@chef.make_pizza(…) when @customer.order_pizza”?

Nilesh Trivedi 2023-11-30 00:29:48

No, the same task could be used at multiple times with say, different arguments.

Tom Lieber 2023-11-30 00:30:06

I’ve seen serial syntax like >> used too, but that doesn’t help with so much fanout.

Tom Lieber 2023-11-30 00:31:16

Oh yeah, I’m just saying that I don’t actually see that happening almost at all in this workflow, so maybe the cases that need disambiguation can use the “x, y, z” names if they’re more exceptional? Just a thought.

Nilesh Trivedi 2023-11-30 00:52:41

Yeah, good point.

Jason Morris 2023-12-01 05:58:45

"do" is a bit awkward, because it's not imperative code. It's declarative, describing a process that may never be initiated. When $start also feels like it should be implicit for anything that doesn't have a different trigger. The names could be more descriptive than lowercase letters. I might be inclined to use "when {name} happens" , and "step: {name} is" to make it clearer, too. But all that should be taken with a grain of salt, because I have never been able to understand why I would want to use BPMN. All my use cases seem deeply ill-suited to it.

Nilesh Trivedi 2023-12-01 06:02:58

Jason Morris All good points. do ... end is just a construct I copied from Ruby's block syntax.

BPMN has around 120 types of elements including exclusive gateways, parallel gateways which seems highly unnecessary. I'm trying to avoid all those elements with some kind of composable event algebra. I think workflow engines (where some tasks could be done by humans) have been underutilized by developers precisely because of BPMN's complexity.

Jason Morris 2023-12-01 06:15:05

I think BPMN not having a semantics has been the biggest issue in people not using BPMN for workflow. But there are other ways to do workflow, and the ones that get used the most don't require BPMN.