Templated GitHub Pages With EEX And External Data Sources - EMx 202
Josep Lluis Giralt D’Lacoste is a software engineer passionate about technology in general. He is the Tech Lead at Eebz. He joins the show with Allen and Adi to talk about his GitHub repository about the summary of his Strava stats. Strava is an American website that tracks physical activity and integrates social network features.
Special Guests:
Josep Lluis Giralt D'Lacoste
Show Notes
Josep Lluis Giralt D’Lacoste is a software engineer passionate about technology in general. He is the Tech Lead at Eebz. He joins the show with Allen and Adi to talk about his GitHub repository about the summary of his Strava stats. Strava is an American website that tracks physical activity and integrates social network features.
Sponsors
- AppSignal
- Developer Book Club starting with Clean Architecture by Robert C. Martin
- Become a Top 1% Dev with a Top End Devs Membership
Links
- The strava summary
- The strava sync elixir script
- Guest github profile, which includes bits of the strava summary
- The strava summary erlang rewrite
- ElixirConf EU
- gilacost - Personal Site
- LinkedIn: Josep Lluis Giralt D'Lacoste
- GitHub: gilacost
Picks
- Adi - Send Adi a message if you're looking for a job
- Allen - L.A. Noire - Rockstar Games
- Allen - Team Bondi - Wikipedia
- Josep - Blasphemous
- Josep - Traveling: Greece and its islands: a must-visit for nomads
- Josep - Programming Phoenix Live View from Sophie de DeBenedetto
Transcript
Allen_Wyma:
So Sasha says, hello everybody, welcome to another episode of Elixir Mix. I'm your host, Alan Wyman. Today I'm with Adi Iyengard.
Adi_Iyengar:
Hello.
Allen_Wyma:
And we have Pep. Sorry, I didn't catch the last name. Pep, why
Josep Lluis Giralt D’Lacoste:
Eh, hi, yes, Pep Giralde de la Costa.
Allen_Wyma:
don't you introduce yourself real quick.
Josep Lluis Giralt D’Lacoste:
I am Spanish, but this surname is French. It's weird because it has an apostrophe. And if you know some French, that's totally weird, because normally you don't have apostrophe between consonants. But it was a... Almenys el meu gran pare em va dir que era un error que algú feia a la registra quan va intentar escriure.
Allen_Wyma:
Yes, and you're you're you're based out of Spain, right?
Josep Lluis Giralt D’Lacoste:
No, I'm in Greece. I'm currently in Greece. I was living, I moved to the UK two years
Allen_Wyma:
Oh yeah, Greece.
Josep Lluis Giralt D’Lacoste:
ago with my girlfriend. My girlfriend is English. And we were living in Clapham in London for two years. But then the landlord decided to kick us out of the flat and we decided to go to Greece to try the digital nomad life. Y estamos en un espacio increíble. Estamos en un... Es divertido, no sé cómo nos llegamos a este lugar. Me encantaría mostrarles, tal vez después. Es una gran villa con siete habitaciones. Y estamos pagando la mitad de la moneda que pagamos en Clapham.
Allen_Wyma:
Okay, now it's starting to come together. You're at such a huge place, that's why you have a Strava account, right? This is what
Josep Lluis Giralt D’Lacoste:
Bé, tinc una strama d'account, no sé per què.
Allen_Wyma:
it's all about.
Josep Lluis Giralt D’Lacoste:
Jo crec que en algun moment em vaig sentir lontanet i volia compartir alguna cosa. I tot el que era més en termes de la socials no m'agradava. I almenys pensava que això aniria a ser útil en algun moment, perquè aquests estats podrien ser útil per mi en algun moment perquè de la salut, coses i coses així. I per això tinc una strama d'account. At the beginning, I was, I mean, I don't like to share stuff, but now that I'm playing with the API, and I realized that it's really bad, the API, I'm enjoying having the account.
Allen_Wyma:
Yeah, I mean, I work with Strava API in the past, and I wasn't very happy. But this was a long time ago. We had this weird issue where, since you work with, have you worked a lot with Strava API, or was it just for this one thing? OK,
Josep Lluis Giralt D’Lacoste:
Just for this one, yes.
Allen_Wyma:
yeah. Yeah, they have something called webhooks. And so every time somebody does a run, so you can register a webhook and say, OK, whenever this guy runs, I want to be notified of his activity. And what happens is that they will ping you with a web hook. And then they say, okay, this guy just did something. And then you, you apply back saying, okay, what did he do? Tell me, what did he do? And then it's supposed to tell you more details about that. Right. But what actually, what happened was they had scaling issues at that time. And so we'd say, what did they do? And then they would say, we don't know. And then crash. So that was kind of my big issue with Strava at the time, but, um, we kind of backed away from Strava. Life has been better.
Josep Lluis Giralt D’Lacoste:
Em fa gaudir que t'ho parli perquè és molt al·lèmida amb com m'agrada, si soc part d'un partit, com m'agrada ser partit. Com ho agraeixo? Aniré a això en una minuta. Normalment, si tens un partit xerradar, o xerradar enginyer, Tu evites totalment la cultura de la defensa de la lluita. En aquest cas, en comptes de posar directament l'activitat que va ser update, algú va fer el mínim i va decidir que la millor approach era just notificar-te que hi havia una nova activitat. I després, és lluita la defensa i et diu que cal saber. Així que això és una mica el que tot el Strava pensa també. Vull mostrar una manera simple de fer una solució interna. Estic escrivint una escripció supersimple, però estic escrivint l'aplicació, l'automa, tot. Encara que acceptis la documentació. És dolent quan això passa, perquè això ha de ser supersimple. Si ets capaç de desenvolupar tot el que ets donant, fa coses més senzilles, però a vegades les persones decideixen fer les coses mínimes. En tiedä, onko se miettinyt.
Allen_Wyma:
Yeah, I
Josep Lluis Giralt D’Lacoste:
No?
Allen_Wyma:
think I understand what you mean. But this is all about your, for once, it's actually not an article, right? Usually we talk about articles. Yours is about your repository
Josep Lluis Giralt D’Lacoste:
Hmm.
Allen_Wyma:
that you use. And it's to kind of update people about kind of who you are, right?
Josep Lluis Giralt D’Lacoste:
Yes. Not everything, a bit.
Allen_Wyma:
So are you, are you like a big, are you a big runner or what's your, what's your sport of activity?
Josep Lluis Giralt D’Lacoste:
Jo m'agrada tot el esport en general. M'agrada l'esport, el tennis, el paletet... M'agrada molt de l'esport. Però 6 mesos abans, vaig tenir alguns episodis d'anxiety i vaig decidir que els atacarien amb el cor. I això és el que he dit en l'article. And I don't know, I enjoyed the process of doing it on a daily basis. And implementing this this skip was like a way to do something that is related to what I'm doing in this process of trying to run away from the anxiety, but at the same time doing something that I love, which is coding. And at the same time, I stopped working for ESL at that time, and I wanted to update my... el meu profil de GitHub. Així que no soc... Bé, vaig ser un ronar, però és una cosa que ha passat en els últims 6 mesos.
Allen_Wyma:
OK, yeah, I know Strava is big for the running community. We were using Strava for that project, which was like, you know how you can say, OK, I'm going to run 10 kilometers for charity, sponsor me? That was basically what we were using Strava for, which is kind of an interesting proposal. But it's a little bit annoying because you had to register for the website, and then you have to register again for Strava account, and then you have to connect your phone. And it was just kind of a hassle, but it was kind of a quick solution to get rolling with because. Yeah, I think a lot of people who do do these kind of running activities are usually more sporty people that usually already have this kind of account. But I think people who do charity stuff probably don't do this kind of stuff. It depends right I mean depends if you're a big charity person and also a big runner but For me, I've never heard Strava before the project and never well it's come up a couple of times but not not too much, but it seems like most people on Strava are actually for running, but you can do other things like cycling. canoeing, I think there's all kinds of activities you can do, hiking, et cetera. But your big thing is still running, right?
Josep Lluis Giralt D’Lacoste:
Yeah, yeah, yeah. He's still running. And I, well, I've also done some biking, but since I moved to Riga, I don't have my bike here with me. But I plan to go back on cycling when I go back to the UK. And talking of running, yesterday when I was preparing myself for today, I did two things. I wanted to update all the activities el 2022, perquè quan era al Reial, d'anys, vaig anar a comprar uns entrenadors i un assistent de xarxa em va dir que podria uploadar la teva gear, la gear que utilitzes per a la rança. I volia tractar-la de manera comú, i vaig dir que potser podria treballar en un date de VW Cup, i això és el que vaig fer ahir. perquè ja era tot en lloc i el token fresc i coses així. I en aquest cas, era bastant fàcil d'implementar. Així que si chequeu la repo ara, hi ha un altre script que explota una bulca d'activitats. I no sé si ho chequeu, però després de escriure l'extrava sync a Elixir, no ho sé, però... I love the beam, it's not something about Elixir. Obviously, Elixir is my default language and I love Elixir and I'm super, super quick and agile and productive with it. But I also love Erlang and Gleam and other languages. So when you told me to do this interview, I was a bit worried because I thought, well, it's like that. a script, but I don't know if there's going to be enough time to go out and do lots of things. So I wanted to implement something, and I don't know if you managed to see this, but I rewrote the script in Erlang. So now, if you look at the repository, there is a GitHub action that is run on Sundays, which is using EEX templates, of course. I després hi ha una altra acció que fa el mateix escrit que he escrit a Erlang, però en aquest cas, com que no hi ha una tècnica construïda com a part del llenguatge, he de fer el moustache per fer el mateix. I em planyo a escriure una altra en clínic, no ho sé, només perquè em fa curiós, no he fet res amb clínic.
Allen_Wyma:
Yeah, OK, I see it now because I was thinking myself, how does this work? Because you need to still like log in, right? So when you run this, that's right, once you have the token, you should be fine. So you need the token and
Josep Lluis Giralt D’Lacoste:
Yeah, but-
Allen_Wyma:
then there's a refresh token that happens.
Josep Lluis Giralt D’Lacoste:
Exacte. El procés és la primera interacció amb el user.
Allen_Wyma:
Yeah.
Josep Lluis Giralt D’Lacoste:
Cal anar al seu workflow, que és anar a un bròser, aconseguir instruccions, acceptar, autoritzar l'aplicació, i, quan l'aplicació és autoritzada, hi ha un token de reflexió produït amb aquests escops que estan donats. I, si has trobat el token refresh, pots sempre lligar el token refresh URL, que et permet generar un nou barrer per a una certa hora que et permet query les activitats. I, si tens el token refresh, pots sempre recomanar un nou barrer.
Adi_Iyengar:
What templating engine are you using Erlang?
Josep Lluis Giralt D’Lacoste:
Mustache. A donar-hi una volta.
Adi_Iyengar:
I'm not even familiar with that, but it's good to know.
Josep Lluis Giralt D’Lacoste:
Yeah, I think it's the most famous one in Erlang, but I'm not sure. To be honest, I'm sure I said I look for template and the first result, that's the one that I picked, or maybe the one that had more knowledge. I don't remember exactly. What I know is that I used it in the past in another project, in a Leakset project. I'm not sure why we decided to use a mustache in that. i no recordo, però ho vaig saber. Així que això també m'ha ajudat a decidir a triar aquesta biblioteca. Si ets interessat, no ho sé, però soc segur que Adi és així, perquè abans d'entrar a la recordació, parlàvem i em sentia que era com mi i curiós. Si ets un elixir, en general, que li agradaria fer-ho. I li agradaria anar-hi i veure com funciona, i com el l'ELIXI és implementat amb Erlang i coses així. Així que sí, sí, us sugereixo visitar-lo i revisar-lo, perquè és interessant.
Adi_Iyengar:
Yeah, it's really cool. I mean, not just for this Strava API, which I've never used, but in general, I created my readme in 2020 when it was newly available. But I haven't updated since then at all. I haven't touched it. But having an action that pulls even GitHub statistics. Some people just showed their own GitHub statistics on their readme. like, and you can go pull LinkedIn information to get your job title, what company you're working at and stuff like that. And yeah, I think I think all that is a great idea. You can use like same methodology to have a GitHub action that queries your LinkedIn queries, GitHub stitches that information. And with Elixir, I mean, especially I'm gonna say Elixir specifically, because the EEX templating, it's so easy to just like create a readme and like dynamically populate any content. Yeah, so yeah, I think that's great. And especially with like, I see that you're using mix install. So keeping it even more lightweight, like using Elixir as a scripting language. So yeah, huge fan of this like idea and this methodology. I'm trying to think of more ways this can be used, not just to update, say like your readme, but say you have multiple apps in an organization rather than talk to each other through an API. And you have another repository, which is like the contract that both the app, the server and client need to comply with. You can have a periodic job that queries the server for the contract, updates swagger docs or the GraphQL schema. And the client always checks the And you can have a GitHub action that updates the contract and just, you know, same EEX templating, right, pulls the schema, how schema's supposed to look, GraphQL or REST or whatever, and populates that contract and refreshes it every
Josep Lluis Giralt D’Lacoste:
I love this.
Adi_Iyengar:
10 minutes. The same, right, the same ideology can be extended for so many things, like the dynamic template with GitHub actions and using Elixir. So yeah, I'm a huge fan of just this idea trying to think of more ways we can leverage it because it's really cool.
Josep Lluis Giralt D’Lacoste:
Sí, m'agradaria el que dius. És també al·lèmina amb el que volia dir abans, que potser la idea és articulada en el millor possible. El més gran problema que tenim en l'industria, almenys a la gent com nosaltres, que estem apassionats, és quan trobem un bloqueig, quan trobem problemes de comunicació i coses així. El millor per resoldre aquestes problemes és per delegar el treball a... a les màquines i a l'automació. I el exemple que dius és fantàstic, perquè, digueu-ho, algú treballa en un equip no cross-functional que depèn d'un altre microservi que ha de fer o updating aquest contracte en un repositori, bé, ho posa en un bon lloc. Automant això és perfecte. because it reduces the communication issues and leaves the blockers. And also, one of the things that I like about the CI, for me, everything is CI first. The reason why is because sometimes I have conflicts when I want to understand how something works and I want to be able to go into a repository and that everything is connected. And if you have something in the CI, in the end, you can just see how things are done. Así que sí, estoy muy feliz de que lo digas, porque no pensé en todas estas posibilidades y ahora está abierto. Muchas ideas, ¿no? Así que sí, lo aprecio.
Adi_Iyengar:
Yeah. Alan, can you think of any applications of this pattern in your daily work life?
Allen_Wyma:
You mean with running like cron jobs, or you mean updating my GitHub? Let's try and figure out which.
Adi_Iyengar:
So the idea here is using a periodic CI and Elixir's templating capabilities to update a file based on template where the variables of the template are pulled using API or whatever through the CI.
Allen_Wyma:
Mm.
Adi_Iyengar:
I just feel like, you know, when you start thinking there's so many use cases, I'm like,
Allen_Wyma:
Yeah.
Adi_Iyengar:
yeah, that's why I thought this block was so cool because it's a very simple use case, updating your readme, but you can extend this to like so many things easily.
Allen_Wyma:
Yeah, I mean, something I did, it's not quite that style. But what I did at one point, I was helping my friend to find clients. And one of the daily things I had to do, so he sells like rare earth minerals from China. And because yeah, I was just trying to, I just started cold emailing people. This was many years ago, right? And one of the things he asked me to do is like, every day I have to check in and pull the latest prices of metal, right? And so at that time, obviously, there was no Elixir. This was like more than 10 years ago, I think. At least not that I knew about. And so I just used Ruby and put it into the login script. And so as soon as I turned on my computer, I would just go to get coffee, come back, and I'd have this CSV full of the pricing data. It was quite nice. I mean, the other thing too is we do do a lot of email calling, kind of code calling over here for my company. And what we've been doing is collecting emails with names and all that stuff and then pass it in. And that could also be something where we could just be sending email templates of just new users that have interest to get some services from us. But specifically for E-X templates and things, on a PRAC job, I can only think about polling latest information. But I would probably rather use Slack for that because everybody that is using Slack, so it just makes sense to just do some kind of daily job. Maybe that would be.
Adi_Iyengar:
Right.
Allen_Wyma:
pull the information in and ping Slack and do that.
Adi_Iyengar:
Right, but I mean, if it'd be useful if that information is displayed in a static HTML, then you can pull that information and update
Allen_Wyma:
Yeah.
Adi_Iyengar:
the HTML as part of the CI action. So like the
Allen_Wyma:
Yeah.
Adi_Iyengar:
same idea as GitHub Readme, if you have a website, you use Jekyll or something, you can update your JSON file periodically based on your LinkedIn. And your website
Allen_Wyma:
Yeah.
Adi_Iyengar:
will be always up to date.
Allen_Wyma:
There was something that was really familiar with this use case, but it's not ringing a bell where I wanted to do something. It's like it doesn't need to do it instantaneously, but once every few hours would have been fine. But it's just not coming to mind because so many more things I have to do nowadays are actually supposed to be instantaneous. Like when I had one client who we wanted to know like what is the value of my portfolio right now and they are all in crypto and you know how that goes. You worked at BlockFi. Is Blackfyre still around? That's
Adi_Iyengar:
No,
Allen_Wyma:
another good question. Yeah.
Adi_Iyengar:
I guess
Allen_Wyma:
So yeah, so you
Adi_Iyengar:
1%
Allen_Wyma:
know, I'm saying this
Adi_Iyengar:
of the
Allen_Wyma:
stuff
Adi_Iyengar:
employees
Allen_Wyma:
can...
Adi_Iyengar:
still have their jobs at BlockFi.
Allen_Wyma:
Okay.
Adi_Iyengar:
I don't know
Allen_Wyma:
Okay.
Adi_Iyengar:
what they're
Allen_Wyma:
Well,
Adi_Iyengar:
doing though.
Allen_Wyma:
but you but you still know I'm talking about like, the market can tank right at any second from who knows what. And so do you need to know how much was your money? How much was your portfolio across everything in US dollar? And also how much
Adi_Iyengar:
Mm-hmm.
Allen_Wyma:
was in each of the currencies at different exchanges,
Adi_Iyengar:
Right.
Allen_Wyma:
etc. Right. But Like I said, because the ticking was nuts, you just had to keep updated with a web socket. That wasn't a big deal.
Adi_Iyengar:
I mean, that's really cool, right? To say, so what you just gave an idea for, people write all these crypto tracking apps, crypto real-time update apps, right? And I see Pep laughing because like he's like, oh, another new idea. But people use LiveB for that, right? Dish LiveB, use a Jekyll site, deploy a Jekyll site that displays data, the CI actions update crypto prizes every five minutes and push the website. You don't need Phoenix LiveB.
Allen_Wyma:
I can argue that five minutes, at least recently, is probably not enough, but I don't know. Or maybe at certain times, right? I guess it's stable and then all of a sudden, just something happens, whether it goes up or down.
Adi_Iyengar:
I feel for most people, five minutes is enough. Most people do crypto stuff. There's some crazy people who do like minute trading, but
Allen_Wyma:
Yeah.
Adi_Iyengar:
I think for most people, five minutes should be enough.
Allen_Wyma:
I don't know if that's going to be enough for people. Just based on because of how volatile the industry is. I just worry that five minutes is not enough. That's just, you know what? Doing Elixir has made me more cautious about anything than anything else. You used to always go with best case and kind of, what do you call it, defensive programming at certain cases. Now I just, I still do kind of best case. And but I think about, OK, do I care about these errors is one thing. And then the next thing is, OK, how can my system recover? Yes, if something bad happened, how can I make sure it's still running but the errors are localized? Something like that. I remember when I worked for that same client, I was like, well, how are we going to know that these trades go through? And they're like, well, we'll just check our portfolio and see if the price went up or down. It's like, that's just. In such a volatile market, I don't think you can verify that. I thought that was a very weird strategy, but that was what the original strategy was and just like, I think that's why they wanted to work with me is because every time they thought about, they thought about something. The first thing in my mind was how can this go wrong? How can we trust this thing?
Adi_Iyengar:
Mm.
Allen_Wyma:
How can we do this in a way that's idempotent? Is that the right way to say it?
Josep Lluis Giralt D’Lacoste:
Yeah, I don't know.
Adi_Iyengar:
Well, depends on what specific part of that you're talking about. Yeah, I mean, that important is same input, same output, right?
Allen_Wyma:
OK, well, how would you describe the method where you would want to be able to, say, send a trade once and only once and just guarantee that it would never happen again? Something like that. I guess that's probably not idempotent,
Adi_Iyengar:
That can
Allen_Wyma:
right?
Adi_Iyengar:
also be item potent in a different
Allen_Wyma:
In a
Adi_Iyengar:
context.
Allen_Wyma:
certain
Adi_Iyengar:
Yeah.
Allen_Wyma:
way.
Adi_Iyengar:
Yeah.
Allen_Wyma:
Yeah.
Adi_Iyengar:
But that's really cool. Just because the crypto is terrible, but the weather API is a common one. You don't need weather to be updated more than a file.
Allen_Wyma:
OK. This is a good one, actually, yeah.
Adi_Iyengar:
Yeah. But it's a common project that elixir engineers do in Phoenix Live View and stuff. You can just cook up a static HTML, use Jekyll to deploy it, and use PEP script to update that every five minutes. Boom. auto- automatically updating website that updates weather every five minutes anyway I'm just
Josep Lluis Giralt D’Lacoste:
Bye!
Adi_Iyengar:
gonna go down this route I'm gonna shut up
Allen_Wyma:
Well, I can think of every six months or every once a year thing, which is like, for me, over here, we have public holidays where you actually, federally, or nationally, or whatever, call it off, as opposed to US. You don't have this kind of protection. To run that would be nice where once a year, which is update, like on Google, is my office closed or not? Also, let me know what's the thing, what's the days off. And also, I have quite a few clients that also want to know, are you guys working this day or that day? Because most of them are overseas. So that would be something to run. Or even on a custom basis, if I had a new client, to just add them to some workflow, and then maybe once a week or maybe the very next day or the very same day to run that job, and then every year, just run it for everybody who's on the list.
Josep Lluis Giralt D’Lacoste:
Bé, jo també he implementat el workflow amb l'opció de despatx del workflow. Aleshores, tu pots tenir el temps de l'esquedulatge per al treball, però també pots fer-ho sempre, si vols. És molt bo per a testar, especialment quan tu has totes les workflows. No sé, también quería decirte algo que hice ayer, porque cuando fui... Mi primer proceso de hacer esto, no quería ir a la API, quería hacerlo con... Bueno, intentando escrapar el profil público. Mi primer proceso fue con Flog. Because if you see examples there about how to gather data from websites, the first thing that you see is Floki. And I thought that that was the best option. But I'm sorry, Strava, lots of stuff. I don't know if it was jQuery. I don't know. I don't know what is it.
Adi_Iyengar:
Yeah,
Josep Lluis Giralt D’Lacoste:
But it...
Adi_Iyengar:
most websites, it doesn't work, the flow
Josep Lluis Giralt D’Lacoste:
Yeah.
Adi_Iyengar:
key method. I mean, I know for a fact, for Angular websites, it will not work, because it has a weird dynamic loads and stuff. Actually, flow key also will not work for PedalStack if you're using Alpine. It also won't work then. So yeah, I mean, yeah. Glad that you went the API route. It's so much better.
Josep Lluis Giralt D’Lacoste:
Yeah, but I'm going back to this is how I operate. I mean, first I tried to approach the problem going like trying to find the fastest option, make it work. Let's try to make it work. So the API was the quickest. But then after a while, after doing the bulk edit that I implemented yesterday, I also wanted to gather some stuff that Strava produces, which are trophies. Cada mes, hi pots adonar-se de les xarxes. I diuen que volen adonar-se de la climb de 2.000 metres, per exemple. I si fan diverses runs i tenen un ascens acumulat de 2.000 metres, hi ha la trofe. Aquesta trofe és una imatge. Però l'Strava API no ofereix un punt final que et permet agafar les trofes. I was like, hey, I would like to put this also in the GitHub
Adi_Iyengar:
Gotcha.
Josep Lluis Giralt D’Lacoste:
because it would be cool to show the challenges that I complete. And in the end, this is not about sharing anymore. I don't want people to see the challenges. I just wanted to achieve the objective of being able to share them, the technical complexities of implementing this. So yesterday I said, I need to go back to. a la publicitat, com puc fer això? A part de l'editorial de Bulk, el que vaig fer és forcar Wallaby. No sé si ho coneixes, però és un llibre de de facto per a l'estudi de browser. He intentat utilitzar-lo per a escrapar. Així que vaig tenir el meu compte bloquejat a Instagram perquè d'això. He aconseguit escrapar-lo. public profile and logging into my profile. At the beginning it was impossible because there were some JavaScript errors that were happening and if any error in the j.js is produced, it stops, it raises an exception and it stops. So that's why I decided to... per forcar-ho, vaig clonar el repositori i vaig rebre el rellotge per un logger i això va ser tot. Aleshores vaig aconseguir escapar del web. I va ser molt interessant. No puc anar més enllà perquè per a agafar les imatges de les trophies i així on. Però hi ha una altra cosa. una altra cosa a explorar. Ara que he pogut enxampar i així on, vaig a esperar uns dies i potser he intentat extreure el cookie i adreçar-lo a la a la sessió Wallaby, així que he pogut escrapar aquests imatges. Sí,
Adi_Iyengar:
Gotcha.
Josep Lluis Giralt D’Lacoste:
sí, va ser molt bé.
Adi_Iyengar:
Nice.
Josep Lluis Giralt D’Lacoste:
I i crec que és una cosa que es pot utilitzar per molts casos d'ús de l'ús d'una altra manera. Vull dir, només utilitzar Wallaby,
Adi_Iyengar:
Yeah.
Josep Lluis Giralt D’Lacoste:
perquè crec que tothom ho utilitza només per per a bròsecs.
Adi_Iyengar:
Yeah, I have given it four tries over the course of last few years. It never seems to work properly. It always breaks consistently, like randomly stuff break in CI. And it remains broken for weeks before it's fixed. I mean,
Josep Lluis Giralt D’Lacoste:
I then I'm going to write an article.
Adi_Iyengar:
I appreciate the fact that it's fixed.
Josep Lluis Giralt D’Lacoste:
Because I managed to solve the problems quite quickly, because I did before when I was in ESL implementing, I was trying to do a course. And I managed to put it up together, and this time was super quick. I mean, I use Nix for the configuration of my machine,
Adi_Iyengar:
Hmm.
Josep Lluis Giralt D’Lacoste:
and the Chrome driver that I had installed. no va marcar amb la propera persona de Chrome. Aleshores, el que vaig fer al final era downloadar aquesta binària de driver de Chrome que va marcar amb la meva brossa d'instal·lació i això és tot. És especial.
Adi_Iyengar:
The problem is not, I don't think it's like one specific problem, right? Like the things, even if it works for some time, it breaks and it remains broken. It takes a while for them to put in fixes. I just, I think, you know, they have like Selenium, you have Cypress, which is really good. Capybara, Ruby, very close to Elixir. I feel like with those options, you know, generally gravitated towards that. However, I do want to mention this, if you're scraping, If you want to go the hard route, hard working route, like you're doing it the right way, you want to do for a side project, you want to use Elixir, go Wallaby. But for people listening, there's like several tools that will scrape for you for free. There's something called Simple Scraper. It's a Chrome extension. You literally open a page, click on what you have to notice, hit Enter, it will expose a page as an API. It's ridiculous. It's crazy. There's something called Hexamatic if you have to sign in and store sessions in a secure way that allows you to do I think it's like two bucks a month or something. So it's really cool like a Year ago, I would be not even mentioning this but having worked in like a venture-backed startup where everything needs to be done in a day like that I figured I'd mentioned like these tools to people like it's it's so useful and nine times out of ten it'd be like better than something you cook up on your own, right? Like a well-tested tool, a scraping tool, even a free one would be better than, you know, what you would write on your own, at least the first version, right? So.
Josep Lluis Giralt D’Lacoste:
I am a la presó i m'he donat unes imatges. I, per cert, en un entorn professional, quan has de fer el que has de fer, és fantàstic. La raó de la qual vaig decidir fer-ho amb Wallaby és, com has dit, perquè volia saber exactament què era possible.
Adi_Iyengar:
learning.
Josep Lluis Giralt D’Lacoste:
amb una feina i vaig intentar fer un test per al producte perquè calien escrapar i tal. Així que també vaig intentar-ho aprendre. I va ser molt bé. I també, la bona cosa de això és que és tècnic, no? Però al final si vols aprendre el ritme en la gitHub Action això ho farà possible. Um, yeah.
Adi_Iyengar:
Totally.
Allen_Wyma:
Cool, I think we're running a little bit out of time. We started a little bit late, but I don't know. Is there any, there's no questions on my side, but Adi, is there anything else you wanted to?
Adi_Iyengar:
said I have a hard stop in six months so
Allen_Wyma:
Yeah,
Adi_Iyengar:
sorry
Allen_Wyma:
that's
Adi_Iyengar:
about
Allen_Wyma:
why.
Adi_Iyengar:
this pep like yeah
Josep Lluis Giralt D’Lacoste:
Don't worry, I'm alright.
Adi_Iyengar:
this is fun wish we could go longer but
Allen_Wyma:
Okay.
Josep Lluis Giralt D’Lacoste:
Eh...
Allen_Wyma:
And with that,
Josep Lluis Giralt D’Lacoste:
Well, I'd like to write you at some point, Adi, and maybe talk about the book.
Allen_Wyma:
is there something that you wanted to say?
Josep Lluis Giralt D’Lacoste:
I didn't mention my picks, but I'm looking forward to read your book.
Adi_Iyengar:
We'll get in touch. get in touch for sure.
Josep Lluis Giralt D’Lacoste:
Hmm.
Allen_Wyma:
We're all looking for Audi's book. He mentioned this a while back, but we're waiting for it. I did see it on Amazon. It's on my wish list, or my shopping list, sorry, because my shopping list is private.
Adi_Iyengar:
Appreciate it, Al.
Allen_Wyma:
Yeah.
Josep Lluis Giralt D’Lacoste:
Buy it, buy it.
Adi_Iyengar:
I'm just
Allen_Wyma:
But
Adi_Iyengar:
a little disappointed in pre-order it.
Allen_Wyma:
I was told we're going to get a copy
Josep Lluis Giralt D’Lacoste:
Ah
Allen_Wyma:
as friends, but we'll see.
Adi_Iyengar:
Yeah, friends will get a free copy for sure. I'm not looking to make profit out of the book, so yeah.
Allen_Wyma:
Well, I'll sell it. Just make sure you're autograph a couple of copies for me. And I'll sell it.
Adi_Iyengar:
I don't think it will hold much value unfortunately, you might have to wait 10 years hopefully
Allen_Wyma:
Yeah, that's
Adi_Iyengar:
then it
Allen_Wyma:
that's
Adi_Iyengar:
might.
Allen_Wyma:
that's what people say about a lot of things and then you'd be surprised. All this stuff. That's why hoarders somebody's orders are super rich, I think, if they looked at some of the junk that they have. But yeah, let's just have a transition over to pics. I just sent you running low on time. How about we just kick it over to you first?
Adi_Iyengar:
Is it
Allen_Wyma:
Yep,
Adi_Iyengar:
me?
Allen_Wyma:
you're the only
Adi_Iyengar:
Sorry.
Allen_Wyma:
audio I know. Yeah,
Adi_Iyengar:
No,
Allen_Wyma:
maybe in a second.
Adi_Iyengar:
I lost audio for a second just when
Allen_Wyma:
OK.
Adi_Iyengar:
he said the name. So I guess a quick pick about jobs. I do want to acknowledge the fact that I did not respond to 28 people on time who reached out to me for jobs. I have gone through them, responded to 25 of them. Only three people are left. Last couple of months have been hard for me professionally. I mentioned I've changed my jobs and a few things going on in my life. That's why I could not respond on time. But yeah, apologies for the delay, especially when I said that reach out to me if you're looking for jobs. But I'm going to say it again now. Hit me up if you're looking for a job. I just started working at the score. It's an amazing place to work. I have been there for three weeks now. And I'm going to say it again. The best production app of that scale that I've seen, and I look certain now, the only one that was better was one that I built myself in a startup, because it was better in my eyes, right? I'm definitely biased. But yeah, it's a great place. Everyone's awesome. The environment is very positive, learning friendly. They focus on that. So if anyone wants... You know, if he's looking for an engineering position at the score using elixir pedal stack live, you know, that stuff hit me up and I'll I'll put you in as a, you know, in the reference pipeline or whatever that is. But yeah, I think that's that's all I have for for a pic today.
Allen_Wyma:
Okay, sounds good. So Pep, I'll go first, but Pep, I think we didn't, you already know that we need to have picks, right? I think you were
Josep Lluis Giralt D’Lacoste:
Yeah.
Allen_Wyma:
told in the email. Okay, let me just do mine first and then we'll end with you. The last is the best, I hope, right? So as I mentioned from my last pick, right, I picked the Steam Deck. I've been crazy about the Steam Deck recently. I've been playing nearly every day, maybe too much. I think I feel a little bit bad for playing so much. So I just want to pick a game called LA Noire. I don't know if anybody's played that one here. Exactly, yeah.
Adi_Iyengar:
That's a classic.
Allen_Wyma:
I was playing, yeah. So I feel bad for picking this because it is like over 20 years old now. It's 22. Sorry, it's over 10, 12 years old, I think. It came out 2010.
Adi_Iyengar:
They remastered it like seven years ago, though. But
Allen_Wyma:
Yeah,
Adi_Iyengar:
yeah.
Allen_Wyma:
but it's still around 10 years. Um, I just started because I don't really play video games. Total workout, the steam deck. All right. So, uh, I like it because it's like, you don't really die, right? But it's kind of like you're playing in a movie and, uh, my favorite is how you go from zero to like a hundred when you choose either doubt or lie, which is. Insane. So if it's a game, it has a lot of, I don't, I haven't seen any nudity yet, but I heard it does have some, um, and it definitely
Adi_Iyengar:
Oitas.
Allen_Wyma:
has a lot of swearing. and crazy stuff in it. So if that stuff that you don't like, it might not be for you. But if you're not opposed to some adult kind of content, and I think it's a fantastic game, and the technology, how they did it, it's really interesting too. So that's
Adi_Iyengar:
They're
Allen_Wyma:
my
Adi_Iyengar:
listening
Allen_Wyma:
pick.
Adi_Iyengar:
to fucking Elixir Mix. I'm sure they don't mind a little bit
Allen_Wyma:
Yeah,
Adi_Iyengar:
of swearing. But
Allen_Wyma:
but.
Adi_Iyengar:
yeah, oh, Alan, that's a great pick. Plus one to that. It's made by Rockstar Games, the GTA
Allen_Wyma:
Yeah.
Adi_Iyengar:
guys. And it's.
Allen_Wyma:
Actually, it's made by Team Bondi and Rockstar published it so they could
Adi_Iyengar:
Gotcha.
Allen_Wyma:
think they put in the money. But I think they also did some stuff because like the driving elements just like Rockstar kind of GTA style. But yeah, if you're also interested to another, I guess potential pick could be just look up Team Bondi and kind of their history. They're a whole mess, right? That's why people are probably wondering why there's never any other R2 or whatever. Well, that's because the company that made the game is just a complete mess. But anyways, that's another story. Pep, your turn.
Josep Lluis Giralt D’Lacoste:
Yeah, I didn't think about any things that had to do with the video games, but now listening to you guys, I couldn't avoid thinking. I don't know why I remember Max Payne. I don't know why, but then I was thinking I really like platform indie games. I talked before about Plasfemus with Adi, a really good game, a Spanish game, by the way. And also, you're going to love about this, but Guacamayle 2 was special. És també una plataforma indie i jo he gaudit. Si vols fer platforms i vols compartir i jugar amb els teus amics, és una game molt bona. Però els meus tòpics, els meus pics, no tenen res a veure amb... Bé, hi ha un que té a veure amb la tecnologia, però el primer és sobre Grècia. Els últims tres mesos he estat a Grècia i si ets un nomad digital... you have the possibility to work remotely. I invite you to come to this country. It's a fantastic country. When I landed here, I realized that there were more than 3000 islands that you can visit. And each island has like a random fact that it's fantastic, you know? For example, one time I was in Aegean, and when I was there, because I always try to go there and not know what to do. Just sit into a coffee place close to the port, and then... i vam decidir què fer. Quan arribem a Eixina, vam realitzar que era el primer productor en termes de qualitat de pistes de tot el món. I he visitat ja tres isles. Planteo visitar una altra just abans de tornar a l'UK. Però en cada una d'aquestes isles hi havia un facte similar a aquesta. Així que m'adreço a visitar la Conca. He tingut una altra cosa, que és una cosa que començava a fer aquí, que també recomano, que és un cicle de vida que em segueixo, que és al·lèmina amb l'estrabat. Ranyo en una base d'higiene 8 km. També treballo molt, i ho faig per 3 setmanes. Aquestes 3 setmanes també faig calbats, i després... La següent setmana, faig el fasting. Em sembla que soc en el millor moment de la meva vida. Ho intento dir perquè sé que m'agrada la tecnologia i molts moments estic molt atrapat per intentar escriure càrrecs que em puc esqueixre de les coses. I m'encouraje a tothom a intentar fer aquestes coses perquè si balanceixes aquestes coses, en quatre o cinc hores et pots donar molt més. Així m'encouraje a tothom And the last thing is Programming Life View. I've been reading, it's been taking me a lot to read this book because I'm trying to read it thoroughly and try to implement everything with detail. But I'm really enjoying the Programming Life View from Sophie de Benedetto and I recommend it to everyone. And yeah, that's it. Thanks for having me.
Allen_Wyma:
Awesome. It's good to have you on and hopefully have you back on in the future. Maybe I'll discover something else. Another way to update our GitHub profiles because we just need
Josep Lluis Giralt D’Lacoste:
I'm also trying to write a book myself.
Allen_Wyma:
more ways to update that right.
Josep Lluis Giralt D’Lacoste:
So maybe if I manage to pull the proposal off, we can talk about that in the future.
Allen_Wyma:
Sounds good. OK, and then we'll catch you guys next time.
Josep Lluis Giralt D’Lacoste:
Bye.
Allen_Wyma:
Cool.
Templated GitHub Pages With EEX And External Data Sources - EMx 202
0:00
Playback Speed: