WEBVTT

00:00:00.000 --> 00:00:08.400
So previously, the URL structure was like metacast.app slash podcast slash then the mambo jumbo 70 characters of incomprehensible junk.

00:00:09.359 --> 00:00:14.640
That's a globally unique ID that we have in the URL that identifies the episode.

00:00:15.119 --> 00:00:16.559
means nothing to her.

00:00:19.679 --> 00:00:28.367
Hello, this is Metacast's Behind the Scenes podcast, and I'm your host, Tilly Bezilev. And I'm Arnab Deca. We are co-founders of Metacast, a podcast app like...

00:00:28.608 --> 00:00:38.991
No Other, the podcast app that helps you turn podcasts into knowledge. In this podcast, we talk about how we build the app and the challenges we face and the successes we achieve and all that goes.

00:00:39.103 --> 00:00:43.887
in between and if you're not listening to this episode in metacast

00:00:44.128 --> 00:00:57.456
download it and listen to it there and you'll see the difference right away. You will be surprised if you're using some other app in a positive way. It's almost guaranteed, I think. Otherwise, why would we be working on this?

00:00:57.887 --> 00:01:12.591
so we used i think the format for this podcast we used to usually start with like a segment on what have we changed recently in the app what have we introduced and then we have like a focus part of the episode and then we go with our recommendations

00:01:12.896 --> 00:01:18.287
I think we have changed that recently. This is more like a maintenance kind of announcement.

00:01:18.495 --> 00:01:29.552
We have weekly updates for what we're working on, what are the things we're delivering and the challenges. So you can find those same episodes in this podcast, but we're not going to talk about all that in this episode.

00:01:29.951 --> 00:01:44.111
Actually, let's talk a little bit about that thing, because we never actually discussed that. So we've done three weekly updates at this point. So basically what happens is every Tuesday, you and I meet together for usually about two hours, sometimes longer.

00:01:44.447 --> 00:01:55.632
And we basically discuss everything that we need to discuss. And we do code pairing sessions. Sometimes we do some operational things together. Basically, whatever needs to be done, we do it in those couple of hours.

00:01:55.808 --> 00:02:02.191
And the rest of the week is we basically work on our own except for like PR reviews and stuff. We don't talk.

00:02:02.591 --> 00:02:08.207
Right, yeah, except if we need to talk urgently, like if we need to do some pairing together.

00:02:08.448 --> 00:02:21.551
Like LLM bots from episode 67. Go listen to that if you want to hear one of those conversations. Oh my god, that thing is still ongoing. But anyway, so we had this idea. Why don't we record stand-up?

00:02:21.695 --> 00:02:35.024
After 10 minutes, no longer than 10 minutes, every week of what we worked on last week, what we're working on next week. And it sort of follows the Scrum methodology in a way, right? So like, I don't know what you worked on, I don't know what you're working on next.

00:02:35.360 --> 00:02:46.192
Well, I guess we don't discuss the blockers. We can discuss them, but we don't have a separate section for that. So what have been your experience recording this? How do you feel about publishing those episodes?

00:02:46.367 --> 00:02:58.960
well first of all it's super quick because we do set a timer and make sure we get done in like 10 minutes and i wasn't sure in the beginning how they'll turn out but now that i've listened to two or three of them

00:02:59.135 --> 00:03:08.687
First of all, you publish it almost immediately. We record it and you do maybe very minor edits. I almost find like by the end of the day it's out.

00:03:08.864 --> 00:03:16.175
so it's super quick unlike these episodes where for example we're recording today on may 7th this will maybe come out in about a week

00:03:16.415 --> 00:03:29.711
and the second thing i found them very fun in a way both to record and to listen to i don't know about other listeners give us feedback if you don't think they're fun but i've been enjoying them both recording and listening

00:03:29.888 --> 00:03:43.888
i think part of what makes them fun is the timer especially when you start to run out of time and start to rush to meet the time constraint it's kind of fun i also like listening to them they are very light but also very structured because we do plan basically every single thing that we want to talk about

00:03:43.872 --> 00:03:48.560
a few minutes before we talked about that so it goes really well, it's all structured.

00:03:48.831 --> 00:03:59.120
and we don't veer off on tangents usually. And like you said, basically we finish the recording, I download the files, I edit them in Descript very quickly and publish them right away.

00:03:59.295 --> 00:04:09.743
because we don't do any of those custom episode covers, there are no show notes, no chapters, none of that, right? All of that is generated automatically. It takes me maybe an hour to do the whole thing, maybe even last

00:04:10.048 --> 00:04:24.399
Usually the next day I also listen to it again in Metacast and I usually enjoy the flow of how it goes. What I like about that is we are able to be transparent with our users and also they are very short, right? It's not difficult to find 10 minutes to listen to those episodes.

00:04:24.576 --> 00:04:34.000
And some users on Reddit, God bless them, they've been asking us for many things. And I think that kind of transparency gives us

00:04:34.016 --> 00:04:48.271
an avenue to give them an insight into what we're working on, why we are working on this, what challenges we face. We talked about the upgrade hell that we had and stuff like that, right? That they wouldn't know about unless we actually told them about that.

00:04:48.639 --> 00:04:58.959
And ultimately, coming back to our Amazon roots, earn trust from customers by telling them exactly what is going on behind the scenes, in front of the scenes.

00:04:59.168 --> 00:05:13.839
So you can find those episodes in the same podcast feed. I think every one of them is max 11 minutes, but they're usually less than 10 minutes. They're pretty quick. And we won't be doing those kind of app updates in these longer episodes anymore.

00:05:14.175 --> 00:05:22.447
So in that spirit of like, I think keeping to our topic and being bound to time, what are we going to talk about today?

00:05:22.815 --> 00:05:27.632
So we have just launched a bunch of things under the same umbrella.

00:05:27.839 --> 00:05:34.351
We've made sharing of podcasts and episodes a lot easier from the app.

00:05:34.495 --> 00:05:48.848
And yeah, we'll talk about basically the whole thing. What is the actual experience that we have launched? So you will basically gain an insight into our product design thinking. And then we will talk about kind of the problem, why we did this, what even prompted us to do that.

00:05:49.247 --> 00:05:52.656
And we also talked about some of the technical details that went in there.

00:05:52.992 --> 00:06:00.016
so yeah we'll try to stick to this one topic And I think this started with, people may remember that we had Jenny working with us

00:06:00.160 --> 00:06:10.288
from 2023 till 2024, almost the end of it. She was working with us and then there's an episode about it if you want to go hear more details. She's still one of our beta testers.

00:06:10.463 --> 00:06:21.423
And so we were showing her the new URLs and how they work. And she asked, hey, you should talk about this. And you should even maybe do a blog post about why you're doing this and all that. So I guess this is the start of it.

00:06:21.600 --> 00:06:30.704
Yeah. And this whole project was so complicated, I think, because of just so many different things that we had to change across different systems and all that. Yeah.

00:06:31.007 --> 00:06:39.824
And we knew for the last six months or so that at some point we want to improve all this sharing and all that. There were lots of weirdnesses. We'll talk about it in a little bit.

00:06:40.031 --> 00:06:51.983
But we never, I think, had the focus or priority to go fix it. And I think because we had to change a lot of other things anyway in the website, we were like, okay, let's just go do this right now.

00:06:52.447 --> 00:07:07.279
So if the user on Reddit, you slash, I don't know, Spongebob4677 listens to this and he's like, why the hell are you working on new sharing experience if what you should be working on is, I don't know, importing private RSS feed?

00:07:07.456 --> 00:07:15.343
or sorting the podcast or whatever is more important for them. How do you respond to this? Why do we choose to work on this, not on that?

00:07:15.839 --> 00:07:25.360
so i think part of what drives you and me and this has been true from day one is that we like using the app a lot

00:07:25.600 --> 00:07:37.519
We didn't have a better replacement for the experience we were going for, so we decided to build it. And I think over the last few months, I don't know about you, I have been feeling that the sharing experience is broken.

00:07:37.728 --> 00:07:45.040
I think I told you a few weeks ago that I once opened a metacast URL in my browser.

00:07:45.312 --> 00:07:49.903
From that point on iOS will not open deep links in my app anymore.

00:07:50.144 --> 00:08:00.463
And I didn't know why. I did some research and eventually I figured out, oh, I have to uninstall the app and reinstall it again. And then iOS learned. But that's like, you can't expect a user to do all that.

00:08:00.672 --> 00:08:14.384
Then there are other problems too. We'll go into it a little bit more. We depend on people discovering the app and finding out about it. And the way that people find out about it is SEO, Google search and all that.

00:08:14.624 --> 00:08:25.040
And so we needed to improve some stuff in there. So I would say that's why we prioritized it because it was broken and we ourselves could not live with it anymore.

00:08:25.471 --> 00:08:37.392
Yeah, I 100% agree with what you said. I would also add some detail to the discoverability side. So while doing this project, we actually started to add more plugs for people to install the app when they land on our website.

00:08:37.696 --> 00:08:49.744
i did see like sometimes like i would share a podcast and there are no likes on the post there are no comments but there are like 70 opens of that link to people from my telegram channel or from linkedin click the link they land on the website

00:08:49.792 --> 00:08:54.192
How do we capture those users? Obviously, it doesn't help the user who wants

00:08:54.240 --> 00:09:08.751
to import their private feeds or sort the podcasts. But in a way, it's a virtual cycle where the more people discover the app, the more people land in the app, the more viable this becomes as a business, the more we are able to invest in actually building new features and not shut down.

00:09:08.960 --> 00:09:15.279
and i think if we were making like let's say sustainable amount of money if we could have like a third developer

00:09:15.360 --> 00:09:32.495
no questions that third developer would right now be working independently on the private podcast feature which is like our biggest requested feature right now but now that all of the new ux for sharing is done new urls is done I think I can go back to that starting Monday.

00:09:32.927 --> 00:09:35.888
So what is the new experience for sharing?

00:09:36.192 --> 00:09:48.240
In the app you can share a podcast or an episode by just going to the info and tapping the share link and it shares. Previously it would give you the name of the podcast or the name of the episode and the link.

00:09:48.447 --> 00:09:56.655
So now we've changed this. It only gives you the URL. We removed all of the other additional stuff. But the URL structure has changed.

00:09:56.864 --> 00:10:11.248
so previously the url structure was like metacast.app slash podcast slash then the mumbo jumbo 70 characters of incomprehensible junk technical detail that's a globally unique id that we have in the url that identifies the episode

00:10:11.488 --> 00:10:23.312
Which means nothing to a human being. And some podcasts use URLs as good. So you basically get this like semi-readable junk for some other podcast. It's junk regardless. It's not readable, not useful.

00:10:23.615 --> 00:10:27.504
that's what was happening is like you have this link and you want to send it to somebody and you're like

00:10:27.648 --> 00:10:41.967
So what is this link for again? It's like YouTube links, right? YouTube links are meaningless. You have to open the link to actually see what's in there. So right now our URLs are looking actually very good. It looks like metacast.app slash podcast and then there's like a sluggify.

00:10:42.111 --> 00:10:52.912
Basically, podcast name in lowercase and then the episode name in lowercase with some special IDs in there. It's a technical detail. But basically, by looking at the link, you can tell exactly what that link is for.

00:10:52.991 --> 00:10:57.648
if you listen to that podcast. Even if somebody sends you a link, you can still guess what it is for.

00:10:57.792 --> 00:11:10.768
You know exactly what podcast and what episode you're talking about. Yeah. If it says Joe Rogan Experience, you know it's Joe Rogan Experience. And then it probably says the name of the guest. And you can decide if you want to open it or not, right? It gives you more kind of freedom there.

00:11:10.943 --> 00:11:15.823
That is probably the simplest of all things that we've done for this project, changing those links.

