Categories: ai

RSS - Atom - Subscribe via email

Transcript of chat with Matei Candea about Emacs and AI

| emacs, ai

This is an edited transcript of my chat with Matei Candea, an anthropologist who is curious about the Emacs community and AI. Sharing it here with permission so that it becomes a thing I can refer to and in case it sparks further conversations. AI is a bit of a contentious topic, so I hope people will be patient and kind as we figure things out!

Related links:

Expand for the transcript

NOTE Matei is an anthropologist; ethnographic research

What I actually do for work is to do ethnographic research, to interview people. I've written a lot about scientific communities.

For instance, I've written articles on behavioral scientists who work with animals and how they think about knowledge and technology and stuff. Completely independently of that, I kind of got into Emacs and got really excited. About four years later, I was, like, wait a minute, why don't I do an ethnography of Emacs as a community?

Sacha: Really cool people.

Matei: Right? Really cool people.

Curious about Emacs as a community in the time of AI

Matei: I think what I'm really saying is Emacs as a community in the time of AI and how that's shifting or not shifting how people are using it, and what it does. I've spoken to Prot on Monday. That was the first interview I did, and we had a great chat. I basically asked him how he got into Emacs and what it meant to him and what his relationship is to the community and stuff, and then a bit about AI and then a bit about what he feels are the interactions between the two.

Matei: That's, broadly speaking, what I would be interested in doing with you.

Matei: If you think there's a broader conversation, we could live stream and have an actual chat about how people use Emacs. By the way, I'm very happy also to tell you where my own trajectory was that I got into Emacs weirdly and randomly about a year before ChatGPT really hit the mainstream. The thing that you read by me was written because me and Ella together were trying to figure out Cambridge's response to AI as a university. Like, what are we going to do about it? If I'm going to be talking about that, I need to know how it works. But I don't want to use AI in my own actual work or in my teaching, because I think it's a bit dodgy. I don't really like it. Why don't I just do it with this kind of side project I've got, which is learning Emacs, right? And the weird paradoxical thing was that I now basically kind of live in Emacs. My email is mu4e. If you saw my screen now, the notes are basically a narrowed Org buffer with questions. Everything's email. But I don't think I could have got there that fast if it hadn't been for the fact that I started asking ChatGPT, like, "Oh, this isn't working. Can you just write me a defun that does this?" I'm not completely vibe coding. I'm trying to learn Elisp at the same time, but I'm in this weird position where... Anyway, this is why for me it raised these questions of: what does learning Emacs in the time of AI mean? As you can probably gather from the manifesto, I'm not pushing it at all. I'm really ambivalent about the use of AI. I find myself doing it and kind of sort of worrying about doing it. Would you be happy to do an interview like I did with Prot?

Sacha: Yeah, we can certainly do that. In addition to whatever I can share from my personal experiences, I think your interest in understanding and describing the community and the culture and how it's interacting with this AI thing, I think it'll offer a perspective that is different from what you usually see, because Emacs users have had this long tradition of fiddling with things and making it really malleable and fitting it to them and figuring this out in dialogue. It's figuring out in dialogue with themselves as they figure out their workflows, with the software as they learn from the code, with other people, with resources on the internet not necessarily attached to specific people. That's got a really long history. It's really interesting to see how AI both has plus sides and minus sides in this whole mix. It definitely, I think, will offer some insight that you won't hear with the frothy AI hype that other communities have. It's all very interesting.

Matei: Amazing. Let's start with a general kind of interview thing.

How did I first get into Emacs

Matei: How did you first get into Emacs?

Sacha: I was going through all the books in my university library about computer science. One of them was Unix Power Tools. I was like, there's this chapter on Emacs, and it mentions Tetris and other things. What is going on here? I tried it. It was great. I liked it. Then in fourth year or so, my screen stopped working. I didn't want to replace it. But there was Emacspeak. I was amazed. Lots of people had put together Emacspeak so I could use the computer with a broken screen. I could still read it periodically, if I tilted it and kind of looked at the low contrast thing… The speech synthesis worked just fine. I'm going to program this way.

Sacha: I'll plug into a monitor when I'm back in my room. But if I'm out and about, I have this other way to do it. Something that maybe most programs would not have anticipated, but because somebody had built it for themselves, it was something I could use. Before I got into Emacsspeak, I got into Planner Mode because I was a university student and I was taking notes. Planner Mode was an easy way for me to keep track of tasks. It was more flexible than other to-do managers.

Sacha: It's one of the packages that was popular before Org Mode. I started using that to write my blog. Blogs had just been invented around then. I was figuring out, how do I export RSS out of this? I was able to customize it to do that. I liked it so much I emailed John Wiegley, who had created Planner Mode. I said, hey, I can help you fix bugs. He said, great, you're the new maintainer now. Which was actually very good for me because I was a university student in the Philippines, and Philippines, and normally we don't get to work on anything really cool. Suddenly I was in this global community of people. There was a mailing list. People would send in questions or feature requests. I would share the things that I was working on. They were very, very patient with me. Like that one time, one of my changes accidentally deleted somebody's notes and they were still nice to me afterwards. The community has always been part of how I experience Emacs. Learning in public has also always been part of how I've been figuring out what I can do with it and changing it to fit my needs, as very idiosyncratic as they are sometimes... It has also always been part of my experience of Emacs.

Matei: When did this start?

Sacha: Very shortly after I started Emacs, I started blogging with it. My first blog post from that is 2001.

Matei: Right. You were studying computer science?

Sacha: I was studying computer science, yes.

Matei: Are you a computer scientist now? What do you do when you're not doing Emacs?

Sacha: Most of the time, I'm still focused on full-time parenting, which is why I'm going over to the freezer now to remember to put yogurt in the freezer. I do a tiny, tiny, tiny bit of consulting, but consulting, but for the last 10 years or so, I've just been focused on parenting. Playing with Emacs and being in touch with the Emacs community has been one of the ways that I've kind of kept sane. I've enjoyed the intellectual puzzles of: I have this thing that I want to do, how do I do it with code in ways that I can fit into five minutes here, ten minutes there of my life.

Matei: Do you do any other coding or just Elisp?

Sacha: JavaScript, Python on occasion. Some of my consulting involves making little JavaScript prototypes for ideas that my client has, but it's really just an hour a week, maybe less. But for fun, I still write a bit of JavaScript and Python. Emacs Lisp, however, is what I usually write because it's so much easier to do things when you've got the full editor with you.

Matei: Yes, that makes sense. I've got a million questions, but I'm going to try and do them in order. You've said a little bit about this already, but

What do you love about Emacs?

Matei: what do you love about Emacs?

Sacha: You can come up with a crazy idea and you can actually make it happen. So, for example, I've been doing a lot of conversations, interviewing people or working with my sister's interviews. I always like turning these into text because text is a lot more searchable. Chapters and things like that too, right, so that people can jump to just the part they're interested in. I don't know how other tools do it, but I love the fact that I can modify Org Mode so that I can capture timestamps. Wall-clock time is easier for me to work with. I can say, okay, while I'm typing, I just use an abbreviation to put in the timestamp that's the current time and my rough notes. I have another piece of code that translates that into offsets from the start of the video based on YouTube's live stream or the file name of the video. Then I can paste that into the subtitle file so that it automatically puts the chapters in roughly the right places. As I come up with little workflow ideas, I can actually implement them.

Community

Sacha: I also love the community of it. Looking through the blog posts or as I put together Emacs News every week, there's always all these interesting examples from people who are asking the same questions about about "What is it I want to do?" and "How can I do it 0.5% better?" They write these little functions. I'm like, oh, that is a fantastic idea. I get to absorb that into my life. Because I'm seeing it in the context of their blog post or their video, you get a glimpse of other people's lives as expressed through code, because all of the code is very personal. That is one of the things that is good about the fact that people are using AI sometimes to generate this code. They can make things that things that punch above their weight. A newcomer to Emacs can have customized functions that let you fully appreciate its power. But on the other hand, if the AI is just generating this code, you don't get a sense of like, where's the blog post this is coming from? Or who would I talk to to keep up with other crazy ideas they come up with? You're limited to just your ideas. Then there's the whole thing about license-washing. Most of the people release their code under GPL because it's Emacs, but the large language models never mention that. They never say, you also have the right to go and share this and modify this and build on top of it and contribute back to the community. Anyway, it doesn't feel right, the code. It doesn't quite get the conventions and the idioms yet. So the things that I love about Emacs are generally the fact that it can fit me like a glove and it's got this community of people who are also exploring what is possible as crazy as ideas sometimes get. There's always some way to hack it in.

Do you know how big the community is?

Matei:

Do you know how big the community is?

Sacha: I have no idea. We generally feel like it's a lot smaller than VS Code and probably a lot smaller than Vim. It depends, of course, on if you're talking about percentage, it depends also on... There's a lot of Clojure developers using it, because it's the standard Clojure way of doing things, but there are probably a lot fewer Java or JavaScript people using it because a lot of people are in VS Code instead. I used to do Google Analytics tracking on my website, but I stripped all of that out because cookies and tracking and all of that. When people ask me how many people read this stuff, I have no idea, but I do know that every time I look for Emacs News, I'm delighted by the breadth that I come across. To me, it feels like there's a thriving community that's large enough for my interests.

Matei: Cool. You're the second person I've actually spoken to. The first person was Protesilaos. I'm struck by the fact that from a sample of two, I've got two people who are not based in the US, who are super international, and also who are not developers.

Sacha: That is a fantastic thing about it. I love that we have researchers and sourdough bakers and knitters. Of course, the programming part is still there, but a lot of people end up getting into some kind of programming because of Emacs. Emacs is the only thing they ever code, and they don't even think of it as coding. It's just like, I do this, but I wanted to be able to do this, so I learned how to do Org Mode and source blocks, and that's all I can do, but it's great. I think that's really interesting because when you talk to people about their origin stories with Emacs… Sure, of course, you have the pockets of people who are like, I'm a computer science student and my professor said use this, so I'm using this, and so forth. But then you get these random high school music students who are like, oh, yeah, I just saw this video and I thought it looked really cool, so I taught myself how to do that. I don't know anybody else who uses it in real life, but I like it. Musicians using it live to do performance... Where are these people coming from? But they come across it, and it just strikes a chord with them, deep in their souls. It appeals to a certain tinkerer type, I guess. They just continue with it. They get stuck. Sometimes they leave and they come back, and all that stuff… But the breadth is one of my favorite things about Emacs.

Matei: Do you think that most of the people in the community are probably developers? Because when you were saying the community, you compared it to Vim and VS Code, which is to think of it really as an IDE kind of thing.

Sacha: That's usually what people talk about, right? Because usually when people are thinking, how popular is this, they're stacking it up against developer tools because those are the surveys that the development websites do. Stack Overflow or State of Clojure or whatever. They'll ask people, “What editor do you use?” But given Emacs' surprising popularity among people who are, for example, diagnosed with ADHD and find that Org Mode is the only way they can manage their brains…

Matei: Is that a thing? That's really interesting.

Sacha: In a number of Reddit threads that I've seen, people are like, yeah, I'm not a programmer, but Org Mode is the only way that I've figured out how to manage my brain. Or people will come to Emacs from something else specifically for Org Mode because of the way that it can help them manage their tasks or agenda, because they can sculpt it to fit what their specific workflow could be. It's amazing. Of course, we've got the writers and the researchers who are like, "I love publishing beautifully typeset things, but I don't like working with LaTeX all that much, so let me just figure out the template once."

Matei: Yeah, totally. I really came to Emacs because I was looking for an outliner. I'd been writing in Markdown for a while. I was really getting sick of the heavy Word stuff. And I was, like, Org Mode, omg, it's amazing! Then from there, I was bitten.

Do you have any frustrations with Emacs?

Matei:

Do you have any frustrations with Emacs?

Sacha: I would like to have more time in the day to fiddle with things. In terms of the balance between fiddling with my config and doing the thing that I want to do, if I sandwich it so that I do my 5 to 15 minutes of Emacs fiddling at the start, then I'm motivated to go through the task because I want to test that my improvement works. Then it becomes a good balance for me. I don't spend all the time feeling like I'm yak shaving, and I don't spend the time struggling with workflow because I didn't take the time to automate it.

Sacha: I would like to have more time, because I always come up with more ideas in the middle of something. "I know this is possible. I just have to sit down and do it, and it'll be great. But okay, I have to wait till my next 5 to 15 minute window where I can fiddle with it again." The other thing that I've been trying to figure out is: how do you help people develop that intuition for how to do things, how to make Emacs do things? We see a lot of people come into the community. They might get stuck on some things. The tutorial is very useful, but it can be overwhelming. The whole Emacs thing can be very overwhelming for people. How you help people get through that part is something that's of great interest to me. Bringing it back to AI and large language models, the fact that people can sometimes have a conversation with this endlessly patient tutor where they might be too embarrassed to ask their questions on a mailing list or a forum, I think that's fantastic. But also, going to your manifesto's points about learning by doing and education and the eureka moment, we also don't want this quick and easy help to rob people of the understanding that they get from looking at it and tweaking the code or learning how to read through the source code themselves. There's just so much there that I would hate for people to just get stuck in the “please generate this code for me" level rather than be able to learn this is how I start learning from other people's source code so that I can come up with more ideas.

Matei: That's right. That's also what I think basically. Here's an interesting question.

Would you ever leave Emacs?

Matei:

Would you ever leave Emacs?

Sacha: I cannot imagine an editor at the moment that would let me get away with nearly half of the things that I do, but maybe even less. Right now, I've got so many odd little customizations for it. For example, on my phone, I'll use Orgzly Revived to capture a quick note so that I can go back into Emacs later and do it. But even though I'm comfortable programming in JavaScript and Python, and there are lots of tools available there, the interactive interface part of things is something that I don't see any other program give me the same kind of platform of support or building blocks to play with. Who knows? If some day, this thing manages to support all of my hacks built on hacks and gives me that same kind of feedback loop, but it's also multithreaded and graphical and whatever, I might give it a try. But at the moment since I can get away with so much in Emacs and I know that people behind the scenes are working on adding even more to it, it's okay, long term. It's been around for 40 years. It'll be around for... Probably it'll outlive me. I don't have to worry too much about giving up on it.

How important for you is the free software bit of Emacs?

Matei:

How important for you is the free software bit of Emacs?

I was on Mac when I got into Emacs. I went to GNU Emacs to download it and it said, we made this available to people on proprietary systems in order to teach you to free yourself. I was like, huh? I downloaded it and I'm now running Arch Linux. It definitely worked. Richard Stallman has downloaded himself into my brain. How much is the free software bit of it important to you in using Emacs?

Sacha: I'm not a purist. I will happily be the interface using the non-free things. For example, when we were doing EmacsConf, the first few years before Whisper was around, I was the one doing like, okay, fine, YouTube has this subtitling thing that we can grab the stuff from. Yeah, it's a non-free service, but I will happily take advantage of it in order to make the information more free, and things like that. I use both free and non-free things, but I love the single-minded focus that a lot of people have on freedom and making sure that other people enjoy these rights. For example, in the Emacs community, a surprising number refuse to use JavaScript because a lot of JavaScript is non-free software. I want to make sure that my website still makes sense without JavaScript. EmacsConf, there are ways to participate even participate even without JavaScript. You can use MPV to watch the stream. It's all free software. You can use IRC to chat. All that stuff is very important to people, and that's great. I love the fact that for a lot of people, they really care about making sure other people can continue to enjoy these freedoms to modify things and to build on it. Every so often someone comes into the Emacs community and they're like, oh yeah, I want to make money making packages here. I'm going to put my package behind a paywall. You've got to send me a donation in order to use it. Then they get smacked down so hard. Usually the way it works is someone will then, you know, take a look at their README and say, okay, that looks vibe-coded. I can do it faster and I'll do it for free. That's the usual response to this stuff. Yeah, here's the thing that you're trying to sell, but it's free.

Matei: So that never works. I was struck by this. It seems to be so absolutely immune to takeover by proprietary stuff.

Sacha: I mean, it's a startup hustle mentality in other communities, but in Emacs, it does not fly. Mostly because people are, like, are, like, I know the tools you're using, I can do that better myself. There are people who do get sustained by donations from Emacs community members, but it generally is more of a "I appreciate your work and I will send you this voluntary donation" instead of your paywalling your stuff behind this thing, which feels very much against the ethos of the Emacs community. It's been interesting to see the AI hustle "software as a service or product type" thing try to infiltrate the Emacs community, and they are having none of it.

Matei: Interesting. Why do you think it's so resilient to that?

Sacha: Because we've had such a long tradition of sharing things for free, building on top of things that people have freely shared: not just like free as in beer, but free as in you've got the source code, you've got all the rights to do whatever you want with it, including for free. That's baked into the community. Any time someone comes in and tries to say, oh yeah, I've got this commercial packaging of Emacs, it's all rights reserved, people are like, yeah, there's probably a GPL violation right there, so let's go.

Matei: Cool.

How do you explain your passion for Emacs to non-Emacs users?

Matei: How do you explain your passion for Emacs to non-Emacs users?

Sacha: I don't usually. I love the fact that I can tinker with it, right? If it clicks for people, it clicks. But if it doesn't click for people and they don't necessarily want or need that, then it's okay for them to use something else. I love the fact that people are using or even shifting to other editors. For example, we've had a couple of people announce that they're leaving Emacs recently because vibe coding has made it possible for them to build native applications and they don't have to build it on top of Emacs anymore. They can finally get their Vim config set up the way that they wanted to because the LLM can generate that stuff for them. Whereas in Emacs, it would have been a lot easier to write it themselves, but now they can do it with VS Code or whatever. It's great because the more people are experimenting with interesting ideas, even outside Emacs, the more we get to steal those ideas and then bring them back. You see a lot of this sometimes. You see people re-implementing cool ideas from other editors or other tools. To me, it's totally okay if other people use something else, especially if they tell me the cool stuff that they think only that editor can do. Because I'm like, that sounds like an interesting feature. Do tell me more. There was an interesting talk by Jeremy Friesen in either last EmacsConf or the one before that, about mentoring and how he's no longer trying to push people to use Emacs. He wants to share the general workflow practices he's using. If he's pair programming

Sacha: with someone, he might say, how do you jump to a specific function definition? They might show him something, or they might realize that's a thing. I can go look in my editor how to do that. He might show, this is how I do it. That's the general idea. Sometimes when people start talking workflow, then talking workflow, then talking workflow, then people who are not using Emacs will go, "That looks really cool. How do I do that?" Then that?" Then you send them down the path of: get it installed, go through the tutorial, that sort of stuff. But it always helps to have that specific reason, the thing that they want to be able to do. For me, for example, I love the way that Org Mode lets me have my notes and the code and the links. It's all one big thing. I don't have to think about, oh, okay, I have to do everything in Python because that's what Jupyter does. I can do some of it in Emacs Lisp, and I can do some of it in shell scripts, and I can do some of it in JavaScript or Python. It's like all this big mess Org Babel kind of thing. Yeah, because your brain might not be in tune with all those different languages, but it works for me. If other people see that and they say, I want to do that too, then that's when you help them get into Emacs. But aside from that, I don't talk to people in elevators and say, have you heard the good news?

Matei: I was wondering even more broadly than kind of people who are already coding with a different editor. To tell you a story... My cousin is also an anthropologist. He's an anthropologist in France. I've known for years that he was into Linux and free software and stuff. When I got into Emacs, he said, you know I've been doing Emacs for 10 years. I was like, what? How? What? And he'd never told me. I realize now, having been doing Emacs for four years, I can't talk to my colleagues and friends about it because they look over my shoulder and it's like, what are you doing? This looks like it's from the 1980s. Even trying to explain to people what Emacs is... I don't mean coders, I just mean people. My cousin said, yeah, I talk to people about free software all the time. I've never talked to anyone about Emacs. It's just so weird.

Sacha: I think that's why the community is so important, right? I aggregate a lot of blogs on Planet Emacslife so people can bump into each other. There are a lot of meetups, some of which we host on BigBlueButton... There are meetups, by the way. If you check under Emacs News, there's actually a very active London meetup.

Matei: I haven't yet.

To what extent do people meet in person with Emacs?

Matei: To what extent do people meet in person with Emacs?

Sacha: Apparently, a lot of people meet in person whenever they're lucky enough to get a sense that there are actually other people in their general geographic location who are interested in this. But there are also a lot of people who meet online. Org Meetup has a meetup every month that has about 20 people in it.

Sacha: Emacs Berlin has a meetup that's hybrid, and so it's both in person and online. There's Emacs Asia Pacific. There's a whole list of meetups in Emacs News, which is that newsletter that I do every week. I list upcoming events, and there's also a link there to the calendar as well as to the user groups page which lists by region. There are a lot of people getting together about Emacs because a lot of times, you learn about Emacs by looking over someone's shoulder, physical or virtual, right? This is how you learn about things that you would not have even thought of asking an AI about. They're doing a demonstration or they're doing a video, and you're like, what is that thing that you just did? They had no plans to talk about it because it's just something they take for granted. It's a keyword shortcut or a command. It's just part of the workflow. They don't think about it anymore. Or it's even as simple as "What's that theme? What's that font?" Because people can see it, can see somebody doing stuff with Emacs, they get inspired to learn more and to adopt that into their workflow. That is one of the things that I love about how people learn Emacs. It's very convivial, right?

Matei: Yeah.

Learning in public

Matei: You said the phrase earlier: learning in public. In one sense, that sounds scary. Learning in public, making mistakes in public and stuff. You said it as a really good thing. Tell me more about learning in public.

Sacha: My favorite kinds of blog posts is

Sacha: when I'm proud of myself for figuring out something clever. Like, okay, here's this function function to do this thing. I had to figure it out. It was hard. It took like a day or two to do it. Then someone comes by in the comments and says, oh yeah, that's built in.

Matei: Yeah, I've been there.

Sacha: "You just change this variable." It happens so often. The reason is because Emacs is so big, right? There are variables and functions that I would not think of coming across. Maybe I'm not using the right words to search for them, or whatever. If you add to that the entire package ecosystem and as well as the things that are not people's packaged code, snippets in people's config and whatnot... Chances are someone has come across the same problem that I'm thinking about and has come up with a more elegant solution for it. If I'm not using the same words, I might not find it. One of the things that I like about large language models is that even if I use my words, sometimes it will suggest something that does that translation, right? It's an approximate search. But even if I don't have that, if I'm writing about something, then I have that opportunity for somebody to say, oh yeah, you should check this out. Or several years later, someone might also say, that is exactly what I was trying to do. I'm taking your code. I've built something on top of it to make it even better. For me, writing about what I'm learning

Sacha: with Emacs is a great way to learn even more from the community. I keep trying to convince people, yes, please, even if you're a beginner, write about what you're learning, because it's a great way to crystallize that knowledge for yourself, become part of the community and part of the conversations, and learn about things that you would not have thought of asking about.

Matei: Well, I'm following your example. I'm trying to write my config in Org Babel at the moment, partly as a way to say, wait a minute, what is this thing? How does it work? It's so useful. But one thing I was wondering, and it's partly also just a practical question,

Disclaimers

Matei: I've never tried to contribute or to post

Matei: anything on anything, partly because I worry that my stuff is crap.

Sacha: If you put a disclaimer, that way they know they're reading it for the idea, but not necessarily the Emacs Lisp style. That's fine with me too. There are a lot of people who are like, you know, it's got too many emojis in it, I'm not going to read that. I'm going to focus my time reading something else that's been handcrafted and all that stuff. That's fine too. There's room for all sorts of people and all sorts of approaches to this. Sometimes even just the idea of something is already valuable, that somebody thought of saying, hey, my workflow would be better if it could just do this. If there's a screenshot, even better, right? You can see how it works. Screenshot or video or animated GIF. Because then they can go and write the code that they would have to do anyway. Because of course, they've got their own personalized setup. You know, the code that you write will not mesh perfectly with their particular setup. There's this whole… There's this Lisp curse essay that's sort of related to…

Matei: I was going to ask you about that.

Sacha: We've all got our ecosystems of our own code and absorbing something into it is sometimes hard. But if you start with even just the idea that somebody else has written about, whether or not you take their actual code for it or use their code as a building block, that is already useful and interesting. Again, you don't have to be Bozhidar Batsov or Omar Antolin to be able to contribute at that level. Even at the beginner level, you could just be like, I just need to do this thing and it's driving me crazy to do it manually all the time. Then I'm like, you can do that non-manually? Oh yeah, we should do that.

Matei: Cool. Just to come back to the question about talking to other people about Emacs, do you ever talk to people who are not programmers?

Do you ever talk to family and friends about Emacs?

Matei: Do you ever talk to family and friends about Emacs? Do you ever have to explain what this thing is that you're doing or do you just not?

Sacha: Well, my kiddo is 10, and she's like, can you set me up a kid Emacs? Because she sees me like... Yes! Clearly something of great interest to me. I said, maybe. She does a little bit of vibe coding with Claude as she generates interactive stories. She was trying to track down a syntax error at some point. I was like, can I just install Emacs on your computer so I can do... And she said no. My husband uses Vim.

Sacha: Although he did get very interested in Org Mode at some point, so he found the appropriate Vim plug-in for it. That was amusing. I don't talk to people about editor choices. I just do the stuff that I do. When I write about it, sometimes people will come across it, again, coming from completely different backgrounds. They'll be like, oh yeah, I also need to edit transcripts. What is this Emacs thing? And I'm like, well, it's a very long road, but it's a lot of fun and it's worth it. If you do want to get into it, here's some ways to get started. I don't know. But you can look at the videos first to see whether it might be something that resonates with you.

Matei: Yeah. No, I'm the same. I'm very cautious. I've seen that. The learning curve thing is so cool. My kids are like, your computer used to be so pretty when it was a Mac and now it just looks really ugly. I'm like, oh, if you knew. It's so much more beautiful now, but never mind. Cool. We've talked a lot about AI actually already.

Do you ever use AI in chatbots for anything else?

Matei: Do you ever use AI in chatbots for anything else?

Sacha: Well, I'm learning French at the moment. In this case, the kind of the regression to the mean that AI does is very useful for me because I need to know, what is the common word choice here? How do I get the grammar to do the thing? I don't really want to spend an hour of a relatively expensive tutor's time picking apart my subject-verb agreement or my nouns agreeing in plurality with the verbs and stuff like that. It's reasonably acceptable to use large language models for language feedback. That makes sense. In terms of coding, I'm not there yet. Quite a few people are very enthusiastic about it. Even in Emacs, some people are like, "I don't write my code anymore. I just vibe the whole thing." I love the way that it gets a lot of people to make things that they would not otherwise have the time or effort or experience to do, but on the other hand also, it hallucinates a lot of things. It gets me excited: oh there's a variable or function specifically for this? No! It doesn't exist. I can make it exist, so it's a little less frustrating for me, because I can say, you know, that does make sense. I can write that. I can fill in the blanks for it. But 9 times out of 10, I'll be like, no, no, go back and do the proper search. One out of 10 times, it'll tell me, oh yeah, there is this function and it will exist, exist, then I'm like, okay, great, I want to use that, because I wouldn't have otherwise come across it. But I cannot use it to generate a lot of code because I get this urge to just rewrite things to fit the way I want. I just use it like… it suggests ideas. It acts kind of like a search engine that gets things wrong most of the time. I'll just take the interesting parts of that and do it myself. Aside from that, I haven't really dug into it to the extent that other people have. I am happy to take a step back and see how this all shakes out because with the shake-up in pricing and all the externalized costs that are slowly being factored in, I'm not going to build a house of cards on it.

Matei: Yeah, that's very wise, I think. How do you feel about the fact that these models have been trained on all these free conversations? They just suck up all this stuff that people have been doing for 40 years. Is that a problem in and of itself?

Sacha: It's interesting in the particular case of Emacs. As I mentioned, the vast majority of Emacs Lisp is released under either the GPL or the MIT license or even public domain because people in Emacs really care about sharing stuff and they want other people to do it. It's not like, oh, we've got this proprietary code and it's been stolen away from us, it's us, it's not available for other people. The fact that we're treating AI-generated code as non-copyrightable, it's okay that it's sort of out there. It would be nice to be able to say, hey, this stuff is GPL, so if you're going to build on it, please share it under the same licenses. But in terms of the way that many people use it for personal configuration and learning, I'm okay with that. I know that other people in the community have stronger stances, and that's also okay. Because there's no attribution, there's no link back to the person. The licensing doesn't require [lots of] attribution. You don't have to say, oh yeah, this config was inspired by these people and at these links. You don't have to do that, but it would be nice to be able to follow those links back to the people. That would be nice. The ability for more people to learn from this stuff is good. If we can encourage them to share what they're figuring out with other people, that's also good.

Matei: So is the problem less about kind of taking intellectual property and more about

Not breaking connections to people

Matei: breaking connections to people or like breaking these traceable connections to other people in the community?

Sacha: That's the part that I'm interested in and care about, because I feel the community experience of Emacs is very interesting. All the other stuff, there are people who are far smarter than me and have focused on... This is above my pay grade, right? Actually working out intellectual property, what that means. A lot of people think about copyright and copyleft and that stuff. I will leave that to them to sort all of the ethics after that one. I just care about making sure people can feel like they're learning, feel like they're welcome, and can find the ways forward both with assistance of large language models if they want to, but also connecting with real people who they can learn from too.

Matei: Yeah, super. I think that's sort of the questions I had, really. I'm sure I'm going to have a million other questions. I might email you back about this. Did you have any questions for me?

Education and ethics and eureka

Sacha: I love now knowing that you were writing your manifesto with that experience of being an Emacs user in mind, because the way that the education and ethics and eureka was like, that actually lines up precisely with the Emacs community and what it's like and what we care about. I would love to explore this in future conversations and see how we can help people navigate this time. There's a lot of froth about AI, and the business world is losing their heads over this collectively. The programmers in industry either find it useful but also, in general, seem to have a fairly worse experience. This is not where we should be using this. This is not how this is supposed to be turning out. It should not be leading to more unhappiness, but it is. It would be interesting to sort out both in the society level, but also in the individual level, as people make their own choices about what to use and how much to use it for, and also the impact, even if they're not making those choices themselves. I think the general sense now, for at least Emacs and Org Mode, is "we're not going to accept LLM-generated contributions because we've got to have a person who can stand behind the code." We so far have been safe from the inundation of generated pull requests that are plaguing other open source projects. It's definitely something to watch out for. But there is some tension. People are proud of their vibe-coded projects, but on the other hand, people are like, well, it takes 5 minutes or 15 minutes to generate this, and because it's not really maintainable, people will lose interest in it after their 15 minutes of fame on Reddit with their nice screenshots and all that. It's not going to keep moving forward.

Matei: Is that kind of like a… version of the Curse of Lisp written large? Everyone's just going to write their own programs at home and no one's going to be talking to each other anymore.

Sacha: It is very similar to that. that. It can be a problem. It can be an opportunity. It's not one or the other yet. We're figuring out as a community and as individuals how to navigate this. We have this long history of people not actually being able to adopt to adopt someone else's code off the shelf. It's amazing when someone actually puts together a package that can cut across a large variety of use cases. It takes a lot of work to get there, but things like Magit and Org Mode, how do these things happen? Yeah, it's fantastic. I love the fact that we can look at things

Sacha: like consult and vertico... The fact that they can work for a lot of people is amazing. It's actually pretty rare in the Emacs community. But for the most part, we are in our little fiefdoms and we have to make an effort to do that kind of connection. Whether or not the other person is using vibe-coded code doesn't matter that much. There's still that barrier. Higher barrier if you're dealing with vibe code because they don't understand it and you don't understand it and the code is hard to read. The ideas can be transmitted over blog posts and videos. But at the same time, the fact that more people like you can use this to start to experience the power of Emacs, the customizability of it, and can then go on to imagine, hey, is this what software could be? Can it be personal? Can it be malleable? Can I say, "No company is going to anticipate this particular need, but I can make it for myself."? I think that's really worth it. If the tools will help us get there, and if we can find our own balance of ethics that are okay with this... Some people might say, no, definitely not for me, even if it gives me the power. Some people were like, I just want to get this stuff working. That's cool, too. We get to see how that all works out.

Matei: It's interesting. I've written this paper for which I gave a talk in Oxford a couple of weeks ago about this, really for anthropologists. It's anthropologists. It's very interesting that a lot of the things we were talking about today, I thought that might be the case on some of these things. It's partly thinking about the way in which AI, ChatGPT, whatever, kind of interferes, becomes like a broker between the community and the individual. So the good side of it is that you're never going to be told to go and read the manual, right? It's always going to say, "Yeah, sure, that's great." But the bad thing is, you're never going to go and read the manual. That's the problem, right? But what I said at the end of it and I don't know whether this resonates at all, but I said now that I'm becoming aware that this is a problem, the paradox that I got into Emacs for the community and yet, in a way, I'm being moved away from the community. Increasingly, now, I will ask not "write this code for me" but "explain to me why this code doesn't work" or "explain to me why my problem could be done differently," and even more than that, not even "explain to me this" but "suggest to me how I could post this on a forum." I'm a bit worried about posting on a forum in case someone turns around and says, that's stupid. Claude or someone can say, if you write it like that, some people might find it interesting. Does that feel like a different kind of use of AI maybe?

Sacha: It does, and I encourage the more reflective use of it. For example, you might say, instead of generating this code, you might say, can you help me figure out what it is that I actually want to have in my workflow? Can you ask me questions to help me figure out how to do this or how to break it down into smaller tasks? Then that might be a more useful way of doing it. Sometimes people respond better when something is asking them questions. That is possibly an interesting use of AI.

Matei: Amazing. Sacha, thank you so much for your time.

Future conversations

