[Music] boom goodbye Google Drive copy one failed because of prime true bco true true um try let's build a startup with Elixir okay let's shall we uh okay docks I don't remember how to get started here installation okay so can I I want to get on the latest Elixir chat I want to get on the very latest Elixir how did I do this last time oh right there's the air Lang one cuz what did I do last time plugins misery which Elixir okay cuz this is the one that I tried last time see available versions okay this is what I want to do it failed because primis too many Meeks he's never made it to a meeting never made it to a meeting chat giving a box feels bad true true true true um okay so I wanted to try the latest Elixir and the latest air Lang for this because there's some cool new features there but I don't really know how to do that so um paranoid that's funny okay um how do I get get started I can say I have this activate me activate activate shims that's good but how do I do I say that I want this like project to have a particular version what happened in the previous stream what do you mean what do you mean what about Elixir cuz I imagine I need to do this I kind of want to I want to do the very latest one where is like 117 release candidate cuz that's what I want to try right I want new featur oh it's good yeah I'll make some videos this week about it because the reason I said that is because Elixir I don't know where's the actual like elixir repo I want to try all of the new stuff that they had Florida humid runes everything true oh that's not sorry commands edit today um I want to build an app for sharing photos with your friends more details actually with your family more details to explain later setting up some Elixir stuff and exploring some tools as we get started boom okay compiling from Source I don't think we want to do that I think we should be able to just use like this like main OTP 26 right that should be fine cuz that should still give us that should still give us all of the new the new stuff from that so we can try that um when I do Phoenix mix local. heex Okay so I need to have mix archive install once we have elix we need to install application [Music] generator up and running mix Phoenix new hello Fenix will accept either an absolute relative path for the director of a new project assuming that name r low okay so I can just do that from the base directory right so we're almost there following mix Ecto create or does this make a new folder that's the thing I don't really get should just do a no where's my theme song it probably already played today what's up from you you have to wait an hour and 7 minutes it's only once per day yeah I don't have it hooked up yet to be per stream because I I don't have it set up to be listening for it or not I mean we can just we can just cheat right now I can just do this right like okay now it'll play now now it'll play I just I just I'll just manually reset it myself why not just did it in prod unless is it just not running right did I not turn it on oh you know what I didn't do I got to reconnect Phoenix I'm pretty sure there we go now it should work on OBS I forgot that my overlay when I restart uh OBS it needs to be connected okay so I'm not really sure so let's just try and do something here where we can go maker um let's just call this I think I called this circles before move circles to circles PHP no offense um make their circles CD circles and then I'm pretty sure I know that I could do this with NYX I'm sure I'm not going to learn ncks as well today okay sorry I'm just not I'm not going to do it not going to do [Music] it I know I can already um priority these goes in or config me me. bottom overrides top Nick's mentioned exactly no one even mentioned N I already know but Antonio I was just waiting for you to say you know I'm already I'm already ready um so how do I what what am I supposed to do toml file to version such as setting arbit en valves blah BL blah so show me an example okay n tools there we go that's the one I want to try and do so we can try tools and I want to try and do air langang equals me say LS remote air Lang right so then I want to try this I want to try 27.0 which air L new this4 54 can do H I don't know then I want to try and do e Elixir and I want to try and do I want to try and do this let's try main oh but if I do this then I have to probably use 26 something or maybe I can just try main you just try this what's up SE us just go back from college what are we building a photos app hopefully I'm exploring a few things with um with El I really want to try the latest Elixir stuff here um but we'll just have to see what happens 27.0 is that what I do okay nice very cool start on on yep that's the one I want to try and build it uh again but I'm going to try in Elixir for a little bit and see how it goes start we building uh it's a app to share photos with your family basically that's the super short version as we get a little further we'll talk about it more taking FP Professor let me use for it oh nice cool hopefully Professor lets you use oaml for it it's kind of what I feel [Music] like OD l t failed interesting askk L mentioned I don't think it was mentioned live VI native incoming I don't know is that a thing semore Elixir versus Ruby um I like elixir so far a lot ship it tonight we're going to be all the way done yep they still hold on to the yava promise not to add deleted photos after an update I'm sold I mean to be fair if you do think about it you do like in some ways um you actually want your photos people to keep um to keep deleted photos like cuz if something happens and you want to recover them you actually kind of want that but like at the same time you also don't want you also don't want Google to keep the things that you deleted like I'm with you you know what I'm saying but you can understand sort of the difficulty there which Elixir that's not Elixir main [Music] though new Meer me activate latest get the latest available version link I plus remote uh plugins prune reim run self updates we'll try this right so I mean that's the where it's like okay but if you have recovery then you know what I'm saying like if you have recovery then you also have the deleted photos so that's sort of the I I trust me I I'm with you not a huge fan of Google saving your photos that you thought you deleted you know what I mean I am him am am 1. 16. p26 that's not what I want though I want to try and get I want this you could r on your group for recovering not Google that's not that's an interesting idea I mean it doesn't seem very good good because people will have a hard time with that but at the same time I understand like what you're going [Music] for more uh oh Bassie is there what are the odds of two one odds of tour photos being used to oh of your photos being used to train their AI what huh okay so I'm I really want to get main OTP 26 Master maybe I should try Master which one they on [Music] Main H so there's no way to get right now the 1.7 like test RC huh drillion doll start idea oh it's definitely not a trillion dollar one user key oh the fees sounds like a bad plan we do need blockchain though you're right probably everyone's right we do need blockchain is this really the easiest way for me to do this do I really have to build it from source to try and get this I don't really want to do that I mean we can try really quick and see what happens we can just try really quick we'll just see what happens first install airine which I have um which airine okay [Music] oh it's just Earl right which Earl there we go nice oh it's Focus why would you R from 110 DX in The Elixir some parts of it seem like 10 and some parts are a little lower like maybe five to seven I don't see a lot of spots where I feel like it's a one [Music] people use photos and Google PH on Google Maps oh [Music] yeah uh oh what's up hex how much should a junior get done in one month what what kind of question is that who's Earl and why does he make [Music] sandwiches okay so I made it now [Music] what's Ben Elixir version ooh nice okay cool um all right can I can I say something like I want to add this to my path somehow maybe that maybe I could do that with this as well oh interesting well that's cool I'll let's try it let's let's just give that a quick little try shall we oh let's say um build Elixir bin which Elixir H okay re uh [Music] say remove I don't I [Music] don't oh I guess it would be main OTP 26 something like this [Music] am I not doing this right plugin airing overrides a core plugin no plugins found I was kind of hoping that this would work um exports path we can try this um home TJ De build Elixir bin path which Elixir nice Okay Okay cool so that's pretty cool so we could try something like this config cuz I just I'm interested to try this home TJ De build Elixir bin path okay but m is an recursive up the tree yeah I thought that I I since I had oh what what where is this file oh right I wasn't in the right folder for this so I'd have to go to CD CD get um oh we could TR we could try not having this and see if it works let's try this again right cuz I just made this here config fil is not trusted cool nice that's really cool okay that's really cool we'll create the folder okay all right we'll we'll um we'll just move everything in a sec then which Elixir awesome nice so this adds this to the path but it doesn't like delete everything right so if I go Echo path it goes Elixir bin wonderful right there very cool nice Okay cool so now I can use latest Elixir and I can just pull this and build it again when I want to try the latest one Elixir is from local build to try L very good you give me so much at one time yes I do I what is this guy doing online so late Isn't it past his bedtime what is going on Prime why were you just liking all of my tweets while you were streaming that's what I want to know that's what I want to know literally Prime was liking and retweeting all of my tweets while he was supposed to be streaming look at this hurt just played kall in the rain for nearly two hours it was awesome true both of those are true are you going to leave like primay no I'm just getting started we got at least an hour you did on the toil oh actually that makes sense that actually makes sense Big Time dang gifted finger that's crazy stream for like 1.5 hours nice are coding in Brazilian we are I'm trying to set up using the latest Elixir cuz I'm trying I want to see some of the um some of the uh type system improvements you played kickball tonight I did I did bco it was a great time it was not a good idea uh because it was thunderstorming out but it was fine it's pretty much awesome with mostly default config yeah Wednesday's league night oh that's cool yeah the weather was Wild tonight but didn't stop us I wish I had kickball it was so good how's Elixir I like it a lot I'm going to convince Prime to use it soon more than oaml uh very different than oakl across exact h of pastoring while reading the library of Babel what better than hasell of course have you heard of gleam I have I have heard of gleam yeah okay so now what I wanted to try and do is we need to try and get this stuff running here we need to go back to Phoenix installation we need to do this yeah I'm sure I want to install Phoenix yep if you're C I have Beast heard of cows yeah heard of those as well you watch the Honeypot documentary of of what variety have you heard of holyy indeed yeah what are you building um we're going to build an app for sharing photos with your family hopefully what's the difference between Elixir and O camel um I like elixir typ or I like o camel's type system a lot better uh but I think uh Elixir has really good stuff with Phoenix so we'll see what's happening S3 but bucket action I'm not sure yet we'll have to explore when you start coding about 10 years ago uh I don't know that that's a good plan fuzzy being Library came out in the community oh hit me up with a link you can use live view yes that's the plan I used it so far to do some other stuff and I really liked it it's because of the Apple photos not deleted controversy no um it's I've actually I already built like something like the very beginnings of this I was exploring it in laravel and it was cool but I've recently come to quite enjoy Phoenix and live view so I'm going to keep doing it Ash framework so lost what is Phoenix what is [Music] Phoenix circles creating I want to do it okay so all I need to do here need move circles start of here okay nice qu H howo paludo I always say it wrong every time Bloom ui. ooh nice bated open source extension to Phoenix core components install copy of each component using the mix command in seconds yours to edit and customize ooh I like the sound of that here's a button calender item some sort of these are these are cool well I like this I like this idea yeah we'll have to we'll definitely check this out what are some other projects you've developed um I worked a lot on neovim [Music] telescope um some other things too are cool routine the l oh nice that's awesome also there's this oh I I did see live to I saw I saw someone talking about this why do you want to share a photos with my family good question Antonio you review sites mine is retro I don't review sites where did we get the idea of reviewing sites I don't know where that idea is coming from mix pH mix depths doget mix depths do can I just do I this will do my depths right yeah okay nice this won't work because we're currently using this port though so I'll have to switch it up here's Ash's site okay telescope is too good thanks model build powerful with a flexible tool chain run in lie book o i I want to try lie book resources Pok play don't want to create graphql uh a that sounds nice is this is this an alternative to Phoenix this is an alternative to Phoenix thought on graph ql um it's okay it's solving some uh systematic problems at your company but I don't I'm not really a huge fan of uh It generally speaking what do you rate Ash's site on scale of 1 to 10 five out of seven creates Phoenix for you interesting use ash resource domain example data layer here resource due description post due table post repo example. repo attributes text string allow no okay okay interesting but then now I have to learn now I have to learn a whole new thing before 1.0 it's good oh it's an alternative to Ecto okay I mean I'm willing to try it if if it seems really good if people think it's really good not an alternative to Ecto you don't need Ash Phoenix will be fine he act underhood yeah it's up there this Linux what dick Dro yeah the astion from which the Phoenix Rises I felt like that's I couldn't tell if that was sort of like a dig at Phoenix or it's saying it works with Phoenix you know what I mean uh I like the neovim terminal yeah like describing our domain Ash creates that for you something in the path I'm a huge fan of Ash and extension author but I would recommend learning Phoenix First well so we did use Phoenix already I've already written some Phoenix not like I by no means an expert but we already wrote a bunch of Phoenix before um probably a bunch is over is probably like overhyped but like like this is all Phoenix and it does cool stuff like if I say start Miser here and we connect now you'll notice all these get sort of updated we can pick you know like this and send this and it'll change the color scheme inside Neo him and blah blah blah we can cue these up and so now it has these queed together and so it's like so we did some we you know like we're using all of this is all live you and other stuff like this right so it's all like we we did write Phoenix already you know what I'm saying like I do know some Phoenix um what happened to your C I'm still working on it actively grug Noy HDMX grug go sleep yeah that's okay good night so you'll see now now it did a random color scheme so there you go is Phoenix a web server it does that among other things yeah [Music] um yeah grug Ring's great d weed hey thank you thanks for the sub appreciate [Music] it um okay makes new support help n CD help create a new project Ash creating a resource folders noty [Music] files how do I C myia it doesn't go that way WR website in Lu when that would be a fun project sended respect Tom's a genius but has tons of extension out of the gate they give you pation powerful off policy sorting yeah all of those things seem like very powerful for what I'm trying to build right TECO is fat um okay so here let me just I'll I'll tell you I'll so basically like the short version of what we're trying to build is I I want to build something pretty easy Mig later if you want that stuff okay well we can maybe migrate later that's fine too um basically in short right now I have a Google photos album that we add like all of the pictures of like my son to you and then another one that we add for my daughter and we have that shared with like a bunch of people in our family right DB migrations is nice that part I that's the part that's really annoying right uh because I don't post photos of my kids online but it's pretty annoying because there's no way to like organize the photos into like smaller albums inside of this thing it's kind of hard to keep track of what photos you've seen uh we've got another kid coming in in August number three uh and so basically what I'd like to build is it's kind of like you know how go+ had circles um you know what I'm saying like where you could create a circle and you could share stuff with certain people right so I kind of want to do a similar thing but for photos and and then what you can do is the monetization strategy for the site is hear me out hear me out people have to pay to upload and back up their photos so we don't have to make ads or feeds or algorithms or anything no no no no no no you don't have access to any other people's photos so it's not really like a social network in the traditional sense of like being able to just like go to a feed and see people's pictures you you you as the owner of the photos invite other people to see photos see albums basically right it's like an antisocial Network basically is like what I want to do it's all of the opposite patterns right and then most of the stuff that's like that I want to do with it is about making it really easy people have to pay to delete photos very smart um do more you got a beatball teamer yeah competitive Esports yeah um is like I want to make it really easy to make sure you've seen all the photos and then being then being done right so you like you say oh look you know like my sister uploaded some some new photos of her kids what were they doing oh hey now there's no photos left for me to see no new ones right and that's it right so that's sort of that's sort of like what I'm trying to Target right this kind of idea um so yeah so that's what I want to do and and then there's there's no like algorith mic or like dark patterns try and keep you looking there's going to be no VC funding because that's going to be the opposite how are you going to make get people addicted to make a billion dollars that's the best part I don't actually want to make a billion dollars with it if we made you know several $100 to several thousand you know a month we'd be in a real good spot chat snapchat plus RSS kind of yeah it's similar to that in some ways not billions I don't need to make billions with it this isn't the sigma grinds set mindset it actually is the sigma mindset is knowing exactly what you want and then doing that right it's the beta mindset that says I have to get whatever the VCS want me to do right that's the beta mindset the sigma mindset we already know what we want and we're just going to shoot for that Bezos daddy wouldn't agree well Bezos Daddy can keep on getting money from Subs while we build the site um oh and I I want to do um I uh what I want to do is I want to build it and we'll I'll just make it open source but basically the license that I want to do for it is like you can't run it for commercial purposes you can run it for yourself and selfhosted if you want for your own family and friends but like most people will want to use I think the hosted version because you can like log in once and get access to all the photos right do you look up existing products I don't really care to I kind of want to build this for me and we'll see if other people want to buy it yeah I I think it would be interesting to see if we could hook up to Google API at all but that would be good too will there be AI generated family photos for Arch users yes we will have a mode where you can pay extra to pretend you have a family if you're an arch user yeah we call it Arch mode of course um what can you do friends and family actually with the arch user mode is it it makes it look like you go out and you have friends so you can share those with your family and they believe that you're like socially adjusted right that's kind of like that's kind of thing jendu mode you self-hosted I already said it's self hostable right finally I can use a service uh so anyone can upload photos no you have to pay to upload photos lots of value indeed want to import from Google photos probably within 30 minutes yeah yeah we probably can do something where we can Implement Google photos we'll have to figure out a bunch of stuff first before we get there but we'll like explore explore doing that so I'm kind of wondering if we should try with Ash when it works have the mod where you can pay for host and manage but s if you're into that yeah I think basically the win for the hosted one is that you can log in once and get access to all the folks right I'm not going to try and make something that's like Federated and all this other crap I have no all of that makes it really hard for users to use it so if like you know you're the only one in your family using it you want to share it with people and they log into your own site and you want to make okay great that sounds that sounds fine you can run it for yourself but like it just not that fun you know what I'm saying just write to the ash post guy yeah okay cool we'll check it out f with they shut down AI 2018 oh my good goodness that's C that that's kind of crazy they just don't have the API anymore dang Google Sheets as a DB now we're thinking and there's been a lot of use Tigress is a new object storage can you give me a link what are your plans for storage I don't know yet I have to explore that oh we're elixir in what about pocket base what about po pocket base I don't know anything about things on the internet chat like a mini iio minio instance or something I don't know tigerd dat.com looked at GLE I've looked at it I I'm not super in depth yeah that's out this provides low lat the world St accent amount of data so okay here's a question a devu doesn't know about things on the internet yeah I mostly write uh I mostly write stuff uh you know for your computer not on the internet use these Commerce website shopping cart length plus millions of account story data and binary for free on the internet ooh nice I like this we could use YouTube video YouTube videos as a format to store uh data so here's something that I've been trying to figure out out chat is is really the strategy that people do like if I go to Google photos right we get my picture of me under the sea right so we go here and we open this right and then I go to this and then I click copy image address and then I click this is it really true that like anybody with this link can just see this image I'm under the C like if you guys click [Music] thisi personally they don't charge for to okay interesting really you can't it's blocked oh dang that's interesting okay um oh crazy Okay cool so that's interesting how how do they do that Mary kitten asley C danz has an off string at the end it's based on Google off so some some cookie and URL he's not kidding only does local depth stuff makes sense yeah sign URL cookies session with cookies okay thoughts about using Cloud FL R2 for similar use I have no thoughts chat Chad I have no thoughts how are you generating happy photos of yourself give he's in now fuzzy little man Peach H you have a drunk funny there's a button to link yeah yeah I know there's a button to get it I was wondering if I clicked this image copy image address right that's what I was wondering would this work but it doesn't so that's cool I'm all user zero yeah I've been using Google photos I'm the first user um okay well that's interesting how tall are you 510 on a good day 5'9 and a half on a bad day okay that's pretty interesting though I was not expecting that that didn't work the chk's 80 ft long yeah see the cookies and header okay I'm not going to do that I'm not going to do that while I'm on stream but that's a good idea yeah we can do that where we can just copy his curl and see the cookies good thinking that's a good thinging I don't know if anything could possibly dox me from that but we're not going to do that I'm not going to show the cookies but it's a good idea we'll do that off stream later do it on different monitor I'm just not even going to do it on the off chance that there's no world where it's worth it for me to try that on stream and possibly give away some cookie that I don't know how to fix say your mental focus is oh it's focused oh it's focused you know switch trat too well yeah the first user should clearly be one that is a good point though I promise I won't share if anything if it leaks exactly okay so that's cool so it is possible basically so this is the same thing here there's like a bunch of it that's all the same until like 9uu or something like this oh it must get like hash with this or something I don't know I have no idea how they do this you know what I'm saying give up the date on stream counting starting from one wastes one bit though oh no one bit I downloaded a photo yeah I tried it in Incognito mod it didn't work reverse engineer glogle photos well I don't need to reverse engineer I was just wondering how they did it yeah yeah we did we did I tried it I tried it already we did this and we tried it and it just it just does this it says no right so that's good so they actually do it right what was he trying to do exactly for Storch no no no no no I was trying to figure out do people um like does Google on their photos do they just use a really long URL and then say okay that's that's fine right I was trying to figure out like for CDN right so for a CDN right how do you make it so that you could have a CDN but not everyone gets access to it I don't know these things chat I've never tried this before for okay right you understand what I'm saying CDs n yeah it's just with a cookie they just stand an off layer on top I don't [Music] know path is an off path image ID temp off key yeah pre-signed URL for limited shares yeah okay onion share interesting signed URLs okay they do have a they do have a way that you can share it we'll just ask chibby how does Google photos make signed URLs so that people um with a link to an image can't open unless they are logged in when a user shares an image this token is better than the URL the token is linked to the sharing settings and the Google account sh the image Tok set to expire certain period oh this is there's lots of good ideas here two shares public and named users like many products yep that makes sense but so is it possible to do this kind of thing via a CDN it's not logged in I logged in Google but can't ask your pH yeah yeah right so it's like OS S3 has a similar thing as well okay scarjo is that you it's me it always creates a new album yeah temporary and key tokens yeah identity aware proxy you in front of your own but nice if you had a friend happen know a lot about CDN but it would be nice if H wait what are you saying pet food are you saying you know lots of things about this IP will be nice should I use I don't know should I use gcp are they going to shut that down soon should I be using something else chat same with Bob sword same mag as S3 fire swur gcp I heard gcp is the end of life as soon as I start using and depending on it chat I'm going to it's going to be gone you know cloudbased onpress appm verify user identity user gr access work on inflence Zer trust access model interesting okay yeah yeah yeah Chris mcord creat fing for yeah yeah I know fly's pretty popular Chad I'm just I'm just meing I know I know Cloud isn't there you should write your own storage thinking about it why not you know um cloudinary teach Cloud at least she same more than a couple months yeah killed by Google I don't think they're going to kill gcp waiting for them to toss out their gold L team so they want last year yeah fulltime Cloud Creator that's me upload your images to get Hub issues and use the generated CN link see now chat you're really starting to think okay cuz like for example Discord if you send a Discord DM if you send a picture in a Discord DM let's test this Let's test it right now let's test it right now I'm gonna copy this image and I'm gonna send it to Ryan please ignore I'm going to send it here so I just sent it to shy and now I'm going to copy this image address and I'm going to go here and then we'll open this here so like Discord they're just like yo dog anybody can see this right it's so like you you DM someone a picture and someone could find it Discord chair is her MIT that makes sense yeah I sent it in a DM I sent I sent a letter in the DM or I sent the image in a DM yes I mean it seems unlikely that you could crack this right what is this hm Shenanigans here so now you're saying what if I just yoink all of this off the end and I just get to the PNG the content is no longer available interesting expired for some time but you can just recreate them got it oh no oh no vegan's got so many points hm expires in after a while got it got it where did you store yourself written storage I don't know I don't have a I'm not actually going to self Right Storage this is terrifying beegan is getting a lot of coins can make program the r for Discord pictures toward it's everything found in the DB yeah but I don't think it works I think you have to have some like hm stuff here you have to have this as well so there's something else going on so that's interesting just set up a liquidity pool to be able to sell teach coins what do teach coins do um are we connected right now we are connected right now so if you go to rewards te and you go to your dashboard you can see this and you can do stuff like pick a pick a pick a color scheme right and then you go to neovim and sure sure enough look at this they go up that's all they do they go up so like you you go there you go you go to your thing and you can do stuff inside my Neo him probably the best one is fog of War which we'll see in like 10 seconds uh so we built all that with Elixir already and LU of course the full Brazil stack make a way to make S and you can also make sh blings yeah I recover okay so here's fog of War beegan you would like this one right that one's pretty cool yeah apple is Prim as a guarantee we have your data it's not unlikely the bug that deleted data and Bug recover dat that was lost yeah but support War well it's just the fog of War if anything it prevents War cuz they can't even see the enemies to try and hurt them if you think about it why would even do that LOL uh because it's funny didn't even know you can do that that's clever thanks I wrote it myself fog of focus would you want me to be not focused vegan you want me to be not focused well I've got something to tell you how would you say your mental focus is oh it's focused okay Bean it's focused I laugh out loud never gets old it never that the clip never gets old oh man it's almost like looking at your code through a telescope exactly if you make an open source project that you think is cool how do you get people to see it um post about it in places where other people would think it's cool I don't know it's funny cuz he's not focused that is the funny part for sure okay interesting if you build it interesting interesting so we can we could start with um just storing it locally you know what I'm saying just to like explore for a while then I don't have to pay any money either to test stuff out um post on Reddit and get roasted that's a good strategy too cuz then you'll find out things that you could make better what's prime favorite Port 42069 we'll do that one post on hn get roasted there yeah but that's kind of good you know what I mean you actually kind of want that to happen valid password post Crest oh we tried to start a postest one already oh we didn't make we didn't make this we got to go um mix Ecto create all right um let's see yeah this isn't what I called it what did I call it last time when I made this I don't remember what I actually made [Music] config oh right I made my own uh like I had to load a secret key and all this stuff so that you guys couldn't pone me that's right I forgot same post can flop up on H depending on when you post true post on forchan get cancelled forchan doesn't like me very much at least attraction wise they called me a five out of 10 what can you do I would have just reset I would have just reset postp by now yeah I just don't remember what I was what I was doing to set up postest stuff before bro you're a hun not according to not according to [Music] um yeah not according to them talk details how did I I don't even remember what I what I called this database before I don't remember how I even make one what am I even doing I just need to make a new circles Dev one here cires repo couldn't be dropped killed connect invalid password failed for user postgress did I just say TJ De re and just password why do I feel like that's what I what I made it be nice very cool smart I have to use ETS um no I don't think we made it to etss yet 5 on 10 in your girlfriend yeah five is probably Fair thanks use t-mo I don't use t-mo now what was the criteria that led you to choose Elixir well I I chose it for the last project because Elixir is really good at thinking about a system as like passing messages between different actors and that's basically how I Envision like um the project that I was working on so it seemed like a natural fit and live view seems cool and so now I want to do you know some similar stuff but I want uh but I want it to be able to scale maybe you know what I'm saying so we're going to try it out or distributed OTV I don't know yet I'm not I'm not not good enough at uh at Elixir yet to think Sid secure 3p oh Sid secure okay interesting no I just restarted again an hour ago reason WhatsApp uses Elixir yeah I mean Elixir is very cool oh yeah it's got message oh man it's got so many goodies built in it's got so many goodies built in okay nice so now we can open up Prime's favorite Port 42069 of course and there we go now we have Elixir great I imagine distributed OTP is like because everything is running as um like separate processes there's no reason that they all have to run on the same computer right so so you you can just have the processor running on different computers when they communicate with each other they just send messages over the wire instead of like internal stuff I don't know doesn't Elixir suck in handle files and stuff like that I don't know I don't know what do you mean handling files it seems like it can handle files 100% yes I figured that that's basically what it is US interaction conduct RI perf tests um we have test stuff that can do perf or that you Ser function that's closed over State and run on another node oh sweet that's very cool I trying to scale never trying to embrace the struggle it can't even open a file yeah I'm doing great Cisco how about you okay so so that's good Transformations all send a full rest picture oh we'll we'll add stuff for like uh making thumbnails of pictures and stuff like that yeah um Okay so so I think I think to start let's just let's just have it be that we just use photos like from my computer um that's where I think it's like easiest probably for us to start and we'll get to storing something somewhere else later okay cuz we have a bunch of other stuff we have a bunch of other stuff where we need to sort of figure out and test and explore before we really need to worry about like oh we're storing this somewhere that actually you know has redundancy and all this other stuff uh we can just figure out how to do that later not super worried about it um oh one thing I wanted to check where the that even be circles it's weird that it's not cuz I wanted to check uh what Jose had said yeah where was the example that he gave recently where there was some cool stuff I wanted to test out if I was on the actual version of Elixir that did the same ah here we go new week Elixir v17 now exception those on UNF find exceptions that's not the one that I want to do I wanted to do I thought there was one where it was saying like you had something where you couldn't uh access like a struct field that didn't exist am I crazy I wanted to just test that out to see if it worked right death module example thing do and death struct ID name sure def um FP do something do we do this this I don't even yeah we do yeah um thing to end spec do something example thing T okay at type t as this and then we just do let's just say like debug something thing. named it will be upset recompile okay interesting so oops okay so I thought that this wasn't going to work because this doesn't have named on it I thought that I was going to catch a TJ stream exactly T what's up buddy I thought that's what I was seeing summary of the new warnings Accent key on a mapu does not given decree such as user or dis alixir V7 will now omit the following warnings at compon time maybe I need to not do it from here maybe I need to do it like oh wait oh no no that was that was another thing okay mix compile uh mix phoenix. build what is it again Phoenix build I don't remember mix compile oh thanks just mix compile okay so why doesn't that fail chats [Music] um pretty much just personal preference am I do I need to call this somewhere the previous command screen you whipped up um oh that's atne it's very cool stuff what do you get with I don't know that's what we're trying to find out that's what we're we're on currently exploring oh nice Rory very cool glad you liked it glad you liked it can you mix airling and elixir on the same project yeah they run in the same thing in fact you can just call airling stuff directly from Elixir and stuff yeah it's public so it should be considered reachable that's what I thought um death another do and do something sure we'll do this example struct oh do I need to put this above here maybe I need to put this above here maybe that's maybe that's weird cuz it doesn't exist yet okay piece of song is fine steong or no you can yeah you can do it I think 5 Seconds usually we will not get in trouble basically it it seems to me so far at least I mean don't make it Nintendo music we will we'll get we'll get wrecked into Oblivion but oh 15 seconds well then we have to be a little more careful yeah so it's like gleam something it's called on pack module plug run as long as reference we can use interchangeably did they all run on beam try putting example oh okay gotcha example thing is thing okay okay got it okay that's really cool yeah I wanted so I just I have right now I'm running Elixir 7 uh 117 okay so I wanted to test this out as I'm working on this this is saying a struct this is saying do we have a struct this is saying this should be an example thing from pattern matching guards got it okay whatever I think we're back now they've got some job at midnight eastern time probably Us East ones changed or something it's probably it's whoops Us East one switched over heck of a crown job exactly okay so I have to do this that part's a little bit annoying I guess I don't even have to write this back right like if I do this I don't even have to write this back it's kind of interesting though that's funny okay so that's pretty cool or did you complain about his audio equipment yeah I don't know specs will eventually be used for it okay that's good I mean I guess this way like forces it to be the case right in a sense like I can see why they would do it from this and not from this but this is cool so I could skip writing the spec would be fine and then I would write this and it would say hey that's not that doesn't work and then I would get an error okay that's awesome that's what I want to have happen right why is this term and term though I want this to know that there should be an integer and a string does this need to be a module or something how can I know everyone I just don't like strong types I can't invert yeah yeah they're working on it they're working on it I don't have a front on Master's code no you can just use primes I don't know how to make this not think that it's just term and term though CU that part I don't like either right you know what I'm saying maging like that is probably also I types you're yes right what risen tdd what about tdd teach driven developments how I do all of my development so these are all warnings that will happen that's cool um at the moment set the only type system current implantation all data types in language binary integer float blah blah blah atom map so how do I how do I say that this struct like do I need to do something with death death struck uh okay that makes sense morgal yeah yeah yeah try death struck with declarations I don't know I don't know what that is death struct field one two three I've never written it any other way besides this so I don't know what to do with that we can also try typ struck to see if that works as well add access fine so that's where I'm not I'm not sure what to do with like structs here you know what I'm saying close maps such as key atom integer with the struct key instead of atoms you can do keyword list with initial values oh okay but that probably doesn't like that's not going to make it yeah it's still just says term and term type Dynamic example [Music] thing we could let's see if we put the spec back here if it does anything still doesn't know that it's term and term cuz what I I I'd like to be able to do something where I like say that this thing is another is another type and see what happens you want at type in your struct module without level info that's what I thought I did right here at type T module ID integer name String T so that's what I have but then it doesn't it doesn't know that here so that's kind of what I was wondering maybe it's because wait or shouldn't this integer like this ooh maybe that's why oops no it still just says term and term interesting yeah I think I was I was supposed to use integer like this anyways ID integer name t string T are just di H orthogonal right yep yep yep yep that that part makes sense I just was wondering if there's something that I should be doing with like death struct right yeah so I was just trying to figure out if anything in v117 had done this I'm I'm also kind of like exploring where they're at currently with the type system right as we're doing this cuz I've been interested to actually like give this a proper test pattern matching I'm on the given key so like here this shouldn't work cuz this Compares a name and a string right this is what I thought it was going to say that this would do [Music] our compile time only constructs okay uh okay id id name name uh when name is integer name and is uh binary oops name that's not what I meant to do is is integer and oh yeah what I meant to do this one should be ID interesting okay so maybe that one's not maybe that one just not working compare a struck to a struck rather than literal or literal okay structural and not semantic comparison okay well that's kind of cool right we got that but it wasn't comparing their fields so there's just a so right now we just have fields that are defined here we'll have to wait I guess a little bit before they're ready for the next one yeah yeah I I know the IEX um like workflow for it but I was just trying I was just double- checking everything works fine spec kind of works fine until then yeah yeah that's okay uh okay so this is this is still like good I can't install jdls oh I have no I have no yava stuff it's Des module like a class uh not it's like a name space um it worked nice dial did you check like uh envm JD TLS this one and check like there there's a lot of a lot of stuff about how to actually install and do it what's up sooshi uh okay dialyzer Elixir I wanted to look at this as well um mixed T by use of dial dialer well wait I want to I don't want this I want dialyzer mix dialyzer so I need to add this probably as a task right what I guess I don't understand is where is dialer itself dialer is Airline okay interesting okay I mean we can we can add this I guess okay oh I didn't know I could do this mix do.get that's cool daps compile that's fun yeah makes sense it's going to check all of it's got to do everything for all of like air laying in Elixir and Phoenix and everything interesting why Elixir over gleam why would I like gleam doesn't have Phoenix really you know what I mean like I want to use Phoenix I want to use all the stuff that's there right so it like gleam seems awesome and really cool but if I was going to like write a bunch of stuff myself I'd just do it in O camel probably like I really like oaml so I would just I would probably just do that you know what I mean the Su me is do something but the spec is do something alixir sh te the return types do not overlap okay I don't know why the other things happened what is this saying here there's not interupt it is but like just because you can interoperate with stuff doesn't mean that like it fits within the type system and that it makes sense easily and that it would work with like macros and right you know what I'm saying why is say please file bug here with this message unknown error [Music] occurred I like it it's good that it's failing I want it to fail I I want I I want it to fail [Music] right I don't think it would be so easy to just create a rapper you know what I'm saying Jeremy he just wants to know I had an error he just wanted he just wanted to know that I had an error function Clause error that's what I want to see M 117 RC it makes sense yeah okay well that's fine we don't have to use it right now like gleam is really cool don't get me wrong I think gle's awesome and they're making awesome progress but like ignore exit status interesting like that doesn't mean that it fits for what we want to do for the right yeah if gleam had Phoenix then yeah right yeah sure gleam exist I mean they have a really awesome type system and like uh syntax that maybe some people are more familiar with and some other stuff like that right building a phoenix competitor is probably a lot of work yeah yes agreed probably that probably is doing a lot of work yeah oh man that's funny okay well that's fine I don't is there um an LSP that uses dialyzer Elixir LSP dialyzer Elixir LS does n nextx LS okay I like Mitch so I mean I'm happy to test I'm happy to test this one out [Music] yeah I'm I'm going to I'm going to use typ struct um as well I think I I liked it a lot in my last project that I was [Music] using so what I wanted re question is anyone use Elixir if they're doing something that isn't Phoenix uh yeah yeah they do I mean there's still a lot of good things about Elixir right cuz I wanted to try and do provides extremely sppy here PR because I was thinking about turning some of these off um um because I I've been very pleased with everything that I've been doing from um like this doesn't really give me a lot I already have this error so do I really need to use this only thing I want to get from this would be like dialyzer basically I don't I don't care if it doesn't like Mason that doesn't bother me most of my other stuff isn't really installed with Mason for this anyways Credo language server what is this what is [Music] Credo a linter got it wait it runs all of these XLS enable false mix Dev host experimental completions enable false false of false static linting got it which do all of these respect the spec stuff or no B basically I want one that that does something with the spec right cuz in this case this just isn't true right so like I I say I have a spec here and I say I'm going to return that this thing is greater than this thing but like nothing about this is right you know what I'm saying but I'm not getting any I'm not getting any like error from right I have like thing dot I have ID and name right okay great but there's no we can add um type struct again what did I add add last time in here I do want this cuz I think this one is good dial what makes use of it right so I'm saying are is there any LSP that uses dialyzer that hooks it up with everything right and then I can see those results inside of here cuz that's all I want from one of the other LSPs basically right you understand what I'm saying so Elixir LS does that one might not be on by default cuz right now I'm using lexical Lexi Cal and I've been very happy with it for everything so far it's been good but it doesn't do anything with like dialyzer I don't think you know dialer Diagnostics I mean so here you go this is like 4 hours [Music] ago oh cool dialer incremental mode nice interesting interesting so like does this one use dialer see like here's dialer format warnings blah blah blah right so like this one looks like it's using dialyzer so what what like my thought would be I can just like can I just turn on uh like elixir LS right language server driving C debug Rector I just want the LSP part automatic incremental dialyzer analysis that's what I want that's what I want okay so how do I install so you can have different projects different versions Elixir canect to use version elix have configured here um LP config all elixir LS okay building and running there two ways mix andall recommended okay wait can I not add it as a dependency ashes DSS also a s foros okay oh nice all right so we can okay we can just the problem is I'm not is it going to use the right air langing and elixir and all this other stuff is kind of annoying we can try we'll just try I guess right all right so I already have Elixir LS um installed um which is fine but those finish installing then we'll try so then what I wanted to do um okay so let's go here and let's go to my LSP and knit and so um LSP whoops and we should have uh Lexi Cal oops lexical here so I'm also going to try elixir so good production or anything already inter yeah I'll try I'll I mean I'm I'm going to give it a go um I be config all elixir LS Elixir LS um command this is fine router is this okay I think well we'll just see what happens here so what probably is going to happen that I don't think I will like is if we go to mix or we go to our circles ex here what command not to find for configure us oh so I need to call that um what's I need guess I need to find it from Mason that's fine I guess whatever [Music] Elixir LS right that's all I need [Music] though sure we'll try that LSP info so let's see uh we connected both of these okay that's cool we'll let him run for a second setup seems the opposite of simple okay so nobody still ever no one's complaining still about this though that's the thing that I wanted to see right why does it keep saying Ms what it say um building core dialer this take a few minutes can be disabl in settings unable to find format format cannot be found okay interesting I don't know what that means I have no idea how to know if this thing's getting closer okay nice name can be any value why can it be any value I said right here that it should be name should be a string right so like that's what I'm say that's like where I was hoping to say I I was hoping that this would come through from dialyzer [Music] right I mean we might need to just let it cook for a while right last time when we tried to run dialyzer it took forever D TV not a bad idea really there's nothing at runtime to stop you from putting an integer there uh okay that's fair I suppose all right let's try this let's go here um use type and let's go um type struct oh I forgot I got to put uh as well where do we put the there's something in my is it in my mix or something formatter right formatter e right typed struct do field ID integer field name string T and then let's go ahead and do B like this then have a fall through match block but you can match ke a struck and touch it with a guard but I don't want to write that though over under of gen servers it's going to be a lot SE 4 but that's what I'm saying you know you got you know what I'm saying I want to get a at least a warning back that tells me hey you promised that this was is going to be iner and this one's a string right I I don't want to have to write every time ID blah blah okay we're going to pull this out I'm going to say that it's supposed to be an integer I already said that part here it's okay if the project still builds right but I'm looking for at least a warning up to 1550 minutes for fire up right so I'm I'm still I'm still trying to let it cook right still trying to let it [Music] [Music] cook the mac and cheese version mhm maybe I should just run mixed ey eyes or circles I don't know if that'll work or not [Music] um cuz like this this is what I want right this is what I wanted to say I want to say it says here successes do something this to this Boolean but it says it's going to turn string that doesn't work right that's what I wanted to say so I have no idea if if it's still trying to cook on that maybe we need to restart here OTP compiled without e 48 documentation truns okay sure what is it saying here unable to find formatter for this lip circles formatter plug and Fenix live VI HTML form are not found I don't want to do this [Music] anyways do you use Credo in your projects I don't know what I haven't tried it yet stattic code analysis tool with focus on C teaching sure we can try we can try it mix Credo sure I'll give this a go I haven't tried it before so I don't know um I love it and it integrates with L spe okay we'll we'll we'll test it out we'll test it out mix Credo no case Clause matching can I limit it to only my um app takes a long time for that L speed think test time so it has to recompile and Anze everything okay that's fine hey hey let's see what it says now name that's the right one what about id id should be integer I was kind of hoping it was still going to tell me that this was wrong right I like I I I get what you're saying H I don't know what this means okay got it I'll say that's uh like I get that it's not ready you know what I'm saying I get that it's not ready might not like your Dev version I'm wondering the same yeah Mak help CR out yeah uh um cuz ID so it just doesn't doesn't know right say ID what about now surely now it should so this that's so sad right yeah Oscar mhm right cuz I'm trying to understand the tooling that I'm using I know it's crazy isn't it imagine wanting to figure out and understand something before trying to build a business on it this part pretty much sucks though like what is this what is this chat why am I not getting an error at all here this one can't be true right SP yeah this one was really show hopefully Som that yeah yeah yeah let's see maybe dialyzer will tell something or no manager but okay so right here it says the return types don't overlap so this is like I don't know I haven't I mean I couldn't get Credo to work kedo just crashed I think it's probably because we're on 117 Dev that's my guess I I haven't used rails in any serious way IDE is defined here as an Inger and we double check it's an integer right here I mean we can try and run Credo LSP I have a I have a feeling right that that this is broken because I'm on the main branch which is fair that's totally fair you know what I'm saying that's a in my opinion super reasonable it's that part's super reasonable um that that that that's not going to work cuz I'm on a version that's not released right 117 doesn't exist yet um I'm trying to figure out if it's worth it like should I am I getting anything really that big um from running 117 right now no but but if not integer it won't give cuz you are telling it to only do that if int isn't it wasn't it incremental I thought I had some in incremental thing they not have like the latest dialyzer or something I don't know I'm not I don't know what I'm doing with these you know what I mean trying to do something complicated trying to add types to something that is 100% it only takes one bad type to mess everything up yeah so this one passes which is a shame you know it would still be better to get a warning right even if this is po even if like I I want a warning when I build this right so that's where I feel like why would I get a warning I said here I want it to be a string but I told I said up here it's going to always be an integer to cheat on oo nice Doppel hey thanks for the sub I really appreciate it that's what I'm saying I I feel like I said I I took the time to write that this one's going to be an integer right and then and I also wrote the time say I what I really want to do is return a string from here and then now I'm going to say well what in my mind what should ID be ID should be at least inferred as a string right now when I do when is integer whoops is integer ID here atpc for do something call it from another function that returns that as incor cor definitions now dialer is going to error I'm pretty sure dialyzer is going to say yo dog that's not possible these things don't overlap so I get it right it check the guards and then it's good bet the calling H will throw no return oh because I have something like do I need to do def do something here and like error this or [Music] [Music] something your check for is null [Music] [Music] I'm to go to read they're doing seems non-trivial they have they have a lot of really awesome stuff that they're doing right I this it could just be that it could just be that this is not like what this is just not what they're just saying you didn't promise that this one's not going to be a string so I'm going to assume it's a stream it's not about being mutable or not it's just about saying you never said anything about the type right so if I change to say when is integer ID which is that's like the true that's that's true you know what I'm saying like that's true now when I run dialyzer it's going to say when is integer ID wa didn't I oh this will never happen oh so let's take this one I don't know something like this control why so much grent I use on Z stage nice let's see if this fails now okay nice so this one's saying it never does anything here can I put something like at imple true or something like this here but no no that's for Behavior okay [Music] impulse Behavior yeah I was trying to think if there was a way to say like this should be the is there a way to say like this should be the only case or like I I want it to fail if we get anything else I like not writing anything is also that [Music] but if yeah [Music] I mean it's nice that this one airs right so I haven't spent time to figure out oh interesting Scott that's weird you just don't match right is not instead of is not sure how elixir does that and SE prefix yeah you can just do not right I get that part so but so that's why I'm saying Mor I I like that part right I like like that it won't match I like that it it's going to raise a runtime error I like that I don't get why then this doesn't tell me yo like you you said it's going to be an integer this is the only thing I've written right you know what I mean I don't have any other spot to like that I'm calling this or whatever I don't know mostly documentation right but I was using d izer that's why you can tell it what to give for feedback on what you're considering and what isn't which is okay gotcha so this says I promise that this is true and then I don't care what happens in here okay disappointing well right they're working on it though but yes [Music] okay I guess not [Music] [Music] gotcha okay it just this bir's weird it's just weird why is this not like like dialer says I get the error here so that part's good you know what I but you guys understand what I'm saying right it's like every time I call something with a struct I don't want to write all the guards I want to say it's my happy path and when that doesn't work I want it to air try in V16 I bet it work it does work right now as well like this part works right it just makes me sad that this doesn't work that this doesn't work and that it says that this is fine that part I don't like this done by adding used Domo at the top okay like this will work just fine for mix compile which is fine it's nice that I can't say yeah shouldn't be needed yeah I know oh in V16 it works without the guards you're saying this this should work in V16 it's just because I'm on v17 right now [Music] it's bright it's bright I think di work properly yeah didn't they want to add SE they're working on it yeah use Domo D Tru amount use Domo deathu ID Pro limit items oh that's cool nice you gener don't like following purchase order new any enumerable as the input value nice okay well that's cool I like this at least I don't suppose it works like does it work at all with diyer it probably doesn't do anything better with dialyzer either though right sounds like elixir deserves more eyeballs I think so I've been really liking it a lot I mean this is still like nice in the sense like it is it's good to be able to um to like see these errors earlier rather than later like the earliest you can get it on runtime is better right death struck the fully conditions this with new default arguing for a function or default value stru match type pre conditions okay that's pretty nice too yep type insure module just let it crash bro I'm happy to let it crash like I I like Let It crash um but that also doesn't mean that I want to let it crash because I said it was going to return a string and I know it's going to return an integer there's really no reason to let it crash there should be let it not build right like if I'm going to write stuff out about it it it should just know that's that's what I feel like okay so maybe we should just go back to a normal Elixir version maybe we should go back to a normal Elixir version here and then um cuz what am I buying myself by doing v17 right now basically the only thing I'm buying right now which I feel like probably like surely dialyzer is going to check if I say something like this right and I say um and I say thing. ID like this right like dialer is going to find this too right what what I mean this gets caught because of mixed compile cuz I'm on 117 which is awesome that's this is what I'm excited about uh yeah I'm about to be done Jordan because it's pretty late but I'm going to try and start doing some night streams to work on this project dang so then that makes me really want to be on 117 right because 117 is the thing that's catching this I love this there's no reason in the world that this should not be like getting caught you know what I'm saying like th this this is like this just this is I it has to match this and this is how the struct is we've already done the guard it has to work that way it's fine but sad that this doesn't work anymore but that's fine Str access okay it'll also it'll also fail on or it'll also fail on V16 for this okay so what did what did I even where was I here where we were looking at are you sure mattress up that doesn't have a given key do not have the given key um Elixir 116 test it out I don't know there's got to be like an online one right can I not like just can I not just try it online Elixir playground 116 def module um my struct do end def struct id address def my funk my struct equals s do and s. address what oh sorry wait no isn't this right you're the guy from the Brien death struct dude this oh this just doesn't work oh because this just isn't real okay fine fine fine fine okay well we can just try this I guess right um Elixir at 1.16.0 something like this right or me LS remote Elixir what's my what's my latest 116.3 try the other way of enforce Key's name okay what does that even mean which Elixir nextx steps oh okay this is cuz this one's at the beginning so we need to go back to our Mis toml here and we'll just comment this out which Elixir okay mix do this okay we'll try this has to recompile everything cuz it's new Elixir version that's fine first thing on this page hex stop type truck typ truck HTML this bir I know yep I already know this part I can write it like this that's fine but does this error okay interesting which Elixir Elixir version okay well that's cool mix um let's try Credo again and see if this works now okay nice mix dialyzer we just try a few of these to see what we see you know what I'm saying they record yeah we have I would even say Beyond just recording streams I would consider prime a friend so this part's good this is a good warning who's Prime good question night shade it's the guy who ignores bisco when he talks that one you remember you heard of him [Music] before have you tried out gleam I have not really tried it out no still nothing blue hair does that help at all Okay cool so dialyzer still sort of like at least you know it still gets this as a problem here also not warning is a okay so this is all I want so we can stay on 116 for now we can stay on 116 which is good we don't actually have to worry about being on um uh uh 1.6.3 right that's what we said we don't have to go um into 1. 17 for this right now yeah I think I think the language seems great I've looked at uh you know not like a lot of gleam but I've looked at uh some of it and language seems cool I like a lot of their ideas I I would Pro like if I was going to just write a bunch of stuff for myself though I'd probably pick um Oak AML over gleam just for my personal preference stuff but yeah what sup John going TS what would you recommend o camel Elixir those are both good options I like both of them okay so let's try let's try this again so we can go in here awesome so that's great and then what I was hoping to see still though would I really really really desperately wanted to see key id id not found oh right okay awesome that's also cool why does this keep disappearing what hello is the the LSP is like freaky oh they're both fighting about this they're both fighting to format this file okay so that's fine the they're literally fighting about the file that's pretty funny gleam seems cool yeah we got to tell the LSPs not to fight right we had to tell them that we we need to not fight okay uh so we can go to let's go to our LSP andit uh whoops LSP uh so I don't want to um let Elixir El do basically anything besides give Diagnostics so I want I think I want to go um do we have capabilities that's what we did right we said capabilities so I'd like to do capabilities um and I basically want to I want to turn I don't even remember what this is called cuz basically what I want to do here is I would like to just make sure this gets deleted um so let me think let me think here trying to think about the easiest ways for this I would let Elixir Alis do Snippets too um I've been having a good time with lexical for Snippets I haven't seen anything where I felt like we needed to to uh to do that LSP config uh capabilities invi client capabilities broadcasting server additional functionality Snippets off protocol features Etc so I just don't remember what I need to actually do for this uh capab capabilities server capabilities um I don't okay whatever we'll go uh build neovim runtime luim LSP RPC capabilities maybe server RPC protocol capabilities yeah so we we would want to do something like this I think so I want to turn completion is false I don't want any completion from this so we should be able to say completion like this I think or maybe we need to say maybe we can say false I don't know we'll see hover signature help uh where's formatting right formatting false I think I can do this actually don't know for sure sure us we get DSL snippet aggressions oh okay well we can maybe we can maybe come back to it and we'll see I'm going to steal your idea for what lyser in what situation will running on beam benefit you IRL well usually it only benefits you on a computer I'm not sure what running on a beam would do [Music] IRL run onbeam does that count easier you can balance on a beam you can they even make those yeah depends on the width of the beam fair if you think about it like a sidewalk is kind of like a really wide beam up time up a two days yeah yeah exactly U okay so that seems like it's working which is cool uh maybe not uh what I thought it was working I was wrong every time I save it it moves it further it moves it further over I thought for sure that we were not going to get I thought for sure we were not going to get formatting stuff from this lb info what's going what is going on zero config CL that match the current file type Elixir uh what how can lexical not be attached so oh something happened to my something probably happened to my project I can't mix compile it or something here and it's getting jacked up no okay what did I do chat how did I break it why is this why is this not attaching Le SK is not compatible with airine 270 got it we need to move back to to okay that makes sense I was dumb again I was dumb again and I was dumb again I was trying to use all of the latest Shenanigans I should have just been smarter I should have just been smarter and used 26 and just been just been relaxed right I was I was just trying to test out the other Elixir airlink features but that was just dumb that was just dumb I should have been smarter and not done that that makes sense though I was going against the grain I should not have been going against the grain so hard right like we should have just been chilling and using the normal path we're not enough in a li we're not enough of Elixir Mains yet to be doing crazy stuff like trying to build a project on Elixir 17 doto Dash dev then we I still have the on attachment um I think that's another way that you can do it probably that would also work nicely bot Dre I don't know I have I'm going to double check I thought it would work because um I'm telling I'm telling the server I don't support formatting so I thought that would work but we can also do the um server capabilities method as well I just didn't write anything in my config uh to do that sort of situation there we go now we're seeing things load again that's okay though I I've been meaning to test out 117 it's nice to know that I can install it pretty easily and test it out um cuz I am sort of interested in following along with how things are going in uh in that space and the build the PLT again I don't know that I need to for most of what I'm doing here this will just say yo you haven't used this um we oh we don't have um we don't even have that on yet right now so we need to go back to um you know we can turn this back on and see what happens now probably take a while to do the PLT P but that's fine I don't is there an easy way for me to figure out whether Elixir LS is also trying to format the file I wanted to find out too um what happens when I type thing dot cuz what I want to know is am I going to get multiple of these I do that's pretty annoying the reason that happens is because even though I put this here I don't think capabilities is where I want to put this I want to do um can you say hi to my friend I don't think I can no you switch Airline though pretty sure yeah yeah it will lb27 has some uh really uh promising op ation yeah we'll try it out later I mean I'm sure they'll all support it shortly night are you impressed I didn't I didn't get J baited um create auto commands GG someone tried to debate me but I did not fall for such a thing okay so I want to do client do uh server capabilities Dot and I want to do something like this format document formatting provider is false or something like this right I want to do this kind of thing right to banville exactly nice got him uh let's try and do something like this let's say uh capabilities can I get can I get my I should have a client name beautiful um local uh settings is server servers CLI name right that's what we got here beautiful so what I want to try and do is I want to go instead of having it like this let's try and go server capabilities and then I want to go to whoops not to here capabilities if um settings. server capabilities then and for uh KV in pairs this and do client server capabilities this K is V this is basically um set um we can do override server capabil abilities or servers that's whatever that's basically what we want to do here I'm put this one out at the bottom it's one of the Lesser known ones so then I should be able to do this semantic token provider oh we want to say nil uh is there like Vim nil or something Vim nil right this so I can do yeah we can go um if V equals vm. nil then V equals nil end okay this will let us basically put a nail value here where reason changes details for some of them okay server capabilities so now ooh now hopefully we can go here and then instead of doing this semantic token provider we can yoink this go to Lua LS Lua LS here and go server capabilities is vm. nil I think that should still work which is cool it's been a really long time since I last saw you well welcome styo and then let's take the same idea here and go to um Elixir LS and we'll go here and then instead of saying this will go document formatting provider or something like this right can I go I just saw Vim LSP methods protocol. method methods. document no that's uh it wasn't in methods oh interesting okay I think it should be document formatting provider and I also want to go LSP specification we can just look here document formatting provider yep uh okay so let's go here we these are the ones that we want to override position text documents sync completion provider completion provider I want to just say none I don't I don't know completion provider what happens if I just put nil is it not going to send them I don't know since Command and Conquer wow that has been a long time okay we can try this again uh oh the best way that we can check this is we can comment out lexical for a second and then we can see what what this does I don't remember exactly which way this works so what I want to have is this doesn't this doesn't do anything great and when I type thing dot I don't get anything from my LSP great we uncomment this here we run this again we go to circles we save this file and shortly after lexical is all back we should be getting formatting again I think no okay nice there we go we did nice okay I don't know what's going on now why is that broken uh oh yeah we can check Elixir tools um and see what the config option is for each of these um okay sorry hash ad I used to work here blah blah [Music] blah really so it doesn't override anything in here at all [Music] H let's them all just go and do each one I guess hey night night trade hope you hope you feel better okay what is going on here um capabilities isn't there a way for me to see what the capabil ities are completion provider server capabilities completion provider oh maybe this doesn't work document formatting provider false oh okay nice so let's go let's actually go to here and we'll say false we'll try this okay still hden messenger if you read raw smash that like button yeah exactly that's a classic man Command and Conquer okay sweet so that works that's good lexal is back and then we should be getting thing dot oh what why am I getting two of these though that's the thing so we're clearly still getting multiple completions okay so that's this completion provider okay so I wanted to say completion provider I want to say don't send me anything how can I say don't send me anything the server provides completion support I want to say nothing one progress options just an or just an empty table maybe we can try false it didn't say Boolean though for this one so I don't know we'll try [Music] okay so there we go that looks good great makes anything bullant but isn't that null like it's not it's it's like it could not be there right so this doesn't mean this means it it's nothing thing or it's it's undefined or it's completion options what does it mean when it's undefined I don't know because like for example if you go to document formatting provider it says Boolean or this oh my goodness so basically I could disable a bunch of these other ones right which is which is good not a huge fan of appes I just build it I like it's pretty easy to [Music] build yeah it's my Elixir right yeah yeah that makes sense that makes sense that definitely make sense okay well that works this works pretty good actually I'm surprised I don't get go to definition for this really oh lexical doesn't really like this that's a that's surprising okay so airling error exception protocol undefined air inumerable value ID not exact example thing okay but clearly something works cuz we go there so then should we just should we just try Elixir Alice I don't [Music] know [Music] H oh interesting I don't know well so now I'm not getting a definition at all I'm not getting a definition at all on ID was I getting that last time Elixir all sucks on definitions same problem when you're going to try Lexi Cal so that's super weird never seen this before interesting something weird with type c there I mean we could just try Elixir LS for a while at enforce instead of typ struct enforce feels like a typu I wonder if I don't have this here will this be better oh so something about this enforc true yeah okay well Oh weird it jumps me to two spots I don't like that at all um so we can go oh wait where was I again uh definition provider so I also don't want to do definition provider I just don't I don't want to see anything from that I was talking about alixir LS right I just turned I just turned it off for alixir LS that's so weird I don't know what I don't know what's going on with this though right like maybe be maybe oh that's weird I don't know why I had to compile everything that's suspicious pretty suspicious which which Elixir okay that's good well I don't have it on right now at all let's just give this another chance uh let's also check here which Elixir which airline or which Earl okay good so that's that's good at least just build a mix and test version yeah but this is from lexical I've never had this happen before until just now death module example thing what [Music] [Music] we can try disabling it in this and see what it looks like you need pass variables example thing like the function below no no this this matches it okay so that works that works pretty good I would say I mean it's kind of it's kind of cool to be able to like Mi mix and match the features of these different um LSPs right where I just say like I don't want any definitions from Elixir LS or I do want them from here I don't know so there's I got to figure out maybe which one we can test some of them out too as we going that's totally fine I am a little bit confused I think I will go and do and we'll do mix clean is it clean STS next do deps get deps compile y up K like Lex Co might be better opion that's what I felt as well okay so that seems to be working that seems to be working that seems to be working it's it is truly a shame that this doesn't work though oops that part makes me pretty sad you know [Music] what's circles it's something we're going to make uh it's a photo sharing app for your friends and family it's an antisocial Network I do have typ struct in my mix dependencies yeah it wouldn't build otherwise you know what I'm saying N squared wall Gardens um kind of yeah I mean we'll we'll have to see I don't know exactly where we'll get to for some of it but yeah [Music] yeah it is it is that yeah um [Music] okay I do wish this went a definition okay well that's good I I learned quite a bit about um a bunch of The Elixir stuff here and oh I we we didn't try um Credo I guess I can now try I can now try that I [Music] guess module should have module doc tag cool so we can have we can have Credo we could have crto running now the other question is we said that this should be a string which is lame when is integer thing. ID is no one going to get angry at this there's not going to be anything that's angry about that [Music] oh I should have gone to bed a while ago whoops [Music] what's up Adia good to see you oh very cool Jordan nice vote ban moral that's funny if you if I if it was a type you define some built in would the complaint be different or the same problem I don't know I'm surpris It's not catching it well we'll see we'll see what uh dialyzer says here right yeah it just doesn't it just doesn't care at [Music] all which just just blows me away so it it definitely catches it here right which is something it just it just makes you sad doesn't it wow FY meeting you here at the end of the video just go ahead give it a smash you know wow the like button you can make fun of me in the comments for that one I don't even care cuz you made it to the end of this video thanks everybody see you