00:11:16.000 --> 00:11:29.008
Well, no, no, I wouldn't say that simple at all, because we had to introduce these short IDs in place of the long guides, and that was a massive project on its own. I think we've done it on the web app maybe like two months ago.

00:11:29.024 --> 00:11:34.511
i kind of forgot of all the pain because there are a lot of like backfields and all the stuff that you had to do to make it happen that's right

00:11:34.751 --> 00:11:46.864
So the other thing, if you share a segment from a transcript, so if you swipe right to left on the transcript, you can actually copy the text and it also gives you a link. So that link will also be the new format.

00:11:46.975 --> 00:11:57.936
and it also has a start at parameter. If you click that link, it will open the app. You will get dropped at the timestamp that you opened it from. To summarize, you now only get a URL.

00:11:58.432 --> 00:12:05.264
It's shorter than before and that URL has all the context you would need before you open up the URL.

00:12:05.567 --> 00:12:17.327
Right, and it also can be a deep link. Well, we have this before, but now it's even more meaningful, I think. So previously, if you tap that link, let's say from messages or from WhatsApp or from notes, it would open the app for you if the app is installed.

00:12:17.631 --> 00:12:26.159
It has some challenges, so we changed it. So right now, if you tap this link on a mobile phone, it will always open the web page.

00:12:26.272 --> 00:12:32.720
for that episode or that podcast in your browser. Like Safari on iOS or Chrome or whatever on Android, yeah.

00:12:32.927 --> 00:12:45.488
right yeah and in there there is a big open in metacast button the reason why you would want to actually use the browser because some people asked us to like get access to the full transcript for technical reasons mostly it's just

00:12:45.696 --> 00:12:56.847
hard to do on a mobile app. At least right now it's going to be a distraction for us. It's not hard but we haven't prioritized because we want to work on more user requested features like sorting and private podcast and all that

00:12:56.960 --> 00:13:09.840
Right, so we were telling people like just open the link in the browser and then you can get access to the entire transcript more easily and it's actually probably more convenient than in the web app because you also have all of the browser sort of search tools at your disposal. You can copy it.

00:13:09.855 --> 00:13:24.399
elsewhere like put it in the chat GPT do whatever you want the transcript actually couple of users told us recently right so now what they're doing is they're sharing it opening in the browser copying the transcript and then using chat GPT with that to like do things

00:13:24.864 --> 00:13:39.279
Right. But now, there is also a big Open in Metacast button that if you want to, you can tap on that button and it takes you back to the app. So that's especially helpful if somebody shared a link with you and it opens in the browser, you look at the episode, if you want to play it, you tap Open in App.

00:13:39.392 --> 00:13:54.159
So tell me about this open in Metacast button. How does it work if I'm on a mobile phone versus if I'm on a desktop, if I have the app installed or not installed? Here is where Arnab's genius comes in. That idea that you had, we'll get to that in a second.

00:13:54.399 --> 00:13:57.679
If you have the app and you tap that button, it opens the app for you.

00:13:57.919 --> 00:14:01.840
If you don't have the app, it shows you a page

00:14:01.855 --> 00:14:16.272
that has links to Google Play Store and Apple App Store where you can download the app. Then you come back to that page and you can again tap that open in Metacast button and it opens it for you in the app that you now installed. But this part was so sucky in our previous experience, right? Because...

00:14:16.416 --> 00:14:26.384
we just had the open in metacast link like there was a metacast link in there but it used to just take you to the home page because the home page has those big like install buttons

00:14:26.495 --> 00:14:35.535
But after that, you wouldn't probably remember to come back to this page and open it again and all that. And you would never be able to actually open it from Safari because Safari would never open the apps links.

00:14:36.032 --> 00:14:47.792
But on the desktop, let's say somebody sent you a link, you're in your computer, in Slack, and it opens in your Chrome or Safari or Internet Explorer. If you click on that Open in Metacast button, it knows that you're on the desktop.

00:14:48.000 --> 00:14:55.279
And it shows your QR code that you can scan. And then the same thing happens for mobile. If you have the app installed, it opens the app for you.

00:14:55.392 --> 00:15:05.360
for that episode it even respects the start ad so it will even open the specific timestamp for you if this link includes the start ad parameter and if you don't have the app it will show you the download link

00:15:05.600 --> 00:15:13.327
So that QR code, because that idea came from you, right? So I believe you had seen something similar somewhere else.

00:15:13.663 --> 00:15:27.312
Yeah, I think it was a banking app that in the error page of the app, it's a webpage that says, oh, you have to open this in the mobile app. And I think we got the idea from there that we should totally do this.

00:15:27.711 --> 00:15:33.936
Yeah, and that's what we've done. It works like a charm. We actually tried to make QR code in brand colors.

00:15:34.176 --> 00:15:42.000
but they were not always readable with glare, so we made them high contrast, so it's lesson learned. We had to do some extra change there. But yeah, that works really perfectly.

00:15:42.080 --> 00:15:55.663
So the other thing that works really really well with the new experience because we only share the link. If you are on the Apple ecosystem and you do airdrop from your phone to your computer, the computer just opens the webpage for you automatically.

00:15:55.807 --> 00:16:02.543
So previously, I think it would send you a text file and you would have to open the text file and remove the text file. It was not very helpful.

00:16:02.879 --> 00:16:14.384
Just generally, like when you share iOS, you share just a URL, it fetches the metadata, like open graph data and all of some technical stuff behind the scenes about the URL.

00:16:14.559 --> 00:16:23.984
and shows you all of that. So it makes the experience much nicer on iOS. On Android, actually, I use it for testing, right? It's been very nice too.

00:16:24.255 --> 00:16:32.240
Yeah, and I think some of those apps like WhatsApp, for example, it's the same on both iOS and Android. It would fetch the image, it would fetch the title and all of that.

00:16:32.543 --> 00:16:44.847
I think iMessage is probably the winner here because they actually allow you to even play right in iMessage. I don't know who would do that, to be honest, because why would they play an hour-long episode in iMessage? And also, it doesn't send the users to us.

00:16:44.799 --> 00:16:51.600
unless you tap the button but it's a nice touch and we didn't have to do anything for it it happened automatically which was kind of surprising

00:16:51.967 --> 00:17:01.231
The other thing that is sort of tangentially related, we've optimized our image processing pipelines, so now we compressed images, we also reduced call start.

00:17:01.408 --> 00:17:12.720
I'm going to technical details but basically images are faster and smaller now and what this means is when you share a link on social media or in the messenger previously the image sometimes timed out

00:17:12.799 --> 00:17:25.423
because we weren't able to provide, let's say, WhatsApp the image in a couple of seconds that it needs. And now it's near instant. It's a side effect of another project that we've done for optimization. And also we will, I think, backport this to the mobile app as well.

00:17:25.728 --> 00:17:35.728
So the images in the mobile app is a little closer now. Yeah, that's already in our code. That change is already in our code. It'll be probably in the 1.2 release.

00:17:36.192 --> 00:17:39.536
yeah 1.20 so that's the new experience

00:17:39.743 --> 00:17:49.711
And I think, Ilya, we should put a side-by-side comparison of the two URLs in the blog post maybe that you're going to write anyway. I think we should call it writing the episode cover.

00:17:49.824 --> 00:18:01.488
Maybe in the episode cover, yeah, from this to this, yeah. And we've talked about like some of the benefits, like, yeah, it's more compact, but yet more like meaningful, good for SEO.

00:18:01.663 --> 00:18:13.008
but i think we also found a few really weird problems with the way we were doing urls and that's the part i mentioned like it was completely broken and we had to fix it

00:18:13.183 --> 00:18:25.711
I guess we can talk about our problems separately because I think we had different problems. The problem that I had was that, first of all, if I shared a link from the app and I put it into my notes and I want to open it in the browser to see the transcript, I tap that link.

00:18:25.920 --> 00:18:30.127
it always opens in the app. It's impossible to tap the link and not open it in the app.

00:18:30.367 --> 00:18:39.632
Except, if you go to Safari on the iPhone, you paste that link right into the browser URL bar, then it opens in the browser.

00:18:39.743 --> 00:18:49.872
But then there is no way you can actually launch the app from there. Because here's how it works for both iOS and Android. You associate a domain and a certain path on that domain with your app.

00:18:50.048 --> 00:19:01.327
So let's say metacast.app domain is associated with the Metacast app. And also like slash podcast I think is a path that we associated. So whenever you tap that link that has this path, it always opens in the app.

00:19:01.695 --> 00:19:13.104
But Apple is smart. If you actually paste this link in the browser and you start using the website in the browser, to prevent you from going back and forth between the app and the browser, it opens all the links in the browser.

00:19:13.215 --> 00:19:18.991
So let's say if I open the podcast page and it has a bunch of links to the episodes. So those links will not open in the app, they will open in the browser.

00:19:19.071 --> 00:19:32.048
So I think that makes sense. I remember back in the day Amazon would jump back and forth between Safari and the Amazon app and it was so annoying. And you could never know what would happen. It was unpredictable. I think Apple made it more predictable. But it made it easier in some way and harder in some other ways.

00:19:32.384 --> 00:19:38.607
And I think another related problem here we found is, so for example from the previous version of the app,

00:19:39.008 --> 00:19:49.711
If you shared a podcast. Now it would copy the name of the podcast and the URL. And you go put that in your notes. Like you mentioned. If you tap that in the notes app.

00:19:49.983 --> 00:20:08.816
it would open it in the app you cannot open it in the browser so naturally what you would do is you would depress that and say open in browser which is great now it opens in browser But what it also does is it tells iOS that I always want to open this in the browser and never in the app again.

00:20:09.119 --> 00:20:21.488
And I somehow, maybe a few weeks ago, I did this, I must have done this and none of the deep links were ever working for me again. We could not figure out what the heck is going on.

00:20:21.632 --> 00:20:33.968
and then i did a lot of research and found out that oh this is probably ios learning that it should open these links in the browser not in the app even though we have like the app association and all that

00:20:34.240 --> 00:20:40.400
What you have to do is uninstall the app and reinstall it again and that tells iOS that okay open it in the app again.

00:20:40.640 --> 00:20:50.000
But no sane user should have to go through this. So we wanted like a clear way of always opening it in the web app and always being able to open it in the app.

00:20:50.304 --> 00:21:00.144
Yeah, and those links are notoriously hard to troubleshoot. It's not the first time we had issues with those links. And it's not the first time we spent probably like hours just chasing the wrong thing.

00:21:00.319 --> 00:21:11.951
yeah and once remember we had to actually file a support ticket with apple when we were first trying to launch this feature six months ago maybe the universal links

00:21:12.192 --> 00:21:20.432
and they had to have a support engineer work with us to figure out how to see all this metadata and all that. So yeah, it was really complicated.

00:21:20.640 --> 00:21:35.056
And it's not just an Apple problem. We had another big problem on Android. How this works for both Android and iOS is in our website, like metacast.app. We have a special file for iOS and a special file for Android.

00:21:35.263 --> 00:21:44.304
that tells that these paths or these URLs should be open in the app and here is sort of like the ID of the app we provide that.

00:21:44.607 --> 00:21:59.215
and correspondingly the app has to be installed on the device and the app also has to say like oh if i get urls of this kind of pattern for this domain open it in the app so it's kind of like a two-way handshake if that works then it opens inside the app

00:21:59.392 --> 00:22:11.951
And that worked for iOS and some Android phones. Recently, what we found out is some Android devices, including my test device, which is a Samsung Galaxy from about a few years ago.

00:22:12.448 --> 00:22:17.903
It always tries to open all metacast.app links inside the app.