Matei: Having had this conversation, do you think there's matter here for some kind of live stream or something, maybe with other people who want to talk about this stuff?

Sacha: In fact, if you wanted to take this recording and plop it somewhere public, I am totally fine with that. Learning out loud is how we have these conversations grow, right? The conversation is like this brain dump of ideas, and if we want to start unpacking those ideas and exploring them through all the multifaceted perspectives that we have in the Emacs community, other anthropologists or people who are interested in the philosophy of it, there's people who have so much deep experience in things that I have no idea. I would love for them to be able to say, let's take this facet of this conversation and build on it and explore that one. I am totally okay with both sharing this conversation, if you want to, as well as having other conversations that other people might be able to ripple out from.

Matei: Fantastic. I mentioned to Protesilaos that we're going to have this chat, and he said, you know, if you want to at some point organize a discussion over this kind of stuff, he'd be very happy to be involved.

Sacha: I've been experimenting with making myself ask people for help. Prot has coaching sessions. If our schedules can line up, then I can schedule a three-way conversation. It can be live and we can build on the ideas that you might have or follow-up questions that you might have, and then we can see if other people do as well. So that could be good. I'm looking forward to hearing about your insights. I would love to see where this goes. I think the Emacs community is definitely worth studying. I think that there are insights here that you might not otherwise come across in more specialized, more focused... Like, just developers or whatever, or more focused on closed source. There's something interesting about this mix of Emacs and AI and plain text and all that stuff. I would love to see where this goes.

Matei: Amazing. Thank you very much.

Sacha: All right. Bye.

Matei: Bye.

If you want to chat about Emacs and AI, you can e-mail Matei or check out Matei Candea | Anthropology.

View Org source for this post

Letting A+ play with generative artificial intelligence for fiction, and a primer

Posted: - Modified: | ai

[2025-03-01 Sat]: After experimenting with ChatGPT in depth, A+ has decided that she prefers Claude, so we'll try that.

A+ likes prompting Claude AI to generate funny kid-focused Star Wars fanfic mostly exploring how various characters might babysit Luke, Leia, and Grogu in a universe where Anakin did not fall to the Dark Side. This seems to be working out well. It encourages her to improvise stories even when we're off-screen, and it lets her play with small variations on ideas and quickly try things out. The stories that Claude generates are humorous and descriptive, with better dialogue and characterization than I might come up with myself. This is infinitely better than letting her wander around fanfiction.net on her own.

She often runs into the free tier's usage limits. There are plenty of other things she enjoys doing, so it's not a problem. She just goes on to read other things, practise singing, or colour. Still, we've been noodling around the idea of paying for a subscription, especially if we can help her get even more out of it. For example, maybe we could build some routines like:

  • Daily: Tell me your favourite story of the day. What did you like about it? What was the problem and what was the solution?
  • Weekly:
    • Check in to see if you're all caught up with schoolwork
    • Pick a story and let's draw a quick scene from it together; maybe I can compile it into a little PDF we can enjoy
  • Once a month:
    • Record one story out loud (~ 250 words, so a couple of minutes)

