hello and welcome to the thinking Elixir podcast where we cover the news of the community and learn from each other my name is Mark Ericson and I'm David bernheisel let's jump into the news first up we're gonna cover a little bit of housekeeping so just want to make sure that you are aware that we are also on YouTube so the episodes that we're recording for the podcast are also being published to a YouTube channel we got a link to that in the show notes it's atrain liid which is my avatar name everywhere and it's just the two of us as Talking Heads so you're not going to get any like diagrams or anything else out of it but if you prefer video and YouTube to just audio then we want to make sure that you are aware of it and we have a link to that and we're also releasing those uh on social media linking to those videos as well it's good to see those facial expressions every once in a while and we're a bit more recognizable when you find us at a conference you know but for the most part yeah you know there's no additional visual aids just lots of hand Expressions all right so you can always find us there if that's your preferred uh stream of content uh our our little Talking Heads will start showing up over there all right well moving on uh uh we we've talked about blue sky before and and Twitter right and I I think our our recent discoveries or or realizations is that blue sky seems to be the place to be now uh especially when we're talking about what was the quote I said it's like blue sky feels like what tech Twitter did back in the day right so if you're looking for Tech cohorts Tech friends that kind of stuff evenly healed kind of folks you know Blue Sky seems to be the place to be it's a tiny bit different from Twitter and one of those differences about blue sky is that there is a concept called starter packs uh which is fantastic especially for folks that are starting to you know uh discover uh blue sky for themselves uh starter packs are just basically like lists Twitter has lists of people too I I never really used them but starter packs are are generally for like I am just now getting onto the platform I don't know who to follow and who you're following and all that kind of stuff kind of informs its algorithms and stuff you do get to choose how content is kind of displayed to you but one of those ways is is just based on who you're following and so well to have any like meaningful content on Blue Sky you kind of have to follow people so that's what starter packs is about so people can publish starter packs to kind of give you a head start on following uh like-minded folks and some of those like-minded folks are are just like elixir developers beam related you know developers that kind of stuff so all right all that is context to understand what a starter pack is and so Peter ol has put together a blog post explaining how to move to Blue Sky and also provides around three different starter packs uh of Elixir and uh beam related you know folks um Mark and I are on some of those lists so you you should find us in some of those starter packs we got a list uh we got a link to Peter ol's blog post Peter Rick's list another Peter's list and Ryan Winchester's uh starter pack like there's lots of them you you'll be able to find them um and so if you hit follow all on that list it's just a onetime thing uh more people will be added to your to your uh to your following list and you know as you learn who they are it's always up to you on whether to unfollow or follow more people yeah and that stuff kind of evolves uh alongside of that I should mention there there's also another kind of Fe feed uh that Noah Betson I think puts together uh this feed is is listening to the fire hose of all content out there on Blue Sky and it uses a Rex on those on the content there to look for certain hashtags uh certain topics that kind of stuff and that feed will also it's it's so it's not person based it's content based is what I'm saying it's inexact cuz who knows you know anybody can kind of get in in there and start saying the words Elixir and stuff like that but it's it's smart it's smartly tuned to be fairly specific uh and fairly accurate so there is that feed as well and we'll have a we'll have a link uh to that fee I'd mentioned before that I had set up a blue sky account way back when the the initial Buzz was around it and then it was just like it was crickets right there was nothing happening over there so I just stopped posting or even visiting and then it's been more recently right that we've been seeing this major uptick I saw recently they passed 15 million users which which is like an incredible crazy hockey stick adoption and with all of this stuff like David I noticed that your account was using your personal domain as your account and I that's something you couldn't do on Twitter and so I looked into that and I was like oh I can do that too and so actually Peter has his own little in in his blog post he details how to do that but it's really easy if you control a domain so you can put in some you know special host text entry on your domain DNS then you can also get your own domain as part of your authenticated handle that's really cool uh so yeah I've done that with the thinking Elixir one too yeah that's uh I I imagine that's uh twofold personalization first of all of course it's always cool have your own personal brand the second one is verification uh so Twitter had a huge issue when musk turn to took over that that blue check mark was so sacred right and it was just it was just originally intended to just say that this is a verified true account we know who they are that meaning kind of went away into whoever wants to pay for it it's it's just not great news for authenticity so you can imagine how some corporations with their own handle uh think news uh organizations like NPR or something so NPR could theoretically if they're they choose to do this much like the fetty verse could do this on Masson but blue sky has their version of it the NPR could create handles for all of their known legit verified you know reporters so you can uh have trust uh that the content that's coming out of that that domain is actually uh them which is nice yeah that's really cool yeah and just just to make it clear on those lists um that we have links to you can just scan through the list and just browse and say oh follow follow follow you can be pick and choose like that or you can just say follow all and then as the content comes in you're like oh I don't really care to see all of their food pictures or you know something like that you can you can totally adjust it as you go but the one thing to to make sure you realize is if you do a followall it's not going to automatically continue to add people to your account as it's added to the list right it's a onetime operation so just to be aware of that so as more people come onto the platform it might be worth revisiting those lists and just seeing Oh who else is on here that's joined recently that I haven't seen yet and I haven't followed so all right well just to recap quickly a lot of Elixir folks are there there's a lot of good Elixir content over there now personally I'm not posting or listening to uh Twitter anymore so if you you want to reach out to me you got to do it through Blue Sky nowadays Andor traditional email which is fine too and uh I suspect that a lot of other folks will end up uh end up on Blue Sky as well just judging from the hockey hockey stick kind of growth a little bit more direct Elixir next up Jose shared a hot take about kubernetes okay so maybe it's not 100% Elixir because this is all about hot kubernetes too but uh what he said and I love this I love this hot take because he wasn't trying to be controversial he's just trying to make a point and you know like anything anytime you say anything on the internet someone's going to have a knee-jerk reaction in the opposite direction no matter what it is so it's just it's fun because I think this is an interesting topic to talk about because it highlights what Elixir and the beam are really good that and some ways that those qualities are overlooked or or not appreciated so what he said was saying you don't need erlang or Elixir because you have kubernetes is like saying you don't need to restart applications you will just shut your whole machine off and on I love that you know because like that's something everyone who's you know has a computer like you you know what that feels like right so I did want to highlight you know I'm quite familiar with kubernetes and it does do great at solving some big problems particularly when you have mixed environments like I've got Ruby and rails on over here in this service I've got an Elixir service I've got a Java service and all that kind of stuff in a one big organization and they want one simple way to manage all of it kubernetes makes that a whole lot easier because you're just kind of abstracting away the pieces putting them into pods and you can control the rollouts and and the DNS for the services to connect with each other it's great at that so it's not saying kubernetes is bad he said said uh some are reading this as kubernetes is unnecessary well you do need something to manage and deploy your servers be it kubernetes or something else it is specifically against the claim that fault tolerance and concurrency in kubernetes replaces all others so that's what I really want to dig into because when you're talking about concurrency it's like you're saying there's a lot of concurrency Primitives and features in these languages like elixir go Java rust whatever it's like saying well I don't need the concurrency in the language because I'm just going to spawn up more pods and nodes and let kubernetes handle it so then it's like if you had a you know single-threaded rails or JavaScript node application right and it's like I'll just get more concurrency by having more instances as opposed to actually having concurrency in the application and so like that that's what he's pushing back against right that people are saying I'm going to let kubernetes solve that problem for me instead of taking advantage of of and using the language itself to do that so the the point that I wanted to make sure people appreciate and understand is that Elixir really gives you the ability for a single process which is the concurrency in the parallel part right like if I have multiple cores I've got parallelism going on it allows for a single process to fail and restart or because of supervisor strategies I can even have whole groups of processes restart properly without without harming my application while it's running that's the kicker right and the kubernetes comparison is to restart the entire application if there was an unhandled error right something crashed it crashes the entire app because it was unhandled restart the whole thing well any other users that are in that server in that that application instance they're going to feel that somehow it's going to impact their experience and the idea with Elixir is like hey I can really narrow that Focus to who's impacted so all the other users that are on my application on my server they don't even know this is happening they don't even know this part of the system has been restarted it's just that whole idea that you know it can self-heal from many types of issues that is like so incredibly cool and you just don't get that at the kubernetes level now still you want something to manage your application to get it deployed to keep it up because you know if you do have catastrophic errors like oh I've lost my database connection the whole app will go down right by default so yes there's still a place for kubernetes it's not to say it's it's worthless it shouldn't be used it's to say use it for what it's good at but don't use that in place of what Elixir gives you with this fine grained uh process control and restart ability the healing and the concurrency that's just so powerful right you know if you want to go a little bit more on that uh the dashit blog has an older blog post from I think 2019 where they talk about kubernetes and the llang VM as orchestration on large scale and small scale views so that's something totally worth checking out all right moving on uh Savvy Cal uh is updating their Phoenix adapter that pairs with inertia JS to 1.0 so it's just a milestone it's worth mentioning because 1.0 is generally you know the signal for stability and uh in case you don't know what inertia JS is inertia JS is a uh is is a a kind of a framework it's a framework of building single page applications in react view whatever you want uh without building that API layer in between that tedious layer in between so in in principle it's kind of attacking that same problem that live VI do just does it more traditionally uh in my opinion with typical react and view Frameworks so so the example is that you can have a user's controller in whatever backend framework uh you're using PHP for example or even uh Phoenix and in this case this is the Phoenix adapter for it so you'd still have your controller there and uh it would still give you uh it would still do the the usual business logic but it has the glue that communicates with uh uh what a nura js on the client side uh can expect so that way you just skip the whole defining all the things three times right my my my back ends my AP and then what it needs to look like so uh savic Cal started and uh contributed and maintains the Phoenix piece of the inertia ecosystem uh and that's the part that is hitting 1.0 so it's currently in beta releases so if you are uh if you are currently using that you should go check out those beta releases there are a couple of breaking changes because this is a major uh version bump uh but it's I I imagine I don't currently use it but I imagine that the breaking changes there are are just the opportunities to clean up the uh the stuff U from uh figuring out things you know just making it work so that's that's 1.0 and that's the Phoenix adapter of inertial JS we got a link in the show notes to go uh check that out and next up gleam version 1.6.0 final was released so last episode we talked about how they had a release candidate so it's now final and published just wanted to hit on some of the the big main sections that were in the change log there's a blog post that goes along with this we have a link to that in the show notes but just some of the big things were context aware errors and this was all credited to being with the static type system being able to get that level of detail and and really good error messages being improved there and then context aware editing hovering added a annotations code action that's part of that uh language server integration I believe then earling compilation Damon I think that's some of the stuff we've seen in the Elixir too where you're running the compilation Damon with the Locking feature so you're not getting you know lock contention for trying to who's all compiling the codebase at the same time and then there's uh variant interface precise dependency updates result handling hints optional dependencies are now in fact optional and optimized bitay there's a number of other things too so congratulations on another release that's exciting all right uh revisiting a little bit of last week's news about live view consolidating the interpolation syntax Okay so just just a reminder we've kind of have two ways to interpolate stuff in heeks templates uh you've got the traditional E1 which is that angle bracket percent equals you know and then whatever you want and then percent right angle bracket to close that's one everyone knows about that one for a long time it's the way it's always been it's the way it's always been yeah and now now we've got the more modern uh uh curly brackets sytax and heeks uh introduced this to the El Elixir ecosystem um uh by by way of uh uh that's how you interpolate uh into like attributes in an HTML is kind of tag right uh and so in heak templates we have a bunch of functional components those functional components the you know the syntax is just to do the HTML like you know syntax the left angle bracket my my module or a DOT function and then all the attributes in there which gets fed into your you know your your Phoenix live component at that point or functional component so uh that's That's the basis right that's that's the starting point and so there there was a bit of of talking in the community it's was just like man I would really love to just have one way of doing doing things uh and and quite honestly the the angle bracket percent stuff is just a little tougher to type uh a little bit more tedious not not that anyone's really complaining or getting killed over this you know but uh but it's a little bit more modern I think nowadays to do the uh the curly brackets and so last week we just said there was a PR open that kind of explores this and asks the question and proves that it could work uh that PR I'm not sure what happen to it but doesn't matter at this point because there's a new PR that actually does it so uh so it looks like we are moving forward with consolidating the interpolation uh syntax in heeks templates bonus points here mix format recently in newer versions of Elixir gain this ability to autocorrect fix they call it D- migrate uh existing code into this new pattern and this is included in that it looks like that's what that's what I'm seeing out of the pr so there is an option in the new in the HTML formatter mix format plugin which is that's Phoenix Live View kind of shifts with that and when you generate a phoenix project it's it kind of scaffolds that for you so you that's that's generally default so if you're using the HTML formatter mix format plug-in you'll see this and I think you're going to gain you're going to gain this ability by default so there is a flag that says migrate eex two curly brackets and it's uh if I recall it correctly uh defaulted to true so all right flashbacks to leaks and all of these other changes that Phenix live view has changed right like I remember all the tedious work that it goes into just updating the the syntax of something to be something you know whatever the new flavor is uh and it's for good reason you know good good reason but nonetheless tedious well it looks like we won't have to deal with that this time around thank goodness so we can let mix uh upgrade to the new syntax for us uh large code bases are probably going to want to like add that to the get ignore list so that one poor person that actually commits that doesn't get blamed for everything but um yeah very happy to see that that's the direction uh that we're going consolidating the syntax easy upgrade path all that sounds like great news to me yeah you know it's interesting talking about mixed format I don't have a good sense of where people have ended up like the adoption within the community are a lot of people like universally using mixed format to format their code because I remember when it first came out uh it was being tweaked right as it was different versions of Elixir would come out the format would be tweaked and change a little bit and there were some people like oh I hate the way it formats this and so sometimes people are just opting to manually format stuff so I'm just curious are you dear listener one of those manual formatters or are you running the the formatter that's built in because you know when you start talking about building in migrations built into this tool like I certainly want that so I would think that that would be a very compelling reason to just adopt the formatting if even if it's not what the 100% the way You' like to tweak your code and next up another live book Improvement has landed thanks to Alex kmos and Jonathan quco so the goal appears to have been to allow vegalite Graphics like that's charts and graphics and things like that can be generated in your live book which is super great but allowing those to be exported in different image formats so the project was previously apparently using an npm library to support that and with this change it's being shifted to a rust nip that actually been merged now it's merged into live book which is very cool so it'll be interesting just to see you know when you go and do your next live book update the compilation of that rust niff might be happening at some point so it might just change the way the update in the the setup of live book works but it should be faster more reliable and I one of the things I think you might benefit from from a developer perspective is avoiding the npm churn that might be otherwise present in some of those libraries and just saying you know we don't really want to be relying on that because we don't have to we can rely on this other way of doing it which is faster more performant and maybe more reliable as well so anyway I just thought that was really neat love seeing continual expanded developments in live book all right remember how we just talked about kumber NES in a bunch all right we're going to go back to deployments a bit so so Parker cber of openen Fame uh shared uh on Twitter that he transitioned uh an application that he uses entirely out of the I don't know who said the cloud but from out from a typical Cloud solution to a self-hosted uh solution and shared some of the benefits so we got a couple of uh links to his tweets that give some details uh but here's some of the stats that he shared he said that uh his new solution is 11% of the total annual cost huge it gives gives him 12 times more CPU 16 times more RAM uh way cool so 10 about 10% of the cost but like 10x more than 10x like the resources you get so uh yes please 0% shared Resources with noisy neighbors those dang neighbors uh I presume this is yeah I presume this is about uh like the the contain the typical containerization right so unshared hosts yeah right runs a bunch of different containers you never know uh where where you are in in relation to that I guess so yeah I guess you can like liken it to an apartment building right all right now the stat is at 100% control over the machine the database and the network which for Parker probably great news for some other folks probably they don't want that well one of the things you say there 100% control means 100% responsibility to yeah that's the but hey that's pretty cool though um it because if when you when you need it you need it and you don't want to be roadblocked by that right yes uh and then finally uh deployment is about four times faster thanks to the Elixir releases without the containerization part of it so all of that and the entire setup and deploy like kind of offs script uh weighs in about 200 lines of code which is pretty darn good uh compare that to about um just ballparking here three trillion lines of kubernetes code um all the all the Amo yes yeah all so many so many anals um so so he shared he even shared that it's it's purpose-built he miss right but he he did share what that deployment script looks like at least a piece of it like the deployment script portion of it yeah right uh and so we got a link uh to that uh screenshot as as well so you can glean what you want out of that but here's the idea is that it's using Docker build X to build you feed in a couple Flags you have an output here uh to your local machine I presume uh and then you rsync that like good old rsync just old school rsync up to where wherever your host is uh so you've got traditional SSH keys I reckon so you you are sync it up there and then you tell your host to this system D go restart my apps that are up there uh and and I'm I'm missing a bit of context here but uh he does say Parker does say that there is a rolling release here so there is no downtime so I'm not sure where that's quite handled I I don't think it's systemd it might might be a layer above I'm not sure but I it does appeal to like my duct tape bubblegum kind of like approach to to Dey things but using modern tools so I like this this like a good intersection of yeah using good tools with the Simplicity of just a machine out in the in the world right so my my only contention is that uh that is the cloud that it's not my machine right that is that's somebody else's machine that's in the cloud just maybe not a big abstraction you know where I I I can't simply s to it yeah so what's interesting to me is feels like this has been part of the whole Trend where there's uh it's kind of seem to be kicked off a lot by dhh David Hanam Hansen Ruby and rails Fame right just kind of pushing back against the the big hosting companies like AWS Azure GCC right because when AWS got started you know you had an ec2 instance and you had that little machine it might be a virtual machine or you might reserve a large full machine but it was very much tied to the machine or the VM and over time it's just become many layers of services and I think there's been a a large push back because of that because the costs are really hard to project when you have all these layers and oh you'll also need this little tool oh you also need this layer and this this service and then you're like how much is this going to cost me and then people are feeling a little bit burned out I think so it feels like this is part of that resistance right that the whole pendulum swing that seems to happen so I think it's interesting right it's a it's an anecdotal point of hey here are some of the types of benefits you can see I still think this is probably in a data center so it's not like self-hosted on Prem right the way lots of systems have been in the past it's still someone else's machine I'm unless you're going and racking it yourself and you have to go in and change the NIT card when it blows and do that yourself right right then unless you're doing that then it's still someone else's machine but it's a different level of the cloud right from what it's become to be today yeah it's one of those fast moving lower lower clouds that you can that you can you can really see instead not those Stratosphere AWS clouds up there you know that uh you planes planes don't I guess planes are over all the clouds right yeah yeah I guess they're all high enough physics okay well hey uh maybe enough deployment stories today but that was pretty cool pretty good uh stats that he that uh Parker shared there and just to kind of connect back to the kubernetes story right like elixir really does have like some great unique abilities that really make this shine this kind of deployment style shine uh if you're not so tied to you know kubernetes styles of deployment and and your cloud provider sometimes like kind of forces you and depending on the solution you choose with them they kind of force you into that like that path you know if you have just a bare metal kind of kind of deployment you know uh Green Field Baseline here then you can really set up all the all of the concurrency all of the distribution stuff uh and just make that work the point Still Remains that deployment maintenance and resilience are key key success factors and all of this kind of stuff so you know take your trade-offs I guess right yeah fly has a incredible developer experience but reliability is not 100% there you know and the if I just want a CLI to like go host me a a phoenix application and I want to pay this much you know like that's a great experience if you know a little bit more around your way of system D and some bare metal you know kind of stuff because you're you've been a developer for 30 years and you've def you've definitely dealt with Linux before like this is going to be more comfortable for you uh and there are good modern intersections of that good all simple time simple in quotation marks here but good all Simple Times uh with modern tooling I guess one point I just also want to make is when you start talking about like these smaller instances or self-controlled Hardware kind of setups that's really going back to LL Lang's history right it was developed to be run on geographically disperate like not actively being maintained little routers that are routing phone calls right commodity Hardware you know it's kind of nerves has kind of grown out of some of that right but it's like these are devices right so you're not being able to just go out and easily maintain this at any given time so resilience was key being able to manage them remotely was important that they're able to self-heal as much as possible so those types of features they really do shine so like when you're saying Hey I want to run my application in a different way some of those other more modern languages Elixir we inherit all of that yeah it's it's more modern than llang was but we are built on it right so it's effectively the same thing but like when you're talking about you know JavaScript python rails anything like that it's just fundamentally they don't have that history they don't have that consideration of why it was built this way and so running your application in some of these other ways I would argue you're even having a better option A better ability better way to do that with ear langang and elixir it's just neat to see it looks like Parker's having a lot of fun with it um we'll see how he ends up going and if he if he sticks with it and last up code beam light in New York just happened and David you were able to go to this one so how was this conference these smaller conferences are really fun because uh they're single track you have an opportunity to get to know more people so how big was this what was it like first of all it's amazing the organizers you know did a a wonderful job uh keeping it casual working and you know Vibes are great Dave Luchia uh Sophie De benedetto did a great job Franchesco was also there from her link Solutions yes highly recommend it's a different feeling from like the bigger Elixir comp and I I know that Cod beam does have larger settings as well this one wasn't one uh this was Cod beam light right but that 60 to 70 people kind of range everyone's in the same room you know you'll eventually get to talk to everybody if if you give everyone the chance um which is which is really cool it's just a different different experience all the way around the conference part of that like the talks I mean it's pretty cool and that I don't have to make a decision where I'm going I just just go you know I just I just show up it's not the whole challenge of like oh there's two that I want to simultaneously be in I can't do both I have to choose yeah you don't have to make that choice yeah you you just go you know you're you're there to be there and you listen and they have this year they had some pretty great talks uh the the cars folks from Cars com Commerce did a wonderful talk on distributed uh tracing uh so they they laid that out very well these talks were not recorded unfortunately so you won't I don't think these will end up being published but but I figure I assume that some of these talks will be given again somewhere else at some other point some some version of that but in particular the cars Commerce guys did a really good job with the distributed tracing gleam had some great representation there to give you an idea of what uh what a full stack like gleam uh web application looks like so front end to back end and by front end I mean like gleam on the front end yes yeah like that front end um and all all the way to the usual you know backends logic and all that kind of stuff so good to put like a real picture and real real code you know in in front of me to understand what this really looks like in this case this was a demonstrating luster so that would that was really cool Paulo Valente was there uh demonstrating oh it's always mind-blowing the kind of stuff that he does uh and I'm going to not do it justice unfortunately but the demo was essentially taking a bunch of NX functions of image filtering IM image convolutions as he called it processing that binary which is bunch of Matrix math for what it's worth uh taking those computations from NX and shipping it to the browser with web assembly uh right so it's it's just processing on the client side uh there's a bit of processing on the backend side as well but not like the image uh part of it necessarily so or maybe it's both I forget now but the ability to do that was just first of all mind-blowing you're compiling web assembly shipping it through live view through a websocket to to the client and then the client's executing that web assembly to like do the convolution on the image and then and then live view is showing all of those you know all of those Transformations like live right there and sending it back you know that's interesting it's a different form of distributed computing right you're letting the client do some of the heavy lifting right uh right so there there was a lot involved there and I'm trying to decouple it from like my own conversations with Paulo because they I I won't I won't spoil it doc yard did have a blog post that Paulo Valente wrote that's isn't necessarily about his demo but it's about like NX sharding so we kind of talked about that last last week or a week or week or two ago that wasn't necessarily demoed here but there was just a lot of really sweet things happening in NX and so this was just another little window of like amazement you know what can happen here uh and then he coupled that with live view which was also really cool there were there were more talks there and and they were all really great and again very simple you wake up you get there you have your coffee you go through a couple of talks you have some breaks you have you have some tacos and then you do do another round of that and then you and then you you have dinner with folks and you're just chatting with people all day right and it's very simple very easy Brooklyn by the way which just where this was hosted this time very cool place uh I saw loads of kids just you know scoot scootering around you know going to school and everything was just in walking distance it it was just another reminder of like this is not about the conference anymore but car culture where I'm at is just like everywhere most of most of America is like you you have to have a car to get anywhere so anytime I go to a big city and I'm just walking everywhere to get somewhere I love it I just love it and got to bring some good shoes yes I bring some good shoes it's cold up there you know Florida boy here uh definitely definitely have to wear a coat but anyway great venue I guess is the point I'm trying to say and uh they did announce they are going to be H having that again uh sometime uh in the same time frame next year uh so they they will be coming back to uh that um not exactly that venue maybe they will but they will be having it again in New York City next year so looking forward to that the cost of the ticket just as a reminder for me I think I got the early bird one was $200 so pretty cheap um most of the cost I reckon is just going to be getting there and staying there but the ticket is probably not going to be the blocker let me put it that way uh definitely highly recommend it and if that's not the the location for you they do have other other styles of this and and not even in the code beam family there there's gig Elixir too and uh there's other uh conferences on the west coast I think code beam usually leads those as well but I think they have some other um smaller ones uh and especially in uh in Europe so anyway all this say Dave Sophie Franchesco you guys did a great job love to be there and I would love to come back it was I thought a great success yes awesome well that's all the time we have for today thank you for listening we hope you'll join us next time on thinking elixir [Music]