00:22:18.367 --> 00:22:37.584
for example if somebody shared you like a metacast blog post the pricing page or the FAQ and you tap that on your Android phone it'll open it inside the app and then the app is like huh like i don't know what a blog post url is and it'll throw you like a error screen

00:22:38.016 --> 00:22:51.471
And we have a lot of people telling us in Reddit as well as emails that the OPML import thing is not working in our app because the OPML import feature is not there. It's just a link to a web page inside the settings.

00:22:51.776 --> 00:23:03.983
We have to figure out like okay there's just no sane way of doing this. Our idea of separating it out so that we can reliably always open URLs in the browser versus in the app will handle this bug also.

00:23:04.319 --> 00:23:15.183
So what was the technical solution that we've done to... We separated out metacast.app from open.metacast.app as a subdomain.

00:23:15.423 --> 00:23:26.127
And now links for open.metacast.app will reliably open in the app if you have the app installed. And metacast.app links will always open in the browser.

00:23:26.559 --> 00:23:40.688
Yeah, so basically we separated those concerns entirely. So the open.metacast.app, there is no content on that website. And basically it's just this shim to open links in the app through that open metacast button, right?

00:23:40.895 --> 00:23:54.415
And the cool thing here, if users click on that link on their mobile phone and the app is installed, then actually the request is never sent to the site, it just always opens the app. But if the request is sent to the site, then we just redirect it to a special page that has a QR code.

00:23:54.624 --> 00:24:06.480
And instructions on how to install the app and then open that same URL again in the app. Right. And the trick there is that on the metacast.app where we have the podcast and episode pages,

00:24:06.592 --> 00:24:17.968
that link the opening metacast app it's a separate domain that's why it's able to trigger that flow where it takes you actually out of the website right because if it was in the same domain then it wouldn't work

00:24:18.271 --> 00:24:28.528
So we had to split it. I think we saw this used in other apps that do it in separate domain. I think Spotify has opened up Spotify. I think you're right. I think Spotify might be doing this, yeah.

00:24:29.023 --> 00:24:43.023
cool cool so yeah that avoids the all the wonkiness bizarreness and along with that we basically produce much better urls that also help with our discovery of the app itself so the win-win all around

00:24:43.296 --> 00:24:47.536
Yeah, it's been a pretty significant change. I think that touched basically all of our systems.

00:24:47.903 --> 00:24:59.152
I think we also had to do quite a bit of rework, at least initially I had to do quite a bit of rework when I was doing the original implementation of those URLs. Yeah, but I think now it's stable and it works and it's really good.

00:24:59.392 --> 00:25:18.672
yeah and i would say like for the amount of complexity that this was starting from figuring out how to provide like short ids that are unique enough but are short enough and provide these nice urls to now like basically we've completed a long arc of work

00:25:19.008 --> 00:25:29.519
that needed to be done at some point anyway, but makes the whole experience much better. One thing I would say, little bit of a retrospective I guess on this.

00:25:29.824 --> 00:25:40.943
Is in Amazon this kind of a project? Just imagine how long it would take you to launch this kind of a project. It would take you longer to plan than the time you took to launch.

00:25:41.215 --> 00:25:43.183
Yeah.

00:25:43.423 --> 00:25:56.751
And we have the benefit of being pretty small still. So we were like, okay, shit breaks, shit breaks. Like we figured out some same steps of like, this is the order we'll launch things in and that should work.

00:25:57.087 --> 00:26:07.791
Thankfully, it's been a day now and it is working. There were two places this could go wrong. The first place is when we introduced those URLs

00:26:08.000 --> 00:26:16.112
We had to backfill everything, so we had like 2 million plus records in our database that we had to update. So we had to write special scripts, special functions to do that.

00:26:16.256 --> 00:26:26.000
If you made a mistake there, we could have corrupted some of our data. That itself, there was a sequence of launching that because not only do you have to backfill,

00:26:26.079 --> 00:26:36.496
you have to ensure that things that are getting updated while you're running the backfill also have this attribute it doesn't overwrite or like change it or something like that.

00:26:36.607 --> 00:26:39.440
Right, and also I think because when we update the data,

00:26:39.423 --> 00:26:52.624
It triggers some other changes. I think we had to temporarily disable some of those extra updates so that we don't trigger a bunch of 2 million other updates going on at the same time. I think we had to temporarily change that. Also, we had to actually rebuild our BigQuery

00:26:52.544 --> 00:27:03.183
tables for analytics because here's the interesting interdependence thing. We had a challenge with our BigQuery going out of proportion because of some of the decisions we made and we kind of undid those decisions.

00:27:03.327 --> 00:27:10.031
But our database was just humongous. It was like 10 or 20 times larger than it was supposed to be in terms of its size and also the cost.

00:27:10.144 --> 00:27:19.599
So we use that opportunity of backfilling the short ideas and changing the analytics schema to drop a couple of tables, like the biggest tables, and redo them. It kind of triggers a bunch of

00:27:19.743 --> 00:27:28.655
Now that I think about this, this was actually a massive project. Like you said, if it was Amazon, it would be like maybe no more than three or four people working on this. But they would be working on this for like six months.

00:27:28.864 --> 00:27:40.271
Oh, at least six months. I would say this is more like a year-long project. I think because there were lots of risks in it too. Yeah, I would say we started working on this in like March, maybe February. I mean, and we can only work on this.

00:27:40.703 --> 00:27:54.384
I know we started working on this at the end of February because mid-February is when we discovered that, oh my god, every time we run an analytics query, it's costing us a dollar. Oh, right. Yes. Exactly.

00:27:54.816 --> 00:28:05.327
The second place where it could have gone wrong is updating the mobile app because once you ship it to Apple and Google, even if you create a new version like the next day to fix the bug, there will still be users

00:28:05.407 --> 00:28:10.384
who got the wrong version and didn't update the new ones and the real people for whom it's broken.

00:28:10.559 --> 00:28:22.223
and there is no way for us to message those users that they need to upgrade or something. On that one I would say we did cut a few corners and we said fine if it is broken for like a day or two for