(I know, I know, it's pretty aspirational. But maybe I can sneak some of it in here and there, especially if I start doing it myself. Then she usually wants to join in.)

Prompt engineering

A+ currently writes prompts like:

  • Write a funny story where Darth Vader has a bunch of body doubles (like Queen Amidala did) and they have a very important meeting. The Emperor is trying to find Darth Vader and keeps finding the body doubles instead.
  • Write a silly story where Anakin raises Luke and Leia with Padme instead of turning to the dark side.
  • Write a continuation of The Skywalker Family Chronicles where Anakin is helping Luke and Leia get dressed for a very important Bring Your Children to a Council meeting.
  • Write a funny continuation of The Skywalker Family Chronicles about the time that Captain Rex brought the rest of the 501 Legion and Commander Cody's Legion to help babysit Luke and Leia.
  • Write a continuation of The Skywalker Family Chronicles where Commander Cody has to babysit Luke and Leia because Captain Rex is dealing with leftover Separatist droids and has to call in reinforcements who run into the Skywalker Naboo Lake House, fully armed, and wearing their full armor, asking whether his problem is either rouge Separatists droids or the Skywalker children and bringing two bags of military equipment and two bags of Skywalker Specific Stress Depleters and other things for babysitting.
  • Write a continuation of The Skywalker Family Chronicles where Grogu reads his journal, flipping to the page where Padme takes Ahsoka, Anakin, Yoda, Grogu, still talking and potty training, Luke, and Leia to a boat ride, but it turns out Yoda, Anakin, Luke, Ahsoka, and Leia get seasick, told from Grogu's point of view in detail.
    • It was interesting to see this prompt evolve over 16 iterations starting from "Write a continuation of The Skywalker Family Chronicles where Padme takes Anakin, Luke, and Leia to a boat ride, but it turns out that boat rides become disasters for Skywalkers."
  • Write a continuation of The Skywalker Family Chronicles where Ahsoka reads her journal, ending up on the page where she ends up at the Senate Medical Center due to some flu that only Togrutas can catch, the journal written in slightly squiggly handwriting, which is either Grogu or Anakin's handwriting.
The story Claude generated for that prompt

Ahsoka's Journal — Entry #47

[The handwriting is notably messy and inconsistent, with some letters larger than others and lines that don't quite stay straight across the page]

Dear Snips Journal Ahsoka's Top Secret Thoughts Today's Very Important Record of Events

Anakin here. Ahsoka is sick in bed with Togrutan Spotted Fever (which is apparently a thing??), so I'm writing this for her because she made me promise to "keep her journal updated" and threatened to tell Padmé about the speeder bike incident if I didn't. So here we are.

Medical droid says she'll be fine in a few days but needs rest. She keeps trying to get up to train, so I'm taking dictation between making her stay in bed. Her exact words: "Make sure you get everything right, Master, or I'll know."

This is ridiculous Here's what happened:

It started three days ago when Ahsoka's lekku developed these weird purple spots. She insisted it was "just a cosmetic phase all Togruta go through" and refused to see a healer. Then she collapsed during lightsaber practice, which was TERRIFYING, by the way. Not that I panicked. I was very calm and collected as I carried her across the Senate District while shouting for people to move out of the way.

The twins kept trying to "help" by Force-pushing pedestrians, which didn't actually help AT ALL. Leia claims "that man was going to step on Ahsoka's lekku" but I'm pretty sure she just wanted to see if she could push someone into a fountain. (She could.)

Luke tried to use the Force to make Ahsoka float "so you don't have to carry her, Dad" but only managed to make her boots come off. One hit Senator Organa right in the back of the head. I'll have to apologize for that later.

When we got to the Senate Medical Center, the droid at reception just stared at us like we were crazy. In my defense, it's not every day a former Jedi Knight runs in carrying an unconscious Togruta while two Force-sensitive five-year-olds make medical equipment float around the waiting room.

Padmé arrived looking perfect as always, somehow already briefed on the situation. She claims she "felt a disturbance in the Force, and that disturbance was you causing chaos, Anakin." She's not even Force-sensitive! How does she KNOW these things??

The medical droid diagnosed Ahsoka with "Togrutan Spotted Fever" which apparently only Togruta can catch. The spots spread all over her lekku and montrals before the fever kicked in. The droid said it's like "human chicken pox but confined to head-tails" which is both fascinating and disgusting.

Grogu seemed very interested in the spots, kept trying to touch them until Ahsoka made that scary growling noise. Now he brings her soup instead. At least I think it's soup. It's green and bubbling and I'm a little afraid to ask what's in it, but Ahsoka seems to like it.

Obi-Wan stopped by with "medicinal tea" which smelled terrible but made Ahsoka laugh so hard she snorted bacta solution out her nose. Something about a mission where I apparently got similar spots in an inappropriate location? I DON'T REMEMBER THIS AND IT NEVER HAPPENED.

Oh, Ahsoka wants me to add:

"Master Yoda visited and said 'Strong with the antibodies, you must be.' He brought me a weird root that tasted awful but made my headache go away. Also, tell the younglings the spots are NOT for coloring practice!" Speaking of which, I caught Luke trying to "connect the dots" on Ahsoka's lekku with a marker while she was sleeping. Leia was standing lookout. I'm simultaneously proud of their teamwork and horrified by their choices. Padmé has now banned everyone except medical droids from the sick room after Ahsoka's fever spiked when Rex brought the entire 501st to "boost morale." Apparently twenty clone troopers singing get-well songs isn't restful. Who knew?

Ahsoka is falling asleep now, but insists I note that "Anakin's nursin g skills are terri bl…"

She didn't finish that sentence because she's WRONG and also finally sleeping. I am an EXCELLENT caretaker! I've only spilled bacta solution twice, and the second time wasn't even my fault because R2 bumped into me. I should wrap this up. Padmé says my handwriting is getting worse, which I didn't think was possible. Also, Grogu is trying to add his own notes in the margins and I can't tell if those are drawings or actual words. Get better soon, Snips. The twins miss their "Auntie 'Soka" and I miss having someone else to blame when things go wrong.

— Anakin

[In the corner, there appears to be a small green handprint with what might be Grogu's attempt at writing "Get better" beside it]

All right, let's get a bit meta here. "Here are some prompts that my 9-year-old child has been using to generate funny Star Wars fanfiction in alternate timelines. Suggest 5 ideas for improving her prompts and provide detailed examples." We're out of free messages for Claude, so I asked ChatGPT.

It suggested:

  1. Be more specific about the chaos or conflict.
  2. Add unexpected reactions from characters.
  3. Use a "What If?" format to spark creativity.
  4. Introduce a clear perspective or narrator.
  5. Add an absurd or over-the-top element.
Full response including examples and details

Your child already has a fantastic imagination and a great sense of humor! Here are five general tips to help improve and refine her prompts for even funnier and more engaging Star Wars fanfiction:

1. Be More Specific About the Chaos or Conflict

  • Funny stories often work best when there's a strong contrast or a big misunderstanding. Adding more details about what could go wrong will make the story even funnier.
  • Example: Instead of: "Write a funny story where Darth Vader has a bunch of body doubles, and the Emperor keeps finding them instead." Try: "Write a story where Darth Vader has a dozen body doubles, but they're all terrible actors who keep revealing they're fakes in ridiculous ways. The Emperor gets increasingly frustrated as he accidentally promotes one to Grand Moff, challenges another to a lightsaber duel, and gets tricked by one into approving a Death Star Karaoke Night."

2. Add Unexpected Reactions From Characters

  • One of the funniest things in fanfiction is when characters react in ways they normally wouldn't. Encourage your child to play with unexpected character reactions.
  • Example: Instead of: "Write a silly story where Anakin raises Luke and Leia with Padmé instead of turning to the dark side." Try: "Write a story where Anakin raises Luke and Leia with Padmé, but he's the most overprotective parent in the galaxy. He installs lightsaber-proof baby gates, interrogates their playdates like a Jedi Council trial, and insists on Force-training them before they can walk. Meanwhile, Obi-Wan just shakes his head and drinks space tea."

3. Use a "What If?" Format to Spark Creativity

  • Reframing prompts as "What if?" questions can help make them more engaging and open-ended.
  • Example: Instead of: "Write a funny continuation where Captain Rex and the clones babysit Luke and Leia." Try: "What if the entire 501st Legion had to babysit Luke and Leia for a day, but they treated it like a high-stakes military mission? Their strategy meetings include creating 'Operation Diaper Storm,' using clone trooper formations for nap time, and having emergency evacuations when Leia gets hold of a blaster."

4. Introduce a Clear Perspective or Narrator

  • Some of the best humor comes from seeing an event through the eyes of a character with a strong personality or a unique way of looking at things.
  • Example: Instead of: "Write a story where Grogu reads his journal about a boat ride." Try: "Write a story from Grogu's journal where he describes (in broken baby Yoda language) a disastrous boat ride. Yoda, Anakin, Luke, and Leia all get seasick, Ahsoka tries to 'train' the fish, and Padmé regrets everything. Meanwhile, Grogu just wants snacks and writes about it like it's a Jedi prophecy."

5. Add an Absurd or Over-the-Top Element

  • Taking an idea to the extreme can make it even funnier.
  • Example: Instead of: "Write a story where Commander Cody has to babysit Luke and Leia." Try: "Write a story where Commander Cody has to babysit Luke and Leia, but he's so stressed that he calls in every trooper he knows for backup. Within an hour, the Skywalker Lake House is surrounded by AT-ATs, aerial support is patrolling for 'nap-time threats,' and Palpatine accidentally approves a new 'Elite Babysitting Clone Squad' after mistaking their report for a battle plan."

Encourage her to keep going with her hilarious and creative ideas! These small adjustments can make the prompts even more fun and engaging. 🚀

We read through this yesterday, and she's started telling me how she's added more detail to her prompts. I think she takes constructive feedback from the AI better than from me (just like using a timer works better than me telling her it's time to wrap up), so maybe there's some opportunity here on using a layer of indirection to keep the grumps from getting in the way of learning…

A primer on generative AI

I don't want A+ to treat generative AI as some kind of magic black box with amazing capabilities, so I've been sprinkling in some primer information here and there. I want her to understand roughly how it works, how it's not actually thinking but can still do a surprisingly good job of putting things together based on patterns derived from really large data sets in ways that are hard for humans to fully understand.

I also explained how conversations and token limits work. She's already getting the hang of editing prompts to refine things instead of adding more prompts to the conversation, although she still prefers to keep most of her story prompts in one conversation because the stories sometimes refer to previous incidents in the timeline.

Text from sketch

Generative artificial intelligence

How it works:

  • Tons of data: webpages, books, questions & answers, even images & videos
  • Computer model that predicts the next word/etc.
    • noticing the context
    • bat: ball, fly, base
    • bat: cave, wing, guano, fly
    • bat: man
  • Repeat with training until it gets things mostly right
  • We finish each other's sentences/sandwiches

Result: tools that can predict words or fill in blanks or even make images, recordings, and videos of things that don't exist.

They don't actually think for themselves yet; although sometimes the results can be quite interesting

Things to remember:

  • It doesn't actually know or think things. Not everything it says is true. Double-check when needed.
  • It usually doesn't cite or credit its sources. Even when it seems to do so, it can be wrong. So double-checking can be hard.
  • Use it to help you learn & explore. Don't let it substitute for your thinking & learning.
  • Don't put sensitive/private info in.

Caveats: The models cost a lot of energy to create. They cost less energy to use, but still a lot in terms of carbon emissions, water, etc. The data they were trained on includes things that people didn't give them permission to use. They are changing jobs & industries, but are often overhyped. Everyone's still figuring things out.

prompt, response context, tokens

sachachua.com/2025-02-27-01

Other resources:

I also showed her what NotebookLM could do with audio podcast generation, so she could get a sense of computer-generated audio. She noticed the interactive mode, so we experimented with that for a bit. The pauses in her speech tend to trigger premature answers, so it works better if she thinks about her sentence and says it confidently.

Going forward

A+ finds generating text very engaging at the moment and I think she's learning a lot through experiments. She'll probably have a deeper understanding of and appreciation for fiction than I did as a kid because she can easily change some things and see how it feels. (What if this story is told in third-person perspective? What if this story is told in present tense or past tense? What if this event happens differently; what would happen because of that change?)

With any luck, exposure to lots of story elements, vivid words, and dialogue will influence how she writes. Maybe she'll eventually get to the point where she can imagine a story and then want to write parts of it or all of it herself to bring it closer to her vision. So it's probably worth supporting this and seeing where it can go.

View org source for this post

Thinking about how I can use large language models

| ai, geek

I wanted to follow up on my post on large language models and me from January and do some more thinking/learning out loud.

Data

I have >= 8000 posts in my blog, almost 4000 sketches (mostly public, many with OCR results), and lots of text notes in my Org Mode files, many of which are in a hierarchy and many of which are just a random list of entries.

There's also the episodic memory aspect of things, trying to remember using different cues. Might be fun to figure out what I can do with >= 16,000 text journal entries (usually a sentence, sometimes longer).

Vector/approximate search

I like the idea of being able to search my notes with both exact and approximate matches. Semantic Search for Org roam | lgmoneda might be a good starting point. Khoj has a free self-hosted option that can be configured to use offline models and some support for Org Mode, but it might be too big for me to wrap my head around at this point. I'll probably write my own thing so that I can understand it and so that I can tailor it to the structure (or lack thereof) of what I've got.

I don't mind starting with just the retrieval aspect, since text generation is still a little iffy. I'd rather be able to flip through the titles and jump to the source information for now.

I'm partly looking for the modern equivalent of the Remembrance Agent, which I enjoyed using in Emacs before. It used a bag-of-words approach to look at a few hundred words around your cursor and suggest files/emails/etc. that were relevant in another window.

Episodic search

Slightly more far-off: it might be nice to be able to find something based on more retrieval cues and episodic memory, and to enrich memory.

Someday it would be pretty cool to have something help me remember where I left something. Video (SpotEM, Episodic Memory Question Answering) might be excessive, but maybe I could get into the habit of audio notes?

Transcript correction

It would be good to have more conveniences for fixing commonly-misrecognized words, although that might also be handled with simple regex-based replacements (maybe like mbork's mrr-replace-mode).

Topic identification and segmentation

It would be nice to automatically break up transcripts of braindumps or web conferences into topics. I currently do a bit of light structuring via keywords in my audio braindumps, but topic segmentation is a well-established area, so I should be able to figure this out once I set aside time for it.

Question-answering: not so much yet

I thought it was a little interesting how Dan Shipper used 10 years of journal data for retrieval-augmented text generation and question-answering (source) and how AI can make analyzing your thoughts and actions feel more like a conversation, but I don't think this is quite useful for me yet.

Question-asking might be more useful

When I'm writing, my challenge is usually resisting going down the rabbit hole of more tweaks and instead reining things in so that I can finish the post. But if I do find myself wanting to write more, I think it might potentially be interesting to ask what kinds of follow-up questions people might ask about something, and then add links or more explanations.

View org source for this post

Large language models and me

| ai, geek

Summary (1895 words): There's a lot of hype around large language models (LLMs) or generative pre-trained transformers (GPTs) like ChatGPT. I'm still trying to figure out how I can use them.

Text from sketch

I'm a little curious about how large language models like ChatGPT might fit into my life. There's a lot of hype, and I'm not yet sure what the value might be for me. While companies rush around trying to stake their claims and strike gold, I can find my own way more slowly.

Things it might be good at:

  • text classification with vectors
  • tip of the tongue: remembering common words and concepts
  • research and summaries
  • outline braindumps
  • follow-up questions
  • figuring out what I want (mostly in contrast to what I don't want)
  • ideas about common topics
  • making up stories and poems for the kiddo

Probably medium-term, after livestreaming and vector search.

Maybe focus on API access versus ChatGPT Plus.

It's a bit of a gold rush in the tech industry at the moment with all sorts of companies scrambling to figure out generative artificial intelligence and large language models. I feel like I don't quite line up with the personas these companies are building for. I don't want autogenerated marketing fluff for my newsletter or social media posts, and I'm still a little iffy on code. I probably need to go figure things out for myself.

I've built a couple of question-answering prototypes using retrieval-augmented generation with LangChain or Llama Index for my consulting clients, and I've started experimenting with using HuggingFace embeddings to do vector search across my blog post and sketchnote titles. I'm also curious about how other Emacs geeks have been experimenting with large language models, such as Abhinav Tushar's EmacsConf 2023 talk on simplifying data visualization with Org Babel and Matplot, Andrew Hyatt's llm package for standardizing interfaces, and the AI category items in my Emacs News.

W- has been experimenting with ChatGPT Plus too. He finds that it's useful for summarizing videos and world news. The sequence of images it generated for a Vim GPT logo was hilariously off-base. Maybe I should mentally file it under entertainment instead of productivity, and anything actually useful can be a bonus.

I think that at the moment, GPTs generally do better when you keep them. Here are some quick notes:

Text classification with vectors

I categorize Emacs News links so that it's easy for people to find the topics they're interested in. Most of the time, a simple regular expression match is enough (ex: Org Mode, Denote, Magit). I can probably make a training data set from recent Emacs News posts so that I can use text classification libraries to suggest a category for links that aren't easily figure out with regular expressions.

Tip of the tongue

I think GPT is useful for figuring out the words to look for. One of the challenges of learning more is figuring out the jargon, like learning how to use M-x apropos to look for things related to buffers. (Apropos, buffers; Emacs uses lots of weird words.) Even when you know the words, it can be hard to remember them: tip of the tongue is a thing, and it'll probably get harder as I get older. (Another good reason to exercise.) It'll be handy if I can just vaguely describe something and then get the words to look for, or use vector search to find things based on similarity rather than exact matches.

Research and summarization

I appreciate that the web access in ChatGPT-4 and Microsoft Bing/Copilot allows me to get search results back without having to deal with all the generic SEO content, newsletter popups, and content paywalls that plague the modern web. Sometimes it will even analyze the information and put things into tables or outlines for me. Of course, it is also contributing to the problem by making it easier for people to churn out lots of generic SEO content or newsletter updates, so this feels somewhat self-defeating in the long run. We'll just have to see how it all works out.

I'm also curious about using it to summarize the videos I come across for Emacs News, although people usually set good titles and a quick skim of the transcript usually helps.

Outlines

I'm ambivalent about generating outlines for blog post ideas. The ones it comes up with from short prompts are pretty generic and intro-focused, and it feels easier to just start with my own outline.

Sample outline for a blog post idea

I. Introduction

  1. Personal Reflections
    • Express curiosity about the potential of large language models in daily life.
    • Discuss the hype around these models versus personal exploration.
  2. Setting the Stage
    • Briefly mention the rise of companies in this domain and public interest.

II. Understanding Large Language Models

  1. What are Large Language Models?
    • Definition and basic explanation.
    • Brief history and evolution.
  2. ChatGPT: A Case Study
    • Introduction to ChatGPT.
    • How it differs from traditional models.

III. Practical Applications of ChatGPT

  1. Everyday Uses
    • Text classification with vectors.
    • Memory assistance: Remembering common words and concepts.
    • Research and summaries.
  2. Creative Endeavors
    • Generating stories and poems.
    • Using ChatGPT for brainstorming and idea generation.
  3. Professional Scenarios
    • Outlining and organizing thoughts.
    • Follow-up questions and deep-dives into topics.
    • Contrasting desires and needs: Figuring out preferences.

IV. Exploring Advanced Features and Accessibility

  1. Beyond Basic Use: Advanced Features
    • Exploring vector search.
    • Potential of ChatGPT in livestreaming contexts.
  2. Accessibility and Options for Users
    • Comparing API access with ChatGPT Plus.
    • Discussing the implications for different types of users.

V. Conclusion

  1. Personal Reflections Revisited
    • Revisiting initial skepticism or curiosity.
    • Reflections based on the exploration in the article.
  2. Looking Forward
    • Potential future developments in large language models.
    • Encouraging reader interaction: Inviting questions and comments.

The outlines it generates from my audio braindumps could be an interesting way to structure a large wall of text, if I could just get it to use more of my own words while still correcting misrecognized words.

Follow-up questions and ideas

I could give GPT a blog post or presentation draft and ask it to generate follow-up questions so that I can flesh ideas out further. Although usually adding more stuff isn't a problem for me–it's more like finding a good stopping point instead of getting tempted to squeeze one more hack in…

The kiddo sometimes needs a bit of prompting to elaborate on her writing homework. She responds well to me mind-mapping while we free-associate words, but sometimes it helps to have follow-up questions, and it works out much better when the computer's the one asking the follow-up questions instead of me.

Figuring out what I want to say and how

Sometimes I'm not happy with the way a sentence or paragraph flows. Metaphors can be helpful. Mixed metaphors are weird. Maybe a GPT can help me find a smoother way to explain things. Getting writing suggestions seems to be fine on a very small scale (phrases or sentences).

When I ask GPT to write longer things, then things get crazy. ChatGPT is pretty good at getting me to say "That totally doesn't sound like me, I'd better just write it myself," which seems like a common result.

AI style guide

I wanted to see if I could get it to sound more like me, so I went through Tiago Forte's tutorial for creating an AI style guide. I gave it a few of my recent blog posts (1, 2, 3, and 4) and asked it to summarize the resulting style guide concisely. I've included the details in case you want to get an idea of the kinds of things it makes, but it seems more suited to flattery than to practical application.

Sample analysis for one blog post

Voice and Tone

  • Formality: The language is informal and conversational, combining personal anecdotes with a discussion of workflows and projects.
  • Authoritative vs. Friendly: The tone is friendly and reflective, sharing personal experiences and thoughts in an approachable manner.
  • Overall Tone: There is a sense of openness and exploration, with a focus on sharing personal learning and development processes.

Mood

  • The mood is contemplative and optimistic, reflecting a mindset of constant learning and adaptation.

Sentence Structure

  • Structure Type: A mix of compound and complex sentences, with a strong narrative flow that interweaves personal insights with technical descriptions.
  • Length: The sentences vary in length, balancing brief statements with more elaborate explanations.

Transition Style

  • Transitions are smooth and natural, often moving from a general idea to specific examples or from one aspect of a project to another.
  • The writer uses a blend of direct transitions and narrative progression to guide the reader through different ideas and concepts.

Rhythm and Pacing

  • The rhythm is consistent and engaging, with a good balance between detailed technical information and personal narrative.
  • The pacing is moderate, allowing the reader to absorb the information without feeling rushed.

Signature Styles

  • Recurring Phrases: Frequent use of terms related to personal productivity, technology tools, and creative processes.
  • Unique Punctuation: Inclusion of lists and occasional asides to provide additional context or to elaborate on a point.
  • Patterns/Repetitions: Regular mention of personal routines and habits, combined with technical tool usage and idea development.

Distinctive Writing Style Indicators

  • A strong focus on personal productivity and idea management, combined with technical tool usage.
  • Frequent reflection on personal learning processes and adaptation strategies.
  • An engaging narrative style that seamlessly combines personal experiences with technical advice and insights.
  • The inclusion of potential future improvements and explorations, indicating a forward-thinking and open-ended approach to problem-solving.

In summary, this text further cements the author's distinctive style of blending personal narrative with technical content. The writing is reflective, engaging, and informative, offering insights into personal workflows and idea management. The author's approachable tone and focus on continuous learning and adaptation make complex topics accessible and relatable to the reader.

Expanded AI style guide combining the guides from several posts

Voice and Tone

  • Formality: Adopt a semi-formal language, leaning towards informal. Use a conversational style but include technical jargon where appropriate.
  • Authoritative vs. Friendly: Aim for a friendly, informative tone. The writing should guide and assist, rather than command.
  • Overall Tone: Maintain a helpful and instructive tone, with a focus on practical application and reader engagement.

Mood

  • Keep the mood pragmatic and enthusiastic, especially when discussing the efficiency and utility of tools, methods, and personal projects.

Sentence Structure

  • Structure Type: Utilize a mix of simple, compound, and complex sentences.
  • Length: Vary sentence lengths. Use brief sentences for straightforward facts and longer ones for detailed technical explanations and personal anecdotes.

Transition Style

  • Ensure transitions are smooth, moving from general ideas to specific examples. Use both direct transitions and subtle shifts in topic, based on the subject matter.

Rhythm and Pacing

  • Maintain a moderately paced rhythm. Balance shorter sentences for clear facts and longer ones for in-depth explanations.
  • Keep the narrative conversational and engaging, with a balance between technical details and personal reflections.

Signature Styles

  • Recurring Phrases: Frequently use phrases like "Org Mode," "Emacs," and relevant technical terms.
  • Unique Punctuation: Use parentheses for additional information and include code snippets where relevant.
  • Patterns/Repetitions: Regularly follow the introduction of a concept with practical, often technical, examples.

Distinctive Writing Style Indicators

  • Blend personal experience with technical instruction.
  • Use specific examples, particularly code snippets, to illustrate points.
  • Combine technical jargon with a conversational tone.
  • Include practical applications and benefits of described methods or tools.
  • Integrate personal anecdotes and reflections with technical content.
  • Use interactive elements like reader questions and responses to foster a community-focused approach.

Additional Elements

  • Focus on problem-solving and exploring new tools or methods.
  • Include visual elements like screencasts or diagrams to enhance understanding.
  • Reflect on personal learning processes and adaptation strategies.
  • Consider potential future improvements and explorations in the subject matter.

When I asked it to summarize the style in a single paragraph, it said:

Use semi-formal, conversational language with occasional technical jargon. The tone should be friendly and informative, focusing on practical applications and engaging the reader. Include a mix of sentence structures, varying lengths for clarity and detail. Transition smoothly between general ideas and specific examples, maintaining a moderate pace with a balance of technical details and personal reflections. Frequently use phrases like 'Org Mode' and 'Emacs', and incorporate parentheses for additional information and code snippets to illustrate points. Blend personal experiences with technical instruction, using specific examples, especially code, to clarify concepts. The content should emphasize problem-solving, exploring new tools/methods, and personal learning processes, with visual elements like diagrams for better understanding. Aim to reflect on potential future improvements in the subject matter, fostering a community-focused approach with interactive elements like reader questions.

This feels related to the Barnum effect, which is the psychological phenomenon that explains how many people feel like very general statements (ex: horoscopes) are specific to them. I'm not sure I could give this to a human and get them to write like me enough that I'd want to use the text.

I've had a few opportunities to reflect on what does sound like me, mostly thanks to EmacsConf. For example, I definitely skew the e-mail personality away from polished to personal. (Do other conference organizers include "aaaah!" and stress levels in their e-mails?) I tell GPT to get rid of its adjectives. Even with this style guide and additional instructions like avoiding adjectives, I haven't gotten ChatGPT to cut down on this thing I can't quite figure out how to explain. The way it writes feels like it's just a bit much.

Generating text

Here's what it came up with when I asked it to use the style guide and write one paragraph about how the cat's been waking me up at 5:30 AM, the kiddo wants bedtime snuggles at 11:30 PM, and I can tell when the sleep deprivation's building up thanks to the brain hiccups I get when solving a Rubik's cube. It said:

Ah, the joys (and challenges) of balancing family life with personal interests and hobbies! Let me tell you, as someone who's navigated the tricky waters of being woken up by a cat at the ungodly hour of 5:30 AM and then, barely blinking away the sleep, being summoned for late-night snuggle sessions with the kiddo until 11:30 PM, I totally get the feeling of being perpetually sleep-deprived. This exhaustion hits hardest when I'm trying to solve Rubik's cubes. Normally, I'd zip through the algorithms with ease, but now, I find my brain hiccupping mid-solve, forcing me to backtrack and re-solve. It's like my mind is stuck in a loop!

Which… well… It's reassuring to know that even though I sometimes feel self-conscious about enthusiasm! exclamation marks! geeking out about stuff! I actually write in a more restrained manner compared to how ChatGPT thinks I write.

Also, ChatGPT enthusiastically went on to write two paragraphs making up more stuff out of whole cloth, which I will tuck behind a collapsible section because this is definitely more along the lines of entertainment rather than productivity at this time.

More from ChatGPT

But, you know, this is where my geek side comes to the rescue. I've started using Org Mode in Emacs (my go-to productivity tool) to manage my day better. How? Well, for starters, I've programmed a custom routine that reminds me to take short, but effective power naps. Think (setq power-nap '(15 "minutes")). This tiny snippet of code, embedded in my daily schedule, works wonders! Plus, Org Mode's flexibility allows me to seamlessly integrate family time into my daily planner, ensuring I don't miss out on those precious moments. And when it comes to problem-solving, I've begun to treat my Rubik's cube solves like mini projects. I break them down into steps and track my progress (and missteps) in Emacs. This not only helps me understand where my sleep-deprived brain is tripping up but also serves as a great way to visualize my thought process (hello, mind maps!).

Looking ahead, I'm considering exploring Emacs extensions that could further optimize my routine, maybe even one that predicts the best times for cube-solving based on my sleep patterns. It's all about finding that sweet spot where personal hobbies and family life can coexist without leaving me feeling like a zombie. Who knows, maybe I'll even code a mini-game in Emacs for my kiddo, blending playtime with my love for coding. The possibilities are endless, and that's the beauty of it. Any fellow Emacs users out there with similar challenges? How do you balance it all? Let's share some tips and tricks!

So yeah. Maybe not text generation just yet.

Ideas about common topics

My energy can get pretty low during the afternoon because of the aforementioned 5:30 cat alarm. It can help to have something suggest a list of ideas that we can pick from, like little Minecraft build challenges.

Making up stories and poems for the kiddo

It's a handy way to generate short stories and poems based on the kiddo's interests. I've been getting her to supply a prompt in either the SWBST story summary format ("Somebody… Wanted… But… So… Then") or the beginning/middle/end format so she does some of the work, and then GPT can deliver the payoff in the form of a fleshed-out story that invariably makes us giggle.

Wrapping up

This is more of a low-priority medium-term thing for me to explore, probably after I spend some more time getting the hang of livestreaming, transcripts, and vector search. I'll keep an eye out for interesting ideas.

I think I can access the GPT 4 model (or maybe gpt-4-1106-preview) on a pay-per-use basis through the API, which will probably work out better than paying USD 20/month for ChatGPT Plus. I can also check out Gemini Pro's API.

A cursory skim of r/LocalLLaMA gives me the impression that for reasonable non-toy use, local large language models require way better hardware than I have at the moment. Even people with more powerful hardware tend to focus on smaller models (maybe for coding autosuggestions or generating text for roleplaying games), and they use commercial GPTs for things where they want larger context windows or more general knowledge. Might be worth checking on this in a little while as people work on scaling models down and figuring out more things to do with open source models.

Anyway, those are my notes on this so far. Looking forward to reading more about how people are using LLMs in Emacs, considering all the things that Emacs can work with!

View org source for this post