Taming Your Emacs Packages with Elpaca - System Crafters Live!

Video Statistics and Information

Video
Captions Word Cloud
Reddit Comments
Captions
foreign [Music] [Music] [Music] what's up everybody Welcome to system covers live I'm David Wilson and we're back with another Friday stream my mouth is getting away from me already where we get together as a community and talk about whatever topic I've come up with for the week and this week is no exception so um yes let me just get my brain and my communication device in sync and we'll get started so I'd like to say hello for the uh folks who are here so far data monoid uh summer emacs Glenn uh Jeff Christopher uh gun Judy and menacing Mecca hey nice to see you all thanks so much for being here today all right just double checking everything cool so uh today we're going to take a look at a uh package called alpaca or alpaca I don't know how you want to pronounce it uh which is basically a new package manager for emacs we'll get into that a little bit but um it's a package that people have been asking me about quite a lot over the past few months so I figured you know it's a good time to dive into it to see you know whether it's something that you might want to use in your own configuration uh so uh hello to Laurent to nictor all right let's get into the updates so first of all uh Gunn says David seemed to have watched DT's video he's using alpaca as well I don't watch anybody else's emacs videos because I I don't want anybody else's stuff getting into my head I'm trying to give you my pure unfiltered uh views and uh suggestions without seeing what other people are are saying I know that DT is basically doing emacs from scratch right now though which I think is pretty funny hello to sem all right so first of all a big week of progress on craftedgeeks we talked about this last week uh the stream last week was basically sort of the foundational discussion about what I had in mind for that project and working on that a little bit uh since then I made a lot of progress on getting the early design worked out and the first PR that I had there has been merged and I'm pretty happy with how things are looking so far I think it we actually will be able to deliver on the idea of having a simplified configuration format that makes it easy for people in the community to share configurations for various different things like window managers various programs maybe Services you would want to want to run that span across the system and the user space so if you're interested in trying out Geeks and you haven't really done it before it's not ready for you right now but the idea is that it will be so keep an eye on that project and as time goes on I think it will be able to make it easy for you to set up geeks and get a really nice configuration pretty much out of the box which is not something you get today with geeks you basically well I mean you can I suppose if you select one of the desktop environments but I think we can do better than that so keep an eye on that project also I want to give a shout out to uh someone that I'm going to call uh shot wizard because I don't want to make YouTube upset to say the real way it's supposed to be pronounced but the shot wizard was a very helpful uh in the pr and also in the issues that I filed in the repo I provided a lot of really insightful comments and suggestions so I'm very appreciative to uh the shot wizard for coming by and chatting with me on that and uh I think I might see some some contributions from uh from uh shot wizard in the future here so uh yeah keep it out for for that and um let's see what else uh I think I'll be trying to get my own configuration moved over to crafty Geeks fairly soon mainly because I need to test it in like a real world setting so I'm trying to just make everything that I have in my config working crafty Geeks but that's not too hard because I don't have a whole lot of strenuous configuration or Home Services yet but it's good because it's an opportunity for me to try to write more home services and generalize the parts of my config that I already do have I don't have a big incentive to do it on my own because if it works it works but if I want someone else to use it I have to spend some more time thinking about it so all right we'll be uh it'll be cool so um last thing I want to say about that is that if you're interested in possibly contributing to the project I've already started filing issues on the codeberg repository uh which I didn't mention up until now it's uh codeberg.org systemcrafter craftedgeeks on the issues page I've got some issues filed here and some of them are marked as help wanted and some are marked as four new contributors so if you want a place to get started for contributing drop by take a look at the issues and maybe try one of the ones that are for new contributors or help wanted if you're already familiar with you know hacking code and Geeks you might be able to just pick some things up and start I I've tried to specify them as well as possible so that someone could pick them up and run with it so uh let's see also if you have specific things that you would like to have configured in Geeks and would like to have maybe a simpler way to configure it definitely feel free to file issues asking for those maybe other window managers other programs Etc because I want this to be a more comprehensive resource it's not going to be just one way to do things there could be many ways to do things so if there's something you're interested in that uh you or someone else in the community might be able to contribute to the project please feel free to file an issue there and uh and ask about it uh Judy's saying that is emacs low res today the screen capture yeah it's always a little bit low-res on this uh this setup for some reason I'm using like HDMI through a capture device and it's a little bit fuzzy I don't like it but you know that's what we have to deal with I also want to mention to uh subscribe to the newsletter unfortunately I did not get an issue of that out this week uh it's proven to be fairly difficult to help my wife take care of a baby during the day with no other help because my wife's parents are gone on vacation now so uh I didn't have a whole lot of time to get the uh newsletter done but I guess I should also blame myself because I got a little too invested in crafty Geeks so that will be back next week for sure and if you have any ideas for things you would like to see covered in the newsletter please feel free to send me a message either by email or on any of the chat protocols you can find me on Matrix or IRC um also if you're interested to support the work that I'm doing please feel free to check out this link to the systemcrafters.net website under how to help there's a few different options there if you're interested and that's all I'll say about that okay so as I mentioned before today we're going to try out the newish I say new-ish because it didn't just come out but it's fairly recent I think it's probably within the last you know six months or so uh package manager called alpaca uh now this is a package manager uh well let's just talk about what a package manager in emacs is first because maybe that's oh I've already got it open uh that maybe that's useful um a package manager is a piece of code that makes it easy for you to install Community packages for emacs uh without having to go download them yourself so in emacs there's a built-in package manager called package.el and if you use this package install command it will give you well because I'm using vertico plus some other stuff it gives you this nice list here but it gives you a listing of all the possible packages for all the package repositories you have configured and by default that's usually the elpa and nanganu Alpha repositories and uh package.el is fine it works pretty well I don't really have major complaints about it it's getting better in Emax 29 as well so that's pretty cool but there's been other package managers that have come up in emex land over time there's been uh cuellpa and cask probably some people can throw some names out in the chat as well um what else uh straight.el Etc so there's different ideas for how to do package management for emacs and alpaca is another uh entry into that sphere of packages uh it was written by Nicholas vollemer who is pragfolio on GitHub but you may see him around as NV e-lisp on Reddit and on the system Crafters Matrix IRC and uh he's been a contributor to straight.el in the past plus other emacs packages so he's been around he understands the ecosystem and how things work and also has some um uh Insight from working on straight.el about you know maybe what he would like to see in a package manager so uh it's gonna be interesting to see what his take is on the whole thing so the GitHub repository if we look at it which is at github.com it says that I choose data in spits packages nice cute logo here and it's an e-list package manager allows users to find install update and remove third-party packages it's a replacement for the built-in package.el and the features are that it installs packages asynchronously so uh if you've ever written an emacs configuration that has quite a lot of packages that need to be installed the first time it gets loaded and you actually load the configuration the first time and it starts installing everything you have to wait for maybe four or five minutes before all of your packages get fully installed and your emacs is ready to go apparently alpaca does things in the background so that when you start your emacs or try to install a package it doesn't actually block emacs from being used I'm interested to see how how well this works because for like the first run situation for configuration it would be interesting to see like how well the configuration boots up without all those packages there you might have to have you know a fairly decently written configuration to cope with that situation but it's like a you know once in a blue moon type deal I don't think you're gonna be loading your configuration from scratch too often um also has a flexible UI for finding and operating on packages this would be an improvement to the package a list it's called list packages now which is this view that comes with package.el apparently alpaca has its own view for that so we'll take a look at that as well it can download packages from their sources for convenient e-list development it may do that for all of them sort of like how straight.el will download the actual git repository for all packages that you install the idea is that because emacs is a very Community Driven ecosystem and uh you're probably using a lot of third-party packages by other community members it makes sense that you would have the code just ready to go on your machine so that you can maybe try to fix a bug that you find with the package or add a new feature and then easily send a pull request to that package Repository so alpaca is one of those types of package managers that will clone the actual git repository down so it's easy for you to contribute and even you know track the latest changes on Master for the packages that you use it says it supports thousands of e-list packages out of the box melpa non-gunu and gnu elpa Oregon Oregon Trail the the typical uh uh package repositories It also says it makes it easy for users to create their own elpas which we'll try to take a look at I don't really know what that means but I'm curious to see what that means in practice requirements are that you have emacs greater than 27.1 greater than or equal to 27.1 so a relatively recent emacs build I think most Linux distributions have at least 27 these days if if they don't then it's super out of date because 26 was a long time ago um it needs git because it's trying to clone repositories they don't know what the minimum version is maybe it doesn't matter too much because it's probably just using git clone and windows users must be able to create Sim links that's something that uh is only allowed for administrators I think so you need to be an administrator user on Windows if you use emacs natively on Windows not through WSL so uh now the to install alpaca you have to copy this big wall of e-list code to your init.el file which is not a big surprise because straight.el is the same way uh it basically just bootstraps the installation of alpaca because you can't really install alpaca uh without a package manager so you have to install it some other way which means you have to sort of Clone it manually which is what this whole thing is doing oh hold on a second do we have some flaky HDMI issues yes um uh utkarsh asks when are we getting an updated emacs from scratch series I should probably do that I keep talking about it and I started doing one and I didn't really like the way I was going with it so maybe I'll just do a simpler one at some point okay so here's what we're gonna do today um to demonstrate the features of this package manager I'm just going to try to create a new configuration from scratch so if you want emacs from scratch here's going to be one stream we're basically going to do some of that I'll set up a new configuration from scratch using alpaca so we can see basically what the process looks like install a bunch of packages get them set up at a very minimal level and then we'll try to delete the package folder load up the configuration again to see how it works whenever it tries to reinstall everything to see if emacs is blocked or maybe if it has any weird issues and then we'll experiment with some of the other features that are listed like the package listing and well maybe we'll do that in in the meantime but the package listing and um the uh the user elpa thing that I'm not so sure about all right so let's see K says just get on 31 already yeah I don't know why is your screen blurry but your webcam isn't because the screen is going through HDMI capture is it that blurry today let me see hard for me to tell in this View uh uh where's full screen in this UI is it really that bad wow that looks pretty bad doesn't it I wonder what will happen if I try to disconnect that HDMI cable and replug it could be a terrible idea all right hold on one second put on my glasses no okay it came back up and it looks basically the same to me I think unfortunately case is waiting for emacs two to the five okay stats can't really read it what happened today that's very strange um one second trying to see like if there's a way to reset the reset transform oh there we go let's make it real small same unfortunate okay I hope it's legible to some degree okay here we go so let's uh start up a new Emax config and uh we're gonna put it in let's see projects code alpaca config init.el and I'll save that to make the folder and then I'll go back to uh this code here is there like a copy button here great there's copy button right here so we'll go in and set up alpaca El Papa yes okay so that's the first thing is to basically get alpaca set up and running so let's open up well you shell is not uh cooperating with me today so what I'm going to do is load up B term instead and then I will go to that folder projects code alpaca config yes I know I have two of them up here all right now uh emacs init directory oh I need to do like a maybe an uh what do you call it a geek shell which is going to make it even more more blurry which is going to be really fun trying to think there's a way I can do this without it maybe I can use I'm trying to set it up so that um my emacs load path doesn't get pulled in okay so maybe I can just unset that so how do you do that as a delete Dell emacs low path no I better just set it to nothing okay cool let's go with that yeah yeah thank you Judy okay so now emacs uh init directory Dot cool so it says cloning into the folder the alpaca repo slash alpaca your branch is up to date all right oh okay interesting that it gave me a log and uh some details about things that it hasn't done yet but I imagine that status will be written out there whenever it starts installing packages so that's good let's get started so I'll go back and try to throw some things in here so that it doesn't look completely uh horrifying so let's go to init.el so first of all let's set up a theme so that we don't go blind um uh Pratt released new themes recently so uh Pro de silos.com I think it's like the EF uh what's it called EF themes variants because it's based on olives um all right so they're just part of the EF themes package yeah okay cool let's look at where there's a good one maybe the dark one that looks very Olive oilish EF summertime summer says yes we're not going to get blinded today I appreciate the pinkness of that theme but let's not get blinded Okay so uh let's go so alpaca I need to figure out how to install a package first of all I guess we could use the UI for that but maybe there's a command for it let's just take a look okay so finding packages alpaca try uh update rebuild delete log cool so there's this alpaca try let's take a look at that function lpoc oops wrong one we're gonna get really blinded here how about I do this first uh Lo whoa once again uh wombat there we go that's a little bit better for now so so I wanted to look up the alpaca try function interactive native compiled dysfunction so try order I'm guessing order is a package specification I don't want to try leuven Levin how do you pronounce that because it's white because it's not going to make things any better for me install the repo build files on disk activate the corresponding package for the current session so I wonder if it's as more or less simple as just uh putting that in here so alpaca try and then EF themes let me just try to install that okay interesting optional interactive and when non-nil immediately process order Okay so the what happened here is I think he just queued up a package to be installed because I didn't say interactive true um it didn't go try to do it immediately so maybe if I use alpaca update no alpaca update all repository not on disk all right cool so clearly um trying packages for current session alpaca try uh here we go for example alpaca alpaca use package use package mode great I see so there's a function you can use for waiting until everything gets installed makes sense let's actually put this in our configuration because I do want use package integration so let's start with that so we'll just drop this in and then execute it okay so it's doing something right now a lot of output it's got a green three there which I suppose means it finished okay so oh it even installed EF themes as well so I sort of unblocked that cue apparently so alpaca use packaged and EFS EF themes is there is use pack oops okay use pack is already here because I want emacs 29. okay so uh we've got used package set up now uh I put that one in that's okay because I think that now that I've got used package set up I could just do it that way so let's try it this way use package EF themes right and then um ensure t yeah it's already there it's good fine and then uh config I think I want to demand that actually I'm gonna do this too oh assume alpaca T all right cool that that actually something I wanted alpaca use package by default basically means um there is an alpaca integration it's not ensure insurance for package.el this is alpaca tea but this variable is making that true by default so it will always install packages by default so if you don't want that behavior you have to set that to nil so I don't have to do anything special here I can just leave that off now for config I want to say load theme uh what was it called dark right okay let's just grab that one there oops I don't have evil mode so I'm doing the wrong thing um is this yeah no confirm t here we go so let's eval this whole thing and I think he did set that so it looks a little bit different now that's cool all right so we got a theme set up here uh that's great what else so there's this whole alpaca weight thing that could be useful for throwing this in after some very fundamental packages get installed in your setup so we could say that um this part I would put here ensure that all early or all necessary packages are installed uh before continuing continuing all right cool then um you know set up non-essential packages I would say that makes sense right so we have a theme we probably also want to have something like let's say vertigo I'm gonna demand that because I want it to be there immediately um config vertigo mode one okay it's cloning that pretty easy you can see where it's installing its dependency of that compat library that we talked about in the newsletter last time um oh and vertigo's already loaded which is great and then now we can put in things like um Mars and oops use package uh after vertigo uh config I believe it has a marginalia mode as well let's run that okay so far so good and then if I use meta X come on keep pressing escape okay then uh that's on that's good I'm gonna put evil mode in because otherwise we're gonna have a hard time here so I use package evil mode um init I think uh maybe I don't want to do that there let's do config probably not the right thing to do and um all right so this one is not working unable to determine recipe URL is because it needs to be evil too many things popping up here we'll have to figure out if we can um make that go away Okay so this time it seems to be working okay cool so evil is not on yet and not loaded what happened so I'm gonna go back to that alpaca log buffer it did finish but I don't have the um what do you call it Auto loads but the auto load is not set up alpaca no nothing about Auto loads interesting uh require evil now that's interesting it wouldn't let me use evil mode on this which probably is right it's probably just evil but why is it that it didn't um require the package at the end because it's total demand T that must be a use package thing though okay still not on though okay is that at least that works evil mode evil locomote in all buffers why aren't you executing the config must have done something else wrong okay well it's on now yes I'm sorry about the image quality of the screen I have no idea why that's happening today it's uh unusual uh Ozil and says the alpaca use package wrapper can be temperamental I honestly would recommend using pure alpaca instead yeah it didn't get that working perfectly okay all right so we've got vertigo marginalia evil ah we probably need things like you know I know this is not very interesting we'll switch off this in a second orderless uh what is it set cue compilation uh no sorry completion there's a variable for this I need to set completion styles styles I think that's right okay we're cloning orderless and now if I oh I can't use Q in this buffer anymore because of evil mode that's cool maybe I also need to have Eva collection turned on okay do I need to require that wait let's see future P evil collection I should probably make that a symbol no sure anyway um I think we're good with orderless now so uh load no probably not let me check the chat really quick [Music] prompt craft says uh thanks a lot for what you're doing always learning from you even when I don't really use what you're talking about well thank you Ashraf says isn't the permanents only achieved by adding packages into init.el yes after all it doesn't use package.el and package like the packages hey GK sudo uh David had you here use packagebc being merged into Master Branch yes I actually use that in my configuration right now yeah the only way I could try to fix the blurriness at the moment is if I um unplug the capture device and I'm a little bit skeptical to do that at the moment do you don't you need alpaca process cues after you use package declarations uh you would think so right but apparently it's it's doing it on demand demand is ensures that it is installed if it isn't already yeah it also makes sure that it's loaded defer as one that escapes Auto loads all right the blurriness makes it look like a retro 16-bit game that's terrible I don't know what happened just started today apparently Okay so I mean we've we've proven the point now we can get a little basic configuration set up here uh some of my key bodies are now working so let's take a look really quickly then at um the menu the UI right anything else here wait alpaca installs and activates packages asynchronously alpaca processes its package cues after emacs reads the init file so it's like after a knit hook I suppose um consider the following example alpaca nil first cue first message second third process cues apparently you can just put arbitrary crap in alpaca that's interesting okay cool uh second will be before first and third yes of course all right any configuration which relies on afternit hook emac startup hook Etc to alpaca after init hook so it runs after alpaca has activated all cued packages so that's probably pretty important anything you would normally put in after a knit hook you need to put it in um alpaca afternoon hook instead because if you want it to happen after all of your packages have finished installing oh there's a manual actually cool Quick Start well you know the readme did a pretty good job of that already I mean seems to be also the same content there's menus basic concepts uh the macro reduces verbosity it's not a part of alpaca okay this is early early in the uh getting started guide I don't think that should be so far up recipes a recipe provides a pocket with a metadata necessary to build and install a package okay so it's basically just a a list of uh symbols the manual gets merged into the readme yes is there an info file that gets loaded foreign straightforward stuff if you use straight diet yield before you've probably seen this kind of thing where if you want a particular package the name of the package in this case is example which doesn't exist it's just an example to show you what the format of this list would be uh you can see which host it comes from the package like GitHub or git lab or a specific URL uh the specific repository on that host like David wheel Slash emacs from scratch or something like that also can be from local repositories in case you've cloned something already um that's kind of nice I guess but you can just add that to your load path without having to do it this way I don't know if it if there's any benefit of using this with a local package um remote uh remote clone oh you just give it like a specific um URL to clone from a remote okay fine uh the branch sometimes you need a different branch aside from Master you can also pull specific commits if you want to pin your package to commit maybe a later version broke your your configuration and you need to roll it back to the previous commit also for tags as well for specific versions Judy says probably nice to swap out development versions for the Upstream package When developing a fork or for testing versus Upstream yeah that's probably right uh when you set put pin T it ignores the package during update commands so basically after it's installed at the first time I suppose it never tries to update it again also the depth for cloning which one is the default because you probably don't need the whole history but maybe if you want to develop on it you would need more of the history Okay blah blah protocols um also looks like you can specify when you have your own Fork of a given package Repository which is cool makes it easier for you to manage your own fork and update it probably well it will add a remote named Fork which points to a repository hosted on the same Forge all right build steps package inheritance okay it's got a lot of functionality here that are probably is probably great for people who are uh you know package developers basically or if you are intending to do a lot of contribution to packages that you use it could be really useful for that for sure then there's menus I'm guessing this is for the um the package list okay menus allow one to offer alpaca users curated lists of packaged recipes ah okay an alpaca menu for pending Melba packages huh so you can have a curated list of packages which is kind of interesting I mean if you wanted to [Music] um have your own suggested list of packages that people could pull in and then install things from that but I don't know that must be what it's meant when it says that you can have your own elpa basically orders cues is about registering your installations I suppose okay so we have the UI now UI mode available for managing packages uh you run alpaca manager what is alpaca status okay so it gives you okay cool gives you the list of packages that you've installed maybe it's like the the history of which ones you try to install like I try to install evil mode and it failed because the actual package name is evil so uh it it listed that which is cool but it also told me the other ones that are um installed fully let's check out check out the alpaca manager manager I want to see the manager okay so pressing return gives you well if if you are using non-evil mode now let's turn off evil mode it will give you details of a package by pressing enter tells you the URL tells you the um basically the metadata you need the explicit metadata you need to install this with the alpaca try the way that this package listing would do it so that's interesting to have I'm trying to make this thing go away now um what's an interesting package well we could go try to find evil it's not in this list is it because I've already installed it oh yeah so there's there's filtering happening here that says uh unique packages and ones that are not installed so I've already installed evil it doesn't show up here what if I look for uh vertigo anything other vertica related what about uh OBS websocket yes so things that are not in typical package repositories don't seem to show up here package delete uzo maybe the the screen will sober up yeah okay Boogie friends all right so let's see what other commands we have for this show hidden rows search installed so can I just press capital I here and it will show me all the installed packages okay so that's what happens you do capitalize shows you everything installed um capital O shows orphan packages probably if you uninstall a package and it has dependencies that have been installed they'll show up here if they haven't been removed also uh let's see search tried a capital T okay those and uh there's things you could do like marking for deletion marking for fetch sorry folks I know that a lot of people are talking in the uh The Matrix chat about how bad the screen looks I hope this is not a complete waste I don't think it's an OBS problem I think it's a hardware problem trying to think there's a way I can like force this to uh improve really quickly I'm just taking a look at the device real quick maybe if I mess with a resolution for a second hold on oh that helped okay I think that's better isn't it apparently a resolution setting got borked in uh in uh OBS I hope it doesn't start freaking out though sometimes it does really weird stuff all right sorry about that apparently it was OBS all along and uh I was blaming Hardware problems but you know chances are it is Hardware problems so what can I say I wish I could see this thing full screen myself multi-view field full screen I don't want to screw up my whole system here okay ashra says I can read I'm Healed yes I'm sure that uh some of you were squirming the whole time I'm sorry for that okie dokie so let's get back to it what can we what can we what else can we do here I mean it's a package manager there's not a whole lot to say I suppose um what do we want to try [Music] I don't know how to pronounce that I'm probably over complicating it Louvin Levin okay so um UI visit alpaca test is good for bug reproduction huh okay thank you to no Wayman hold on is no Wayman uh hold up hold up ah yes no Wayman apparently is uh is Nicholas Hello nice to see you alpaca test whoops apparently I did not um it's probably a function right what's happening alpaca test yes Tesla puck in a clean environment that's cool wow interesting so it seems to be cloning everything from scratch like you burn like you in Burn Levin I don't I don't know what that character is gun oh we don't have any screen chat what the hell happened man my whole setup got busted apparently I hid the the chat last time too so my whole OBS just screwed up all right um cool so that seems to be just a clean uh install of or a clean run of emacs there wasn't a stream chat last time I turned it off at some point I can't remember why yeah it was on purpose last time Judy okay use it in the scratch buffer cool uh did you just reset get reset hard initial kid one or no no I went to the properties of the device in set the resolution to a higher number which should have been to begin with I don't know why it got changed yes you're right Judy I hit it when Jeff is on screen talk stream talking right okay so last week it wasn't there at all great excellent work for me imagine streaming in a proprietary website well uh you don't have to imagine it you're looking at it right now I will be streaming on a peer tube instance pretty soon I don't think I I'm cleared to say which one yet but uh I will be streaming on a non-proprietary site as well and my videos are already there I just I haven't I can't tell you yet okay so alpaca test ref um yes I am streaming on two proprietary websites at the same time we're gonna have real travel when I start streaming to three places simultaneously I think we're just gonna all gonna have to move to a matrix chat for live streams which probably is better honestly easier for me to track yeah that's that's uh interesting oh doc T I forgot about doc t I think we talked about this at some point in the past oh come on declarative or capture templates I think we ran to this once before on a stream at some point but it uh where is it yeah seemed better foreign I'm using the MPV to watch stream IRC to join the twitch chat very comfortable watching experience that's that's better yes I agree okay so let's get back to it um Nicholas was giving me a suggestion to do an alpaca test uh let's just take a look at that real quick I'm going to jump over to a scratch buffer and I'll just type this over from the chat because it's a different machine alpaca test ref beat aot native comp and then inside of the same form um here we go early init okay that's kind of interesting actually set Q lpaca oops aot native compilation t and then init wow doc T alright so if I do this it should spawn an emacs instance and install that package it's also cloning a branch of alpaca which is kind of cool actually because you can try out new features of alpaca that are in branches case is back now we're all in trouble yes we fixed the screen resolution fortunately because that was really annoying me too okay so um I don't see it actually doing anything though what was the other thing uh El alpaca status oh it did install it it's just not in the log that was weird maybe I just needed to refresh okay It's Already Done yes apparently so okay that's cool so um if you want to to test your package installations you could do that with alpaca test I'm I'm guessing what was that noise is it actually necessary to do this can I just take that out can I do this the other question is where does it install those packages to oh temp folder cool okay I like that I'm probably doing uh forbidden stuff right now a test ads ahead of time native compilation okay gotcha okay now I saw the um the package fly through there the log but this is the not finished so um alpaca how do I change this view I'm trying to figure it out myself now yeah not figuring it out okay then return okay says evil alpaca log White Type S and then return okay I'm clearing the search gotcha okay cool that's that's kind of Handy just to test out some quick installations also you could probably load up some config there as well all right that's cool so that was alpaca test in case you ever want to test some package installations um let's go back to our init.el file K says watch I can make David say anything case is really childish yes you're a child that's right says how will it uh ashra says how will it decide on the temporary folder probably just um asks for one I'm guessing generates one or you can specify it with the user dear key okay cool make temp file Judy says so now we can get all get flashbanged by the white background emacs in HD yes we're all playing a Counter-Strike at the moment and I'm just dropping flashbangs actually I should play Counter-Strike you guys want to play some uh some old school Counter-Strike all right I can't actually install that because I'm in Geeks just kidding all right so um I'm trying to think of what else would be interesting to show here uh any uh thoughts to uh procfolio Slash NV e-lisp slash Nicholas let me check the manual if there's anything else d e dust two yeah dude dust two is is uh that's the classic knives only ashraz definitely played Counter-Strike a lot revisit alpaca manager let's go okay so we have our listing of things that we've already got installed here in this configuration um I haven't done anything yet with let's press s and then uh enter okay that gives me all the list of packages I can try to install things try searching with s vertical okay so we got vertigo post frame oh let's put that in actually um Focus David Focus I can't I can't focus what are you talking about can't do that so there's got to be a key sorry if the mic's clipping there's got to be a key to install this can I press I okay it looks like it's marking it for installation hey kites new event stream no thanks uh uh control what is it control h m for the major mode yeah what's the bindings in here mark yeah menus truncated okay gotcha the menu is truncated and I was searching using um basically I search execute marks so X now it will install alpaca well in theory you should install alpaca sorry vertical post frame so what is the deal here I don't see it actually happening though so let's go back to the manager um interesting no Mark packages I don't know what I did to that set info what did I press I pressed I and Mark install okay so why is X not actually installing it I wonder okay so let's remarket to install press X it jumps to this but oh it's it's not actually doing it yet I think it's got two things queued right uh Q hover over the two what does it say uh other orders okay it's got two of those yep so uh how do I get that to run in the UI okay I'll probably delete the evil one okay the evil mode yes okay let's go on now uh is that why okay so the broken one is is keeping it from running I've also got um two of the post frame packages in there as well huh still there other orders nothing okay maybe this needs to be refreshed go away bye three man the tool tip takes 20 years to pop up I blame emacs for that okay alpaca process cues that's fine El alpaca process cues hey hey nil I broke it that's all I can say ah there we go finally uh pressing X and that buffer caused it to execute so vertigo post frame vertical post frame hello post frame mode uh uh I didn't actually do it did it huh okay whatever back to init.l hey stop get myself into trouble by pressing my own custom key bindings when I'm not in my configuration so this is why you see me uh struggling a lot of the time so back to this one yeah can't load multiform why would you need that okay that's great wouldn't be a system cover stream if I didn't break something that's the whole point right we break it so we can fix it and then feel Superior for doing that it's like watching NASCAR well yeah we're not moving fast enough for that also I need to be talking like this we're watching NASCAR right yes they do keep the in additional El files in a subdirectory do we need to add extra stuff for that nice Russ says you need around 100 sponsor stickers yeah I need to really up my sponsorship game to uh to be NASCAR grade code switch David what are we talking about colon files oh it's the same thing as hold on not that one ah similar them cleaner yes oh the Vim cleaner yes that would be pretty funny actually though What state were you born in David I think the twitch chat is behind the new project are we talking about alpaca vertico files uh uh oh do I actually have to do it that way come on now new almost sounds like a new ah yeah yeah I should be able to do this um what am I reading okay so can I do this wait wait wait what just happened can I do this instead alpaca El Papa I keep typing that as if alpha papa wrote this okay let's try that um okay can I oh still it didn't work ah cool so I just need to take the front off guide says that I'm the English speaker that he uh understands it best well that's very flattering oh I have to delete it and then reinstall it okay so alpaca delete uh vertigo plain old vertigo yes oh come on all right so let's delete the other one too okay now back to vertigo yes okay now let's try to reinstall from this form here I think because it already has a repo Maybe uh uh search post frame hmm vertigo is still loaded but that makes sense because it's loaded foreign we're all here just to have fun Nicholas not sure what's happening either restart emacs ah we failed I broke it let's do it that's fine no I'm the one that's Twitchy because I'm drinking this unspecified beverage uh in my cup here which is not alcoholic and it's not illegal it's just uh owned by a big corporation that is not giving me money so that's the reason why I'm not uh saying what it is what did I do wrong can't load EF themes ah unrecognized keyword I think I'm screwed up there and hit that yell so I'll get blinded for a moment huh not alcoholic and green Greek terms uh you know hey stop that can I press Ctrl H E for God's sake thank you no I don't want to save the file because I totally broke it happened after the alpaca oh okay fair enough kill ring is empty yes because I pressed the wrong key binding okay let's go right uh here okay so let's uh save that and then load it up again oh there we go cool the Greek moonshine from old soda bottles mm-hmm Okay so we do we have vertigo okay vertical is loaded let's try it once again I don't oh Jesus yeah we need to do require um what was it vertical a multi-form new I must have put that in wrong Force synchronous load install for things you're going to use top level yeah that's what I tried to do before but it didn't seem to um yes well I moved it down there not knowing that it was going to cause a problem like that so what's the deal with the files thing not working I think I broke something [Music] messages buffer um probably I cause those errors so let's go back get a fresh make sure to set evil want key binding okay fine seems to be loading stuff interesting system crafted beer yes if anybody knows a beer brewer who wants to put my label on their stuff beer that was designed in Emax all right so uh alpaca status and um vertigo let's get out of uh normal mode here so does it tell me the oh see look it seems to put it there right so I'm here the extensions folder is here is it on the load path uh vertigo no it's not on the load path though is that part of the problem you think maybe uh the extensions path needs to be on the load path ashra says actually I know a guy who knows a guy okay sounds good also if there's any people who know um coffee coffee roasters now some system crackers coffee that would be the thing to do change it to extension slash star let's do that okay okay it says it finished it let's try doing the require again no let's uh reload again I may have to delete it again like Nicholas to tell me okay so go back well no alpaca delete uh Delete vertigo okay so let's reload a brew that gets your system crafting how about uh a coffee that keeps you sane even when emacs is broken cool maybe it's okay now huh multi-form hey it worked that time so now if we go back into init.el I can drop that uh vertical pose frame in [Music] after vertigo can whoops config vertigo post frame mode one I wonder how well this works in uh Weyland yeah works just fine looks good caffeinated beer yeah that's actually uh like four Loco they had to stop selling that because people kept getting messed up on it there we go let's let's make a new Four Loco alcoholic coffee that's just that's coffee in Ireland right I hope I don't offend any Irish people uh Eugene says I buy my coffee green and roast it in an old popcorn machine oh that sounds nice okay says I hear that southern accent and I've transported back to my home in the Tennessee Hills yeah okay actually now it makes sense we need to actually have uh some some bourbon instead system crackers bourbon yes five loco that's right and Fades says uh in Toronto there was a brewery that made beer infused with marijuana okay interesting we're getting way off track here but I like it all right so uh that worked cool thank you Nicholas for uh the clarification on that all right so new suggestions from Nicholas in the chat let's see what he's got up his sleeve right now I'm gonna have to bring the uh post frame back into the mix because it's kind of nice to not have it um messing up your uh window config all the time Tennessee whiskey not bourbon yeah yeah I know I knew I was saying the wrong thing as soon as it came out of my mouth I don't know how much of a fan I am of Tennessee whiskey anyway I think Johnny Walker is not from Tennessee I think that may be from the other side of the pond uh ashra says I would like some padding in the post frame it's possible there's um post frame uh where is it there's some kind of post frame configuration where you can control the window width and the um padding whiskey comes from Ireland yes that's right okay anything else interesting to try it one thing we haven't tried yet is pulling a package from a git repository that is not on any of the current package archives and knew of one that I haven't gotten to install yet github.com is it JD Smith slash uh out Lee that didn't get it right the first time let's just search for this JDT Smith okay I missed one letter sue me there it is oh boy Laphroaig I don't know if I'm pronouncing that right but man that's some PD whiskey it's kind of awesome but it will burn you can I have I complete into post frame also um I think so ooh cherry oak finish I've been seeing a lot of whiskey companies doing this cherry oak finish recently even Johnny Walker had one I just felt like did they just have a bunch of like Sherry barrels left over and they just decided oh let's just do some special edition stuff because we got all these Sherry uh bottles or or casks left over make it sound like it's special when we're just trying to like reuse some stuff I'm being cynical obviously Sherry Castle become rare it didn't seem very expensive compared to the normal finnico says what's the deal with alpaca are these package managers helpers like straight or use package I don't use package.el customize what's something really helpful they bring use package is not a package manager use package is a configuration macro which is quite useful on its own I had stopped using it for a while and now I've come back to using it recently and it has a lot of value actually but it's not a package manager per se in fact any of the other package managers typically integrate with use package like alpaca does or straight.el Etc because installing the package is only one step of the whole process use package does things like setting hooks key bindings configuration commands Etc so that's like a different class of things however different package managers are for different purposes like alpaca seems you know geared towards people who might be package developers or contributors maybe they want to have a more advanced control over packages in their system straight.el is like that as well 3.el has also the quality of having like lock files for your packages which makes it so that you get the same packages installed every time so long as you use the lock file I didn't really make use of that very much whenever I used it I also use new Geeks for my packages so I kind of have that by default but ashra says my neighbor is a whiskey specialty seller great opportunity but visits must be planned and taking with care yes uh all right let me go back yeah Judy says straight cuulpa and alpaca fit more of the style of a package manager replacement yeah for sure it does more than just package management so at some point Nicholas was trying to tell me something and then I think maybe uh his connection to the chat dropped summer says no system crackers cocktail recommendation I don't know I like a good old-fashioned that's just because I'm a whiskey kind of person but I just uh I'll just take it uh just straight no ice no water I prefer to have the the full effect I'm gonna get in trouble with YouTube you didn't say that someone else said that it was attributed to you I'm I'm reading the Matrix chat through um notification bubbles that are popping up on my screen so I can actually see what people are saying there okay anyway back to it uh what I was gonna do before I got distracted talking about whiskey is um install this package right so we've got some stuff in the manual that tells us about how we can pull something from GitHub so let's just pull that and I believe this is what we want so let's do this I'm going to go over to the knit.el file down here somewhere use package out Lee um alpaca and let's paste that in I'm guessing I'm just going to leave it like this uh gdt Smith slash outly and let's see what it does okay seems to be working so from that package how do I actually set it up um okay so we put a hook for Prague motor text mode I can just drop that in real quick in the config if I get these out of my face first go back to init.el there we go and paste that in delete the extra a stop whoa yes I know [Music] caught astray there okay now back to init.el and then I'll turn on that uh outly mode so uh okay cool yeah so this seems to be working that's great I must have missed something have I tried uh installed magic and then tried alpaca fetch no I have not makes it very easy to review changes before installing them cool um I think summer said in the chat I'm just going to attribute everything to summer because obviously I can't tell who's saying what in The Matrix chat Outlet is a package that makes it easy to treat a code buffer like an org mode buffer because it looks for a certain format of uh comment to use as headings so this is a heading and I think it even changes the text size as well so if I use two stars it well no it just treats like normal okay fine whatever so you don't need stars but um yeah you can just use tab and shift tab to expand and contract certain sections which is kind of nice actually all right okay and um Nicholas suggested to install Magic okay installing that and what was the other thing to do uh try alpaca fetch okay fetch items Associated package remote commits uh let's try uh outly because there's nothing there hmm I would have to roll back to an earlier commit so let's let's see if I can do that I'm gonna go back to let's say uh this one right here where is the hash right there okay I'm just gonna grab like the short hash and then back in my init.el file I can go here and put uh ref I think and just drop that passion and then I probably have to delete outly so alpaca delete outly okay yes delete that I'll close emacs restart it did not match any files known to git let me double check commit hey this should be right right it's considered as a path spec did I give it too many characters it doesn't like that or something I don't know if it'll update that either will it take out the ref yeah I was trying to make it roll back so that we could actually see um well you know okay Maybe I should try a different package that comes from a package repo so let's just uh nope let's do it this way okay [Music] alpaca visit okay you want to install as normal okay then uh El alpaca fetch it there's nothing to fetch on this one I think okay gotcha magic reset hard uh okay cool that makes sense so magic a whoa my bindings are tripped me up here come on now there we go all right so reset to head tilde three go three commits back fail to resolve it is there no history Magic oh yeah there's no depth I would have to go re refetch the repo unless does Imagine have a way to fetch the history yes shall commit oh really I don't seem to have that function unless it's in another module thank you ah Magic Remote unshallow okay there we are okay good now let's uh redo that uh reset hard and then pull that head three cool now alpaca fetch on outly cool okay so it's basically just giving me like the commits that have happened the ones that are it's pulling in so I guess the the idea uh is that oh okay cool and you can see the magic uh diff basically oh that's a very useful diff but it's cool though that you can take a look at that matto says uh no more expwim also menu bar do I well this is not a real config uh exwm I use Whalen now so I can't use the use the xwm anymore also exwm is a little bit uh I don't know it's what's the right word for that dilapidated so unconventional dude like everything we do here is unconventional I'm just I'm being mainstream I guess foreign let me check the manual and see if there's anything else interesting gotta go to the bottom though search tags okay pretty much all of the things we've seen so far uh finnico says the dip thing is nice yes fade is asking in Matrix chat how many people are actually using alpaca already I know that some people have mentioned it Mata says unusable for real life work that may or may not send emacs in a depressing self-hate loop with no out that's what I normally say for exwam even though I do use emacs for 99 of my Computing yeah I do too but you know using an external window manager that lets you basically just have everything full screen to me is effectively the same I just jumped to emacs and do whatever I need to do so yeah I don't really miss ex-wm per se I actually saw I saw a picture my phone reminded me of a picture that was taken two years ago and I was sitting somewhere with my laptop I was taking pictures of something else but that laptop happened to be there but I noticed on the laptop that I was using exwm I was like oh yeah exwam that's great and then I remembered that uh things are a bit better since then uh less controversial option is Mel pulls yeah let's take a look at that real quick uh Mel pulls we were there before alpaca menu for outstanding melpa pull request okay so I have the Q in this uh Mel pulls let's take a look closer look at this so it's using alpaca I'm guessing this is an alpaca job it's cueing it Mel pools from GitHub and then after it finishes executing it adds the Mel pulse function to alpaca menu functions let's go to our init file which is not open currently I'll jump to the end and then I'll paste that in Let's uh line this up a little bit okay it is lined up okay Mill pools is now in so then what can we do with that alpaca manager command should listen Melba pull requests under the source melpa polls okay cool uh El pucker manager so can I search hello um there must be a way to look for that up El Paca update menus it must not have loaded yet hmm hey Fred thanks a lot yeah the nail pulls is not in the list somehow in the uh alpaca update menus don't know why the melpole's function is around uh let's see whoops it must not have gotten added huh yeah I don't see it here either let's go back to the init file and then uh just do it directly whoa wrong type argument symbol p m [Music] and which part did oh wait whoa hold on that's wrong oh this seems to be a symbol right is that a typo it might be a typo in the docs oh no yeah must be typing the docs yeah typo typo yep no problem uh alpaca um update menus Mel pools there we go that's done now if I go to the manager I want to speak to the manager okay so how do I show only from uh Mel pools that doesn't work really yes uh maybe there's another syntax oh pipe pipe pipe pulls hmm oh I need to use a Universal argument okay I don't think I'm doing that right to refresh the manager catch yes follow the link please recash that's just a Boolean okay don't do that come on Fred says do you make the music in the background yourself no I don't I got those off of a cc mixture check out the description and all the links to those are in the bottom I do make music and I've been intending to make music for the streams for a long time but uh I cannot pull myself away from coding long enough to actually work on music these days but when I do work on music I like to use the bit wig studio which is not free software don't drink and configure I don't know who we're talking to ashraz I see you in The Matrix but when you do then commit your changes yeah commit and force push and make sure that you screw up the commit history first uh ensure Mel pool is an alpaca menu functions and then uh alpaca update menus it's there uh El alpaca update menus what is it life if it's not occasionally rebased yes indeed I need some excitement in my life so I'm just going to go to my job and then uh start screwing up the commit history and then blame someone else we'll see how long it takes for me to get fired okay so let's go back into the uh manager alpaca manager Judy says team arder Arthur is nice so let's clear the search is there anything from Mel pools in here I don't see any well I guess I have to do the uh extra rose stuff right who uses sign commits I mean who who wants any verification that someone actually made a commit all right so uh Universal argument alpaca manager that's clear okay I saw at the bottom it says that the cash got cleared I'm using the pike character for that three three uh instances of the pipe character I don't know if that's wrong or right what about is it in the manual yes okay searching by column interesting one two three three four is that right search for three in the fourth column gotcha gotcha try killing the the manager okay that seems to have done something it took a little moment there for it to reload there we go live debugging uh kind of nice uh that we're seeing it looks like was it pull request numbers oh melpa issues okay so these are pending packages to melpa it seems cool anything interesting in here hyperbole is hyperbole not in melpa yet wow what happened something went wrong with opening your profile wow and this is from 2021 so that's you know super up to date hugging face AI powered text and code completion client mm-hmm uh Nicholas says this allows me to review packages for melpa quickly you can sort by date okay how do I do sorting the crazy theme gives you crazy experience but it will Generate random colors sounds like uh we did for um emacs from hell def B says I like hyperbole people keep telling me that hyperbole is amazing and um I keep looking at the manual I'm like man this is pretty extensive stuff here I'm not so sure iglot Temple that sounds cool I like that uh okay so S capital s [Music] uh cool I think I did it right no that's description okay there we go finally org upcoming mode lying dear EV o.n what it's different fine uh click the column header okay yeah I should have thought to do that but you know I've been in emacs so long that I forgot about clicking things thank you cool from my flux Emax distribution I'm very curious about this crazy theme I think I have to install that don't you think okay we got crazy theme Here uh let's just load it up I'm ready for this to be a complete disaster crazy loading a theme can run list code really load um maybe maybe I shouldn't treat this theme as safe no let's not do that um not really seeing what's crazy about it yet maybe it will show itself okay I I don't see it need a code buffer is that what's happening it's going to delete all my code so if I just start typing stuff does it start changing everything that's uh disappointing will it change colors when you reload the theme Maybe okay that that's probably it wait I have to I have to approve it again yes yes no all right so every time you load the theme is different that's not so crazy it it needs to be hooked into uh what is it uh self-insert command put some advice around self-insert command and every time you press a character just change the colors of everything and then have all your users just get seizures randomly I guess crazy I guess crazy is just a synonym for ugly yes ashra says that's just regular crazy you need Zone crazy I don't know what zone is in this case though same theme is there a sane theme in there also I guess what it is is actually quite you know sane it's not crazy enough this is not a crazy stalker X crazy this is just you know just kind of like you know somebody's a little bit annoyed and just wants to screw with you a little bit it's not too crazy ozone yeah oh boy zone out completely there we go oh that's gonna trip us out pretty good yes I just use it come on gotta be better than that ah there we go cool now I feel like I'm in The Matrix there's a Zone Matrix on the GitHub it's also pretty sweet but whatever this is doing is pretty uh pretty matrixy Brooklyn says I was watching one of your vids from 10 years ago yeah I had more hair then but I was still talking about functional programming so you know the situation hasn't changed much this is a nice point for someone to jump into the stream and see what's happening on the screen and wonder what the hell I did wrong all right so well thanks Brooklyn Judy says except we move from F sharp to mesh it is intended Behavior if you knew that I started it like then okay so uh Nicholas says one question I heard from earlier was what's the benefit of using alpaca for a locally installed repo yes you can quickly rebuild compile generate Auto loads via the package managers yeah okay so um some of the things you would normally need to do if you have cloned some code like compile the uh uh by code or native compile maybe even um it can take care of that for you for your local repos which is cool I personally don't even bother so that's kind of a benefit I guess hmm let's get out of this uh theme what else we got for uh [Music] the EF themes don't want to do this sure oh that crazy theme really screwed things up Judy says still haven't got my head around the Haskell F-sharp spaces um f sharp I would say is easier than Haskell but I haven't done a whole lot of Haskell with F sharp you don't have to worry so much about monads which monads aren't so bad but um it's a little bit weird at first monads are just a way to wrap State around what would otherwise be an immutable uh transform of data I think and ashra says that I realize I have to prepare a short Haskell talk next week well that's cool okay so we're back here again so I think we saw some good stuff ashra says monads are just monoids in the category of endo functors what's the issue classic copy pasta a monad is like a burrito don't ask me why it's just something that people say and uh it was because it wraps something yeah sure modad wraps something but burrito is not the most apt analogy in my opinion probably was a joke to begin with Fred says what are the scenarios that F sharp is used in I don't know functional programming but F sharp actually is multi-paradigm you could do imperative programming in F sharp I don't know why you'd want to but um that's something you can do there's also object oriented programming in F sharp so anyways like if you are forced to use.net and you're tired of writing C sharp code because not because C sharp is bad just because it gets a little bit boring I mean it doesn't get a little boring then you can use F sharp instead but then don't ask your boss to let you use F sharp because they probably won't let you because somebody hasn't maintained the code after you write it but it's great though F sharp is a nice language episode I like it but I don't use it anymore ashra says if you did not write your own monad story how I'm monad is like X did you actually understand a monad well I don't know that the people who say things like that actually do understand monads because you know monad is treated like a um esoteric information in the world a functional program and it kind of is but once you understand why a monad is useful then it's not so weird but I think that a person needs to actually do functional programming for a while first to be able to understand why it's necessary so otherwise you probably won't really get it at first the monad fallacy yeah Judy Dev says if you have a legacy project in vb.net and you're not allowed C sharp yeah let's just jump straight to F sharp that's great uh Jeff says I think F sharp started life as o camel on the net platform yes um there's some way to change the syntax even that's enabled in F-sharp I think there was an older syntax how did I get into F sharp I don't know I don't remember I was using.net all the time and then F-sharp showed up as a functional programming language I was like cool I want to check this out that's how I started using it but I don't actually use it at all now my functional programming language language of choice is scheme these days cool uh let's see I think that's it right for at least for the um alpaca part of things guile uh yeah Guile's nice I've been writing a lot of guile this week I've also been working on my own scheme compiler but it's you know not very sophisticated at the moment odd Merlin says monads are something that at some point just clicks and they suddenly make sense yeah I think it's I don't know case says better than E flat yeah okay but I'm ch uh die Dev access how about closure closure is also a nicely elegant language but I have a weird thing about it being built on jvm don't ask me why just a weird programmer knee-jerk reaction but closure itself is very elegant it's nice I also like the fact that it's um focused around using persistent data structures because that Blends a lot better with functional programming if you're using mutable data structures with a functional programming style it's just really weird and it doesn't work very well you don't get the benefits of functional programming so you really kind of need persistent data structures and in lisp or scheme the default persistent data structure is the cons pair which you can make a linked list out of so long as you don't go mutate the Kant cells which is possible I think he in both common lisp and in scheme or at least in the older standards you can actually mutate con cells which is a No-No do not do that just remake your cons cell and point it somewhere else monads more like gonads am I right come on case you can do better than that Ismail says Yak or completely troller away yes trolled away you know we like to have fun a little bit we're just you know shooting the breeze it's Friday we got a few few minutes left in the Stream there's nothing else to talk about but yes I think um functional programming is a it's a worthwhile experience if you have not used a functional programming language before you should do it once in your life if you're a programmer by trade if you're not a programmer either like you should try it anyway but um if you've been writing code in an imperative Style with mutable data your whole career you should try uh trying to write code with Haskell or F-sharp where they kind of force you well let's not say Force like by default all bindings are immutable and you can't set them so even that by itself makes you have to rethink how you would write an algorithm and uh it will actually cause you to write cleaner code in other languages because then you start thinking about things in terms of data flow and not in terms of what variables am I going to set to make this change that I want to make so um it's worthwhile Nicholas says one major benefit of alpaca is the reduced installation time it might be worth nuking everything ah yes I meant to do that except the init file and seeing how long it takes to install everything let's do that I said I wanted to do that and I forgot Judy says it works partially in Rust 2 everything being immutable by default yeah that see that's the thing that's one reason why I haven't really like dived in to rust a lot I wrote some Rust code recently and it really uh seems like you have to go to Great Lengths to do things the right way which is nice if you want to have really stable code but at the same time for me I just want to get some done so I don't really want to deal with that I'd rather just write C and then deal with the uh seg faults okay uh we're gonna go delete the alpaca folder delete alpaca yes all okay and we're gonna exit and we're gonna load back up the Emax config let's see how fast this pulls up just doing some stuff okay so it's downloading the repos again the uh yeah I know didn't I say that it's the end of the stream nobody watches at this point only the people that are here right now watch to this point if you are watching the recording of the stream right now and you heard me say a bad word let me know in the comments so long as you don't say any bad words in the first 10 minutes of a video or stream YouTube doesn't get too upset I think all right so that took what uh about 30 seconds maybe was it less time than that Fred says favorite language scheme thanks Fred I appreciate it Jeff says closure has immutability Concepts as well yes closure uh enforces immutability on bindings and on data structures which is great closure is a great language to learn if you like lisps well I know you heard Glenn you were here I'm talking about people who are going to watch the recording later and I'm I'm assuming many people will not make it this far I see them the analytics I know what happens uh anyway point being uh closure is uh is a great option for learning functional programming if you like the lisp languages like let's say for instance you've been using emacs for a little while you like writing a little bit of emacs lisp to customize emacs you want to play around with an actual functional language I would choose either scheme or closure but if you want to go like fully functional the enclosure is probably more Faithfully functional than uh than scheme is scheme is functional it's it's driven as a functional language but it doesn't have it doesn't really focus on persistent data structures in the same way that closure does so it's different the kind of code you write is different I use a lot of mutable stuff in scheme but in controlled settings let's say Yale says rest streams will be the most boring stuff ever it's more the kinds of stuff where you go for a walk for 60 minutes and sit down and type out what you actually wanted in 20. yeah I can I can see that requires a lot of pre-thinking before you actually um have to write the code because you have to think about how you're going to do all the things to make the borrowed Checker happy Etc ashra says like Russ core language and standard Library are nice the ecosystem can be rather wonky and while cool the async run times can lead unexpected devs to create really hard to refactor code yeah that happens in pretty much every language with something rust is interesting there's things I like about it like traits traits is an interesting concept but when you have to figure out how to which types actually Implement certain traits or you're trying to track down how to use a certain or write a certain kind of code that that is based on traits it can be a little bit hard to figure out sometimes so Russ is not bad it's just like I I don't feel like investing the time to write it Nicholas says if you want to measure load time uh there isn't there like the emacs init time 13 seconds it took so I I overestimated the amount of time because I was busy running my mouth while it was loading but it was 13 seconds odd Merlin says if you treat rust as a functional first language you can actually avoid a lot of the Pains of a bar Checker I believe that I believe that ashra says uh traits are a great example create them too small or too uh load probably big and you have headaches down the way but you can get the same issues with bad C classes C plus yeah yeah for sure yeah and it's probably one of those things that people tend to abuse a lot carp yeah carp is an interesting idea I haven't actually tried it yet it's another one of those cases where someone does something I'm like okay that's cool I like the idea but I also want to see how I would approach that so I haven't actually looked at the language yet because I'm I don't want to be polluted because you know I kind of like writing stuff myself so let's not uh you know bake some preconceived notions by looking at someone else's work what do they call that in uh Corporate America taint uh odd Merlin says what gives you the mini buffer pop-up in the middle of the screen that is uh a package called vertico post frame actually let me show you emacs post frame there's a package that um is sort of the core of all this called post frame and what it does is make it possible to open a frame at any point on the screen so you can just call this post frame function post frame show and give it some parameters and it will make a little pop-up like this one here with a red uh border right but there have been a couple like IV post frame which is something I used a while back you may have seen it on a few videos which makes the Mini buffer show up as a post frame so uh whoops instead of it uh showing up at the bottom of the screen in the Echo area that pops up as a like a separate frame and it's kind of nice it keeps your main window from being moved around every time you try to open um the mini buffer or like a completion or something but it can be a little bit flaky also and this reason why I stopped using it especially with exwm I had problems with that so the one that I'm using here is the um vertical post frame I don't think that too much you did that oh no it was by Tim issue so vertical post frame that's the one we're using for this ashra says I will check whether alpaca is faster than my current package.eo based configuration with a hot file system it currently takes one second oh necessary on Windows because otherwise AV will kick in yes anti-virus on Windows is like the the bane of any performance on uh programs that are not installed in program files I guess even in program files is a problem but definitely elsewhere okay I think that we're out of time so um yeah alpaca seems like a cool project if you're in the market for an alternative Emax package manager I definitely recommend giving it a try go to the uh github.com profolio Slash alpaca repo and check out the documentation there file any issues there that you see it seems like Nicholas is staying on top of uh the issues because there's only 10 and there's 117 closed so it looks like the uh maintaining of the project is is high quality so that's good so definitely recommend taking a look at that uh let's see I don't really know yet what we'll talk about next week if people have ideas for things you would like to see me talk about please feel free to let me know through any of the various communication channels I keep forgetting to tell people to follow me on fostodon or Macedon also but fostordon.org there it is fossid on org slash at davidwill I'm also there in case you want to send me any uh hate mail let's say and uh yeah definitely join the system Crafters uh kamo yes I screwed that up go to the chat with a section of the Community page on systemcretres.net to join the IRC or Matrix channels they're bridged across so that if you join either of them you will end up in the same place we have a lot of fun chatting in there General's channel is a little bit crazy so uh yeah be forewarned we talk about a lot of random things in there but there are channels for emacs and Geeks as well so uh you can discuss other topics of Interest yes I need to add a redirect now apparently kamo yes we've come up with a new terminology now Ismail says what about Nick's enacts integration I don't know I haven't tried it we're the Communists no the system crappers communists okay anyway thanks everyone for being here I hope you all have a great weekend and until next time happy hiking we'll see you
Info
Channel: System Crafters
Views: 1,685
Rating: undefined out of 5
Keywords:
Id: 11CO1vCpfrs
Channel Id: undefined
Length: 118min 29sec (7109 seconds)
Published: Fri Jun 23 2023
Related Videos
Note
Please note that this website is currently a work in progress! Lots of interesting data and statistics to come.