00:28:22.304 --> 00:28:35.951
existing users that's okay but the solution we ended up with is not broken but if it was broken for a day or two we would have been okay with that which is a risk that a big company will not take basically Right, yeah.

00:28:36.192 --> 00:28:44.559
Alright, so this was an almost single topic episode. I think it was about 1.2 topics because we had this discussion about the weekly updates.

00:28:44.703 --> 00:28:49.231
which we will not have next time. And what's the preview of our next episode? I don't know.

00:28:49.344 --> 00:29:03.440
Yeah, so along with this, we have also been fighting with LLM bots. Ilya, actually, can you tell us how many requests we got yesterday, just over one day? Oh my god, 2 million requests.

00:29:03.776 --> 00:29:08.943
And one million of those requests came from just one bot disguising itself as a browser.

00:29:09.152 --> 00:29:17.104
Yeah, so we are getting an insane number of like LLM-ish bot requests on our website. We don't want to disable.

00:29:17.311 --> 00:29:31.023
just outright because we are seeing some benefits i think a couple of weeks ago i shared on linkedin and maybe blue sky that if you ask perplexity like what are the best podcast apps with transcripts metacast is number one

00:29:31.392 --> 00:29:34.672
Of course. Replexing your nose and stuff.

00:29:35.008 --> 00:29:51.023
so we don't want to outright disable these things but it does cost a lot because these pages like the podcast pages and episode pages they're dynamic pages There's dynamic information coming from the database, so we had to do a lot of work on caching and all of that over the last few weeks.

00:29:51.359 --> 00:29:52.720
While doing all this,

00:29:52.991 --> 00:30:06.288
This is the topic of the next episode. We'll talk about why we also decided to bring in. We had some ideas of like someday in the future we'll do a redesign with new logos and colors and all in the website and a minimal one in the app.

00:30:06.432 --> 00:30:21.263
we decided to bite that bullet and do all of this together in one bundle that released what yesterday like tuesday may 6 And as soon as Apple and Google reviews the next 1.19 version, it'll be live in the app also.

00:30:21.407 --> 00:30:25.200
By the time this episode comes out, you will see the new logo, the new app icon.

00:30:25.311 --> 00:30:37.615
oh my god i'm terrified of people complaining about the app icon it's because it is very different it is very different yeah we'll see but we are a small company so we are okay with breaking stuff moving fast let's see

00:30:37.759 --> 00:30:44.528
Yeah, we'll talk about the rebrand, right? What kicked off that rebrand and why we decided to do it right now versus later?

00:30:44.703 --> 00:30:48.784
in the next episode. Yeah, and hopefully we actually get Mark

00:30:48.799 --> 00:30:55.951
who is a friend of mine who actually did this work for us on a pro bono basis, which is really cool. The design and the logo and all of that.

00:30:55.968 --> 00:31:09.935
Yeah, we'll see if we can get him to join the podcast and actually talk about this. Because when he and I talked about the new logo, I mean, you will see it is like this metacast in double braces, right? It's so simple. It's incredibly simple. And there are no fancy graphics. There is just so much.

00:31:10.175 --> 00:31:25.968
thought that goes in there so much insight yeah so I really want Mark to talk about that not us so we'll hopefully get him on the call and i think you and i we are both like on our own we would not have done a project like rebrand we would not have prioritized it

00:31:26.208 --> 00:31:34.384
Two things led to it. One, we had to do caching and massively change how the website works anyway because of the LLM bot.

00:31:34.816 --> 00:31:41.551
And two, Mark sent us those designs. You shared it with me and we were like sold. Yeah, okay.

00:31:41.759 --> 00:31:51.536
At least the logo and the colors, let's do it immediately. Because I don't know if listeners will agree, if you don't send us your feedback, but we thought it was very catchy, unique.

00:31:51.776 --> 00:31:58.511
and it helps build brand kind of recognition even at our small scale like immediately.

00:31:58.751 --> 00:32:10.640
Right, yeah. The thing that I found really interesting, it's a bit of an aside. When I was working on the website previously or on the app on some of the things that require design, I would be like, you know, moving pixels around.

00:32:10.751 --> 00:32:14.288
agonizing over margins and all that right like colors the font size is

00:32:14.528 --> 00:32:22.703
So now I just have the Figma file. All I had to do was copy from the Figma file. Basically redo the visual into the actual thing in React.

00:32:22.847 --> 00:32:35.152
so much easier i felt like the proverbial code monkey that takes the spec and just like copies it and it felt so liberating because also i wasn't feeling super well like physically and mentally also so i didn't have to think

00:32:35.488 --> 00:32:44.943
Did you use Figma as the dev tools now where you can just copy the code? No. So I tried it with Flutter once or twice too.

00:32:45.215 --> 00:32:55.279
It generates stuff that looks like that design but the code is not what I would write like in a million years with my hands.

00:32:55.423 --> 00:33:00.528
it's just bizarre way of like too much verbosity too much duplication of stuff so

00:33:00.640 --> 00:33:15.119
I decided to, like, I would take it from Figma, like, generate it with the Flutter code that does, but then basically just take that as an inspiration and rewrite the whole thing. Here, there was nothing special. I just had to arrange pixels in the right way, but I used ChatGPT Extensive, and I'm like, so I have this grid.

00:33:15.296 --> 00:33:26.192
It needs to be 2x4. Give me the skeleton, right? And then it gives me the skeleton because of all the Tailwind classes. And then I just refactor what it gave me. So I do use ChatGPG extensively, but not Figma stuff.

00:33:26.271 --> 00:33:30.832
all right so let's wrap this up with our traditional recommendations for what we are

00:33:30.976 --> 00:33:35.824
By the way, we're also doing this in a weekly podcast, right? We recommend just one episode each.

00:33:35.935 --> 00:33:46.736
But on these larger episodes, we take a little bit more freedom and we can actually go for another 10 minutes probably about this. So Arnav, what are your things that you've been listening to, reading, watching recently?

00:33:46.943 --> 00:33:51.215
We're not going to talk about the weekly episodes in depth.

00:33:51.359 --> 00:34:09.295
in this episode but we started with that and we went for a good like five minutes in there I think so I wouldn't rehash all of that But I would say I am really enjoying those quick 10-minute weekly updates on what we are working on, what the problems we are facing, and also what we are delivering.

00:34:09.311 --> 00:34:23.856
especially the must be within 30 seconds one recommendation per week segment you mean you're listening to our own episodes that's what i think yeah and i'm enjoying that don't you find this therapeutic because i do

00:34:24.224 --> 00:34:37.903
and i think it might be fun maybe like three months down the line just picking up one of those episodes and like playing it to see what were we doing like five months ago on this week yeah so those episodes if you haven't heard them give it a listen

00:34:38.047 --> 00:34:49.552
they won't take more than 10 minutes. And if you use like our speed controls, you can maximize it to like, I don't know, 2x and cut it to like 5 minutes. So yeah. Is that all?

00:34:50.112 --> 00:35:03.728
yeah okay okay yeah i mean i have a lot more things because like remember we had this episode i think it was 7.5 where we ended up talking about sandman and other things for like an hour we made it a different name

00:35:03.903 --> 00:35:16.751
We had to break it out in a separate episode. I think it was 7.5 because it was like one extra hour. It was like a bonus episode that we accidentally recorded. For our listeners, let me try to recap this and then you help Ilya.

00:35:16.927 --> 00:35:30.704
So in the beginning of this podcast, we were very much focused on like these are the topics we're going to talk about. But over the first few episodes, what we noticed is we were kind of all over the place rambling around topics and all that.

00:35:30.880 --> 00:35:44.719
and we liked that flow when we were listening to it we liked it so we decided to like kind of double down on it so then by that time we were sitting down to record episode 7 which is a very focused theme of like we're going to talk about x y and z

00:35:44.864 --> 00:35:58.032
We ended up like talking an hour and a half about like Sandman comics and movies and stuff like that. And so we were like, it's not fair to like launch this and all these other topics.

00:35:58.175 --> 00:36:07.248
Mecha 7.5. We have a name for it. I'm forgetting what the name of the episode is. It was like Bono Saud or something. We were playing with those names.

00:36:07.552 --> 00:36:18.255
I'm going to launch into a long list of recommendations now and you contribute because I think some of that is inspired by you for sure. So I have finally watched Lord of the Rings and The Hobbit.

00:36:18.400 --> 00:36:31.664
Both trilogies. So six movies total with my son. If it wasn't for my son, I wouldn't have watched this. By the time this episode comes out, he will have turned 13. So we watched Star Wars together, we watched Harry Potter together, and then we watched Lord of the Rings.

00:36:31.936 --> 00:36:40.016
And surprisingly, I actually enjoyed it so much. I remember when it came out 20 years ago. I was watching in my early 20s. Everybody was watching A Lord of the Rings.

00:36:40.351 --> 00:36:46.800
I thought fantasy was for kids, and I was just like, why would I watch this? Except with Harry Potter, I didn't watch Harry Potter until last year.

00:36:46.784 --> 00:37:01.519
And I also didn't watch Star Wars until last year, or maybe until 2023. But now with my son, we sat down, we watched it, and we were like, oh my god, this movie is actually very good. And my son is now a big fan of Orlando Bloom, so we are going to watch the Pirates of the Caribbean too now. Right. On that topic...

00:37:01.664 --> 00:37:04.463
I'm not a super big fan of Star Wars.

00:37:04.639 --> 00:37:17.168
Because by the time I watched the episodes 1, 2, 3, which came out later, they were very cheesy, I think, in my opinion. And I watched them first because of the chronological order.

00:37:17.440 --> 00:37:27.728
so i'm not a super big fan of star wars but i did watch and or season one recently really liked it it's more about politics and character building and all that loved it

00:37:28.000 --> 00:37:43.152
season two just started i haven't liked it as much because it's more it feels more like the star wars like pew pew tie fighters and all that just going around more actiony than politics and intrigue But let's see where the season goes.

00:37:43.519 --> 00:37:56.112
So I've been listening to a lot of quote-unquote podcasts in Telegram channels. It's just for people who live in their American islands on that side of the world. In the Russian-speaking world, Telegram is

00:37:56.320 --> 00:37:59.056
extremely popular. It's probably the main social media right now.

00:37:59.135 --> 00:38:08.784
people still use instagram but instagram is banned in the country so a lot of like professional discussions and content heavy discussions they happen in telegram so telegram has channels and i've been given access to a private channel

00:38:08.831 --> 00:38:14.320
It's actually like a course that somebody charges for and she gives it to me so I can access that channel.

00:38:14.431 --> 00:38:21.487
And she just records 20-30 minute long audio notes and sends them to that Telegram channel. So it's essentially like a podcast.

00:38:21.568 --> 00:38:36.079
but in a sort of different technical implementation, right? Instead of an RSS feed and a podcast app, you have it in the Telegram channel. So imagine like a WhatsApp chat and you have like 30 minute long messages in there. And just imagine how painful it is. I know you build something like this.

00:38:36.128 --> 00:38:48.688
earlier have you talked to her about like because telegram has bots you could write a bot that extracts those messages and creates a podcast like RSS feed and publishes it as a public feed.

00:38:48.864 --> 00:38:59.599
So if everybody is in Telegram anyway, why would you do that? And the thing is, when you talk to people who are in Russia and never lived in the States or elsewhere, when you say podcast, they actually think YouTube videos.

00:38:59.936 --> 00:39:07.152
Some of those countries, and I think it's probably common somewhere else too, they skipped bank checks, for example. Bank checks were never, I think, in Russia.

00:39:07.295 --> 00:39:15.760
I think in the same way, like audio podcasting somehow just never caught up and then it went straight to video. And there are actually very few podcasts compared to the States.

00:39:15.871 --> 00:39:26.384
But they are very highly produced and all of that. So it's very centralized. And I was wondering actually if this is similar to the culture where everything is centralized. Back from the Soviet times and probably even before that.

00:39:26.559 --> 00:39:39.599
but i have to imagine that in telegram like you can't go back to those messages or you can't find out what they're talking about before listening to it or after all of the problems that we've tried to solve with metacast

00:39:39.840 --> 00:39:48.271
You can't even scrub the message easily. And also, when you are playing with your car, for example, you can't pause the message. You have to actually take the phone to pause the message.

00:39:48.224 --> 00:40:01.007
it's so painful and the thing is like usually what i would do if these are the messages between like me and other people i would just save it to voice notes in apple and i would listen from there but this is a private channel so it doesn't allow saving the messages so you can only listen from there

00:40:00.992 --> 00:40:10.096
and I'm like, wow, this is just so, so bad. But to your point, it would have been actually cool if a bot could pick this up, put it into a hosting service

00:40:10.112 --> 00:40:16.367
that can manage permissions. So people can access that only if they paid for the course, for example, or paid for access for this.

00:40:16.608 --> 00:40:19.856
Yeah, that experience really sucks but the content is a good time listening to this.

00:40:19.967 --> 00:40:24.751
i guess last thing i'll mention i've been listening to a lot of folding in reverse it's a band that

00:40:24.704 --> 00:40:35.215
you've not heard of based on your facial expression. They have seven and a half million listeners on Spotify, so it's pretty big. I first heard them in Florida. They were opening for Avenged Sevenfold in Palm Beach.

00:40:35.391 --> 00:40:41.807
Usually, you know, when the opening act plays, I usually don't pay attention, right? Because usually those bands aren't so famous and whatever. But this one, I was like,

00:40:41.887 --> 00:40:56.047
Huh, I have to go closer to the stage. So I went to the stage. Actually, I didn't even know who was playing. And I had to look them up. Since then, we've been listening to some of their songs on repeat. So the song is like Popular Monster, Voices in My Head, and Watch the World Burn. So they kind of combine the pop.

00:40:56.192 --> 00:41:09.264
the metalcore and rap. Listen to voices in my head. You'll get what I mean. It's a bit of rap, a bit of pop, sort of catchy hook during the chorus. And then he goes into this metalcore screaming thing.

00:41:09.536 --> 00:41:19.344
so talking about music discovery i'll mention this i think a few episodes back on this podcast in our recommendations i talked about this netflix show called chaos

00:41:19.648 --> 00:41:28.239
KAOS. This is a modern retelling of the Greek mythology like Zeus and all of that and like what's happening.

00:41:28.543 --> 00:41:38.096
super fun show like Jeff Goldbaum plays Zeus in it and it's a really really good like one season show they didn't renew it and that's Netflix But anyway.

00:41:38.208 --> 00:41:46.735
so they had a song that was really catchy and so i listened to that song i added it then later on i listened to this KEX

00:41:46.751 --> 00:41:59.440
which is like a indie kind of music very well known now channel in Seattle and San Francisco now so I listened to that there I found another one of their songs I didn't relate that it's the same band

00:41:59.615 --> 00:42:13.231
but I added this song also to my list and kind of like repeat listening once in a while. The theme of their kind of music is bass guitar riffs which I really like with strong female vocal.

00:42:13.536 --> 00:42:19.215
And I tend to like that kind of music. Then two days ago I was listening to another song.

00:42:19.360 --> 00:42:29.391
And I really like that song. And I was listening to it on repeat and my daughter said, hey, this is like really famous on TikTok. And I'm like, oh, I didn't know that. Let me go look up.

00:42:29.568 --> 00:42:39.599
Turns out all these three songs over the last two months or so that I've been gravitated towards from the same band called Yayayas. The first one was Sacrilege.

00:42:39.711 --> 00:42:51.184
which is kind of goes with the greek mythology kind of theme the latest one that i heard was maps apparently it's huge in tiktok i'm not big into tiktok so i've been enjoying that band quite a lot recently

00:42:51.295 --> 00:43:06.512
It's actually interesting how the popular culture sometimes picks up some of the older songs. Like I was wearing my Metallica t-shirt and I was at a coffee shop or something in Florida and the girl behind the counter was like I'm a big Metallica fan because of Master of Puppets and Stranger Things.

00:43:06.592 --> 00:43:21.391
Yeah. And that's the only song she knows. And then I'm like, oh, interesting. And I remember I was in the shop and somebody was wearing a t-shirt. I think it was Iron Maiden with that monster that I think they called Eddie. And I was like, are you an Iron Maiden fan? And she was like, no, I just like the picture.

00:43:22.047 --> 00:43:32.496
On that, yeah, totally. Like, I am one of those, like you said, the barista, right? I discovered through that same stranger, what was it? Stranger thing.

00:43:32.639 --> 00:43:44.784
stranger things yes i'm even forgetting the name now but the song running up the hill by kate bush i found through that show I didn't know it was like from 1970s and a big hit song

00:43:44.831 --> 00:43:56.047
It was a very old song, which got actually popularized by Placebo. You should listen to the Placebo version. Either in the 90s or the 2000s, so actually I think it's pretty big from Placebo. He did it really, really well.

00:43:56.096 --> 00:44:06.000
But then it started playing all of a sudden, like all over the place. Like any coffee shop you enter, I think it was like 2018, 2019 or so, because I was still in Seattle. It was pre-COVID, I think. It was like just everywhere.

00:44:06.208 --> 00:44:09.231
Also, that's how I learned about the original, that the placebo also covered it.

00:44:09.440 --> 00:44:22.224
that song actually i have a playlist of about eight nine songs for tennis matches like when i'm driving to a match i play those songs this is one of the like regulars in there running up the hill really love that track yeah

00:44:22.896 --> 00:44:31.920
Yeah, cool. Alright, and we have seven seconds before it hits one hour, so let's say goodbye. Alright, bye bye.

