Categories
Podcasts

Kashyap Kondamudi

Kashyap recalls his journey from design to software to banking and back, learning from side projects, getting into open source, working on Flipkart’s PWA, and now diving into RUM.

Show Notes: https://catchingup.dev/podcasts/kashyap-kondamudi/

Catching Up With Web Performance
Catching Up With Web Performance
Kashyap Kondamudi
/

Links

Video

Transcript

Tanner
Hello, everybody, and welcome to Catching Up With Web Performance, a podcast about stories of people in web performance. Today my special guest is Kashyap. Kashyap, man, how’s it going?
Kashyap
Yeah, all good so far. What about you?
Tanner
I’m hanging in there, trying to keep up. It’s podcast day! I want to hear about your stories of web performance. How did you get into this world of the web? Like, do you remember how you got started? How did Kashyap get into web performance?
Kashyap
Yeah, I think the first time that I wrote any HTML was from a borrowed computer from my relatives way back when. I don’t remember when. I did not have a computer, my own computer, for until I was in college. I just took a book, typed it in whatever it said, and ended wherever it said “form”, where “action” is supposed to be a page, and I don’t know what action was. I didn’t, no one told me what action was. And I just like gave it up. “Okay, fine, this is how HTTP works.”
Kashyap
Then fast forward to college. I had a computer this time, started learning a little bit of… Actually, more of my work was around, or my interests were around design, so I was learning a lot of Photoshop. Oh! At that time the Internet was also new for us, for me specifically. I never, I mean that’s the first time I was seeing that there were videos out there to actually learn Illustrator and Photoshop, which was surprising, and I learned a lot of that. I spent, I used to spend a lot of time.
Kashyap
And at the end of the college, my tenure in college, like four years, we had to build a website. We initially gave it to someone else, like a private company that sort of teaches people how to do web development. And I… So we went there, we gave them the brief that, you know, “This is for an event. We are doing this technical event, so please build us a website.” And I still remember that the website that they gave us at that time was almost the same as what I did by following that one book that I had like almost seven or nine years ago. It was surprising, like it was honestly, it was jarring. A lot of sparkles, a lot of Geocities, Comic Sans, rainbow fonts.
Tanner
Yes!
Kashyap
It was scary. And it was an event, it was supposed to be a technical event.
Tanner
I can see it now.
Kashyap
So I was the only person in that group who were looking at that website when whoever was presenting to us, you know, was like actually showing off his work. Like they were saying, “How does this look like?” And we were like, “No.” We were basically looking at our faces and, “No…” That’s sort of like, it was like… So my friend was almost like telling me, just looks saying, “No, no, you have to do this now.” So I went back, did the whole you know in two days. Opened up Dreamweaver…
Tanner
Dreamweaver. Woah.
Kashyap
Yeah, yeah, that was a thing. That was interesting at that time. Use CSS, but to basically like drag and drop. It was a lot of fun to be honest. Then it was launched, and the moment it was launched actually felt really good. It was clear that I didn’t know anything. So that seven years back, whatever I followed, that book, it was not useful at all.
Kashyap
So then, there were a lot of things I learned at that time. CSS was the first. I kind of like understood what CSS meant, I started learning what that was. This was the time of CSS Zen Garden and all of those articles that were coming up.
Tanner
Oh baby!
Kashyap
That you should not use tables to build your website, and I was using a table to build a website. It was kind of interesting time. I think that was the first time I actually built a website. Sometimes I do open up Internet Archive and see if it is still there. It is still there, it doesn’t work, but I still like it.
Tanner
I want to go find it now.
Kashyap
Still there at some point, somewhere. So that was, I think, the first thing that sort of drove me on the whole web development path. But that didn’t last a long time. I actually went to join, to sort of work for a bank. So I was like, started working for a very big bank here in India. It’s one of the oldest banks. You can imagine, like, it’s a stereotypical bank. People just don’t wear suits here, it’s the only difference, but I think there are a lot of similarities between any country’s bank and ours.
Kashyap
So I started working there as nothing to do with IT, nothing to do with computers as such. It was a proper financial thing that I was doing. And I went there because I wanted to learn a lot more of web programming and…
Tanner
You went to the bank to learn more web programming?
Kashyap
Yeah. It sounds very silly if I say that. But yeah, at that time I saw a direction that, “Oh, this is more promising than the…” At that time I was actually working in software, one of these consultancy companies that are there, like large ones that typically send a lot of Indians to U.S. and other countries. I was working there, actually. But I did not like it. And I chose to actually completely get rid of, switch to a normal software company to a financial company to learn software, and it was like a whole thing that happened.
Tanner
Gotcha. So let me recap real quick just to make sure I’m right. So we go back way early on, we don’t even know when it happened, but at some point your relatives had a computer that you got to try out. And somehow you tried HTML on this relative’s computer, and then didn’t really touch anything. The Internet was really new at this time, though. And you got, you’re getting into college and, “Woah, websites!” And there’s somebody, there’s an event that, technical event, that a group of people needs a website, so we’re gonna make the website. And then you’re using Dreamweaver. But meanwhile, you really want to do design, so you’re doing Photoshop on the side too. And somehow all of this meshes together to, “Hey, the web is kinda cool, I’ll learn CSS.” CSS Zen Garden is the latest craze. And between this event and college, at some point you join a consultancy doing web development.
Kashyap
Right after college, yeah.
Tanner
Straight out of college, join a consultancy doing web development, and then get kind of tired of it. Like, “Nah, this isn’t my thing. I’d rather do more software.” So you join a bank.
Kashyap
Yeah.
Tanner
But kind of also…
Kashyap
Which had nothing to do with software.
Tanner
Nothing, okay. That was the part that confused me, was you got into a financial role but in order to do web? What?
Kashyap
Yeah. In a way, yeah, yeah.
Tanner
Okay.
Kashyap
So I, it was more around the time that I had at hand. So if I was working for this software company, I used to come back at around 8:00 in the night. Then I’d start learning PHP or Java or whatever interested me at that time.
Kashyap
So I got hired as a Java developer, I was supposed to learn Java. But the flavor of Java that they teach there, or the flavor of Java that you have to work on in those style of companies is, it’s quite different.
Tanner
Interesting.
Kashyap
Yeah, so for people in web to relate to that, so this company mandated HTML to be written with all caps.
Tanner
Alright.
Kashyap
HTML tags. Now, I’m not sure if this is anything to do with XHTML at that time or some other flavor or specific XML variant of HTML at that time. But this was the rule. You’re not supposed to use CSS, you’re not supposed to use small letters. And that was a trigger for me to think, “Oh no, I’m not going to learn anything here, at least the new ones.”
Tanner
All caps HTML, no CSS, but do web development.
Kashyap
Yeah, but do web development. And at that time I had another job at hand, and this was, that was the bank job.
Tanner
Okay, so this was at the consultancy. You were hired at the consultancy to do Java. But the HTML that you write has to be all caps and we can’t do CSS, even though CSS Zen Garden is great. I think it’s time to move on. The bank comes in and we switch over.
Kashyap
And I switch over. Because I was hoping that I would have a lot of time after going home so that I can learn whatever I wanted. It did pan out that way for a long time. For a lot of time I dabbled with PHP, learned a bit of CSS. The problem is I never had anything to work on. I did not have any project to work on. This was not a time of open source, it was back in 2009, 2008. Open source was not something that I knew at that time, that there was a thing called “open source” at that time.
Kashyap
I did not know what to do with all of that knowledge. So then that became a little bit of a problem, because now I’m thinking, “No, what should I do? I can’t build a website here because no one would even use it.” I had a lot of ideas there. At that time the bank websites were quite slow. I mean, this was a horrible experience for me as a person who wanted to learn new things and who was reading all these blog posts about, you know, writing good HTML, speed and making it fast. And I had, you know, kilobytes per second, kilobits per second connection. Nothing would load there on that at work, this was at work, this was not even outside.
Tanner
So not even your home connection, this is your work connection, is just like kilobits. Is it single digits? Are we at least double digits?
Kashyap
I think it was double. I think it was double.
Tanner
So probably like 50 kilobits? Maybe?
Kashyap
I don’t know, yeah. Basically, a single HTML page would not load completely. It would stop in the middle. And I’d have to refresh multiple times just to get that link at the bottom that was in the footer to show up so that I can click on it and then do my job. It was that bad.
Tanner
Brutal.
Kashyap
So I knew, and sort of I got that, and because I was learning a lot about PHP and programming and everything, I sort of understood what was happening behind the scenes, kind of. You know, I had sort of that little bit of intuition at that time that, “Oh, this could be that, this could be that.” You know, maybe the server is slow, maybe the network is slow. And I started learning a little bit about how the bank network works, why they have those constraints. One of them is like it’s cheap if you opt for a very bad network, so you don’t have to pay a lot of money. If the ATM works, it’s fine.
Tanner
Yeah, as long as we can make transactions it’s fine.
Kashyap
Yeah, that’s fine. So yeah, that’s sort of when I started looking outside. But that was the period of time where I, there were a lot of, I think more or less coincidentally, I think… I started learning Ruby at that time because PHP was not cutting it for some reason. I wasn’t building any website but sure, PHP was not great, so I started learning Ruby.
Tanner
Is that like Ruby on Rails or just pure Ruby? Was Rails out at that time?
Kashyap
I did start with Ruby on Rails. Yeah, Rails was pretty big at that time. I did start with Ruby on Rails because like… Anyway, I got to know that Rails is good. But I didn’t understand a thing because it’s way too many abstractions. Like how does a link get, I mean it’s, it’s, how does that get into a, you know, a specific anchor href? I did not know a thing. I did not know what REST was, I did not know… I did not know, other than GET and POST, I did not know any other methods. Like, now what is this DELETE? I don’t know what that is. So then I thought, “Okay fine, let me learn Ruby first and then I’ll graduate on to Ruby on Rails.” So I started Ruby first.
Kashyap
So in Ruby, I started learning a lot about concentrating more around performance, because at that time I really was hell-bent on building a website before I leave the bank. Some website, I don’t care what it is, it could be just a normal—anything. I just want to showcase what I did before I leave. And when I was researching all of that, trying to build all of that, I was experimenting a lot. And this is what I do a lot, that I don’t actually do the work that I want to do, I just tinker a lot. So I was writing a lot of HTTP APIs, a lot of, “What happens if I do this in parallel? What if I do it in series of five, ten…?”
Kashyap
There were a lot of libraries at that time, one of them being EventMachine. Might ring a bell for a lot of people. But this was basically Node.js in Ruby. This was big at that time, a lot of people were doing it. And one of the contributors to EventMachine happened to be Ilya Grigorik, who then wrote a book on browser performance. That’s when I got led into that zone, because he was writing a lot of blog posts at that time, a lot of videos were out there.
Tanner
Oh boy.
Kashyap
Then I sort of learned a lot more around the front end, like how the HTML transport works, how the whole HTTP connection works. So it was kind of a very slow-paced learning that I had a lot of time. And yeah, sort of like that’s, I think those two were the major sort of initiations, I should say.
Tanner
Yeah. Out of curiosity, do you remember, you mentioned a book a couple of times very early on, was it a book on HTML? Or do you recall what the book was that you first started learning from?
Kashyap
Yeah, this was not a published book. It was kind of a… So we, in India we have a lot of, we used to have, at that time this was a big… There was a chain of coaching centers for computers, right?
Tanner
Yeah.
Kashyap
So they’ll teach you anything, HTML, you know. JavaScript was not big at that time, so it was like HTML, Java, you know, other things. I guess Java was not always around at that time. But yeah, anyway, HTML. So my cousin was learning, joined this institute. They call them “institutes” here. Which is kind of, it’s not the “institution” but it’s an institute for learning something.
Tanner
An organized place to learn.
Kashyap
Organized place to learn, yeah. So she had a book lying around. I was playing games basically every day. So I went there to just like, this was a different city, I did not explore anything, I just sat at their home, in their home and just like playing games whenever I get the chance. And then I sort of took her book and started doing it. It was not published. I did then see after that, similarly one of, a different cousin, in her place, and she was studying for a master’s degree in computers. And this was very early, it was like ’99, ’98 at that time. And so I had, there was this thing called “Black Book of HTML”, which was pretty famous.
Tanner
So catching up here, we’ve got coaching centers, got the black, there was an unpublished book, we got… We have a lot of relatives of yours to thank for your career!
Kashyap
Oh, yeah. Yeah, definitely.
Tanner
Thank you, all of Kashyap’s relatives.
Tanner
There was the Black Book of HTML…
Kashyap
I did not read it, though… The reason why I remember that, though, is like the first book that I had was this big. It’s like a very, it’s almost a manual. It’s almost a magazine, almost. I thought that was HTML. And the Black Book of HTML is this big. I did not know what else was to learn in HTML, to be honest. And I was very surprised that, “Oh, once you go to a master’s degree, they teach you a lot more about HTML.” That’s what I thought. And I’ll get by and let me see what I can do about it.
Tanner
Yeah.
Kashyap
But then I left it at that time.
Tanner
But then it sounds like you learned a ton from blog posts. Do you recall any of these early blogs or people that you learned from?
Kashyap
Yeah, I think early on Ilya Grigorik’s blog posts were very, very interesting at that time. I mean, even they’re still there, like very relevant. And this was more around EventMachine rather than just web performance. And I think that sort of led me into the whole Google, you know, performance events that they had. I don’t exactly recall the name. But Paul Irish, Ilya Grigorik, had a lot of talks on the DevTools. Just the DevTools, just showcasing what was available in DevTools. But they would go into these examples that were very specific. They had a problem, they would showcase that example first, and then build out a solution. And they say, “Oh, you can use this tool,” where you can open up the Network panel to see what HTTP request is and your timing and everything.
Kashyap
I actually learned a lot more than that in those, from those videos, and I would like follow them religiously. Addy Osmani then picked it up. So I’ve been like a follower for all the Google, let’s say Google-oriented DevRel engineers and everybody who kind of like have a lot of knowledge, and they share a lot of knowledge. So kind of like learned a lot from more around talks and videos, more than I would say any book. Yeah, I don’t have a lot of focus to sit down and read a book fully end-to-end. Yeah, I don’t. There are like, ten books out here that I just like opened up, there is a bookmark somewhere in the middle.
Tanner
That’s fantastic. So early on, these books, these blog posts, just learning as much as you can on your own. You’re at your banking job, you’re hell-bent on building a website. I need to show people that I can, everything I’ve learned, I have all this knowledge. Did you finish it? Did you make this website?
Kashyap
No.
Tanner
No! What happened?
Kashyap
No, uh. So it kind of hit me that I was like, I’m staying in that bank for a long time. It’s sort of like I got that fear that if I don’t leave the job now and actually do what I… I mean, I was sure at that point that I really liked working on web, building out websites, and working on Ruby and all of that.
Kashyap
I was very confident that I can make it outside. Because until that point I was not confident all. Because I knew I don’t come from a computers background. I don’t, you know, I did not study computer science. And a lot of companies back in India, like the good ones, like Amazon, be it Google, they were notorious for having all these algorithm exams and algorithm tests. Even my computer science friends weren’t make it through that, and I knew they were brilliant. Like, these were really good engineers who did not get through all the five rounds. I was like frankly afraid. Because I was like, all I did in those 4 years was, you know, this is my time to kind of learn and get good at it so that I can leave and then join one of these companies. That also did not happen.
Kashyap
So it was basically crisis, where I knew that if I stayed back I would have to do the bank job correctly now, because until that point I was kind of coasting on being sort of a good manager and just delegating a lot of work to others, which means I don’t do a lot of things. But I knew that that had an expiry. I knew that it would end at some point, so I had to like jump. I was fortunate enough to get a company here in where I stay now to kind of take me on because I was contributing to… I say “contributing” but I wasn’t contributing much work.
Kashyap
This was, I started getting involved into Sinatra, the web framework, which is kind of Express in JavaScript, sort of a micro framework at that time. So I started contributing there. I started just understanding how Git works, learning Git, how things work basically when you contribute to open source. You know, how good commit messages help. I still remember, that’s the first time when I contributed to Sinatra I opened up a PR. One of the maintainers from that team, he actually taught me how to do squash merge.
Tanner
Yes!
Kashyap
Basically do a squash of commits. I did not know that was a thing. I just asked directly on the chat, on the pull request. I said, “I don’t know what squash is.” And then he would explain, he’d like, “Look this up.” And he told me that, “Okay, this is basically where you combine all the commits into one.” And then I looked up what squash was and all of that made sense.
Tanner
Yeah. That’s so good that he showed you instead of just being like, “What? You don’t know?” Like writing you off and saying… But he actually came alongside and helped you through that.
Kashyap
Yeah, yeah. Sinatra at that time was, had a really good team. I’m still part of their core team now. A lot of the people who I learned from, they’re not contributing much. I’m also not contributing much, to be honest. But yeah, like it was a good time. I sort of learned everything from all these side things that I did more than my my actual job, to be honest, up to that point.
Kashyap
So based on that I got another job here, and this was proper Rails startup. So this was a company that would build Rails applications for others. So it was like a proper, you know, sort of…
Tanner
Is this Codemancers?
Kashyap
Yeah, yeah this was Codemancers.
Tanner
Awesome.
Kashyap
So I, you know, they took a chance and offered me a job and I was like, I was so happy that day, I still remember. I did a full day interview. I was very nervous because I never did an interview before, you know, for a job.
Tanner
Yeah.
Kashyap
So I did a full day interview. They asked me to write a Twitter application in Ruby and I was like trying to write test cases and everything. That was the like the entire day. It never happened. But again, like it was a very simple thing. So they were asking questions around, “Oh, why didn’t you do this? Why didn’t you do that?” It was a very different kind of experience from what I heard from my friends, from, you know, Amazon and Facebook at that time.
Tanner
How was it different?
Kashyap
It wasn’t an interview as such, it was kind of a, you know, just like, “Come over, we’ll see like what you can do and we’ll give you a problem statement, just work on it with us.” You know, it was a very small team. It was a small room where we were, you know, they were working and I was just sitting with them. They asked me to do something, and they would just like check on some, you know, every half an hour or one hour.
Tanner
So less getting grilled with technical questions, more, “Hey, let’s actually build something. Let’s see if you can do it.”
Kashyap
Yeah, yeah. So I was like very nervous at that time. And in the evening they were very, very apologetic. They brought me to the side, so we went for a coffee outside. And they were very apologetic. They were like, “So you don’t have any experience…” I was like 4 years into my career at that time in bank, and they were like saying, “You don’t have any professional experience in programming, so we can only offer you this much.” And I was like, “Why are you being apologetic about it? Yes!” I said…
Tanner
I don’t think you understand, this is what I need!
Kashyap
Yes! And so, you know, that happened and sort of I shifted here. So that was the start of my sort of programming career, to be honest. But yeah, it was like a very slow learning at that time. And it really helped that I had time to learn all of that. It was like, it was not in a hurry, it was just that, you know, very slow-paced.
Kashyap
And a lot of that ended up teaching me a very basic sort of idea that you kind of have to understand what is going on underneath before you actually, you know, if there is a bug you need to know why exactly it is before you just like run to fix it and just like wash your hands off of it. That, those kind of things that I learned just by happenstance were really useful. I still feel like all of that was useful.
Tanner
Yeah. And this is, you learned about looking under the hood during your self-taught time at the bank? Or did you learn that at Codemancers?
Kashyap
It was during the bank, but I think it had a structure once I started in Codemancers because I had really good teachers there. Like one of my colleagues at that time, he was basically training me in Rails because at that time I was still not comfortable with it. So he was actually training, and so we would pair like for the first half of the day and build something and then I would take it up after that.
Kashyap
And that was also the time where in Rails there was a lot of focus on performance as well. Like a lot of focus on how to speed up test cases, how to speed up database queries, how to write N+1 queries. And it was not, it was, you know, there was a lot of quality associated with Rails at that time because it was sort of at its peak. A lot of companies were using it, GitHub was getting famous, Shopify was getting famous. So there was a lot of that, and I sort of was benefited by all of that, also because I spent a lot of time learning all of that. And that’s how sort of I went into web performance also. Because you have to look at it from end-to-end. Because no matter how much you sort of optimize your database queries and your Rails application, your test cases, the website can still be slow.
Tanner
Yeah.
Kashyap
And it can still feel heavy. And this was a time where we had metered connections for internet. It was not free. And I happened to go to a different country at that time for a three week period. It was so hard to find a hotel or a restaurant because every restaurant had these huge PDFs, you know, 1MB, 1.5MB.
Tanner
Oh my god…
Kashyap
And my data would go out and it was, I had a very small, very slow plan at the time, for the network plan. And these web pages wouldn’t even load. There’s back to, and then I would have flashbacks back to the banking job that I had. So it was kind of a very, you know, that’s sort of when I thought, “Okay, let me see what they’re doing.” And I got comfortable with opening up the DevTools. Every time I see a slow page I would just open up the DevTools and see what exactly is happening. I still do that even now. If I see something weird going on, some jank, I just like see what are they doing with all of that, and just try to find out.
Tanner
Man, that’s so visceral. I want to, I just need a hotel! I just need a place to stay and the website won’t load.
Kashyap
Yeah. It’s not even a place to stay, it’s more around just like finding out whether they have a… So I am a vegetarian and I went to a country which is just, I mean, they might have a different meaning for vegetarian. So this was Indonesia. I love that place. And it’s hard to communicate, the language is different, but it’s hard to communicate the idea of a vegetarian outside of India because the meaning completely changes. So it was easier to look at the menu and see whether there is a green dot, and then you would understand, “Okay that’s, this is vegetarian.”
Tanner
Right, this may have fish or not have meat or…
Kashyap
Yeah. Yeah, they have some icon, something like that to signify that. But that page wouldn’t load! So I was not able to find out like, “Okay, should I go this way or that way?” Because I don’t know where to go. So that was kind of, you know, that was the time when I, I still remember that, that was a time that I thought a fast page, no matter where you are, even if it’s for a restaurant, for something that you would think people won’t use it, or like it’s just there to check something in your company policy, you still have to have a good one because otherwise people like me will suffer.
Tanner
Right, something that you might think is so trivial and unimportant, but like this is actually really useful information that’s important to people. I want that answer, I want to be able to get it quickly.
Tanner
So you have these experiences, you get into web development, now it’s actually your career. Now that you’re working on Rails, performance is more of an issue, working on the speed of tests, but also pushing the end-to-end because I also need the rest of the experience to be fast. Tell me more then, like maybe we can fast forward a little bit. On your journey since then, are there things in particular about performance or even just web development that you found interesting or difficult? Like what are some of the things that have surprised you along the way in your career?
Kashyap
Yeah, I think surprised me, I think far fewer than what I kind of know now, but at that time… Because I started in Rails, I did not have a lot of exposure to JavaScript as a thing, and JavaScript was actually exploding at that time. And this was when, you know, the Rails thing was a little bit on shaky ground, let’s just say that. A lot of companies here were then suddenly shifting to Node.js. They did not want Rails anymore because they don’t have a team to kind of maintain it after we build the basic stuff and give them. They’re not able to maintain it, so they want something in Node.js because you can train developers and it was easy to train JavaScript—“easy”—to train JavaScript developers.
Kashyap
So that happened, and I happened to be joining a company that I still work today, long back, for building a React application. This was one of the early days of React and this was supposed to be a desktop-based PWA, like this was very early 2015…
Tanner
A PWA?
Kashyap
Yeah, and I did not know a thing about JavaScript.
Tanner
This is fantastic.
Kashyap
And I was supposed to be interviewing for the, yeah. So at that time I think the biggest learning, or let’s say the toughest thing that I sort of had to wrap my mind around was… So my colleagues would say that they had, like, they faced memory issues in Backbone.js because a node would not get removed and what, you know, all of these very fancy terms. I did not understand a thing. So I was kind of, I was very apprehensive at that time that, you know, what exactly is this? I did not know anything about it. So it was like at that time sort of that was the hardest part. And then I…
Tanner
Was wrapping your head around memory issues with JavaScript?
Kashyap
Yeah, just understanding how JavaScript fits into this picture. You know, why can’t we just do a web application, right? Like just do a server-side rendered thing, just send your HTML and CSS. What’s difficult about it? And only then I realized that there are a lot of things for UI developers to do. Like you have to have something that animate or, you know, wanted to handle click events and stuff like that. So I think for me the difficult part was to just like wrap my head around all of that, that I had to now learn JavaScript, and then learn how to do it right, and then sort of like understand all of that. It was kind of difficult at that time.
Tanner
Would you say it’s kind of like I’m not just building static pages, like I’m not just sending HTML over the wire, but I’m supporting interactions. When I do something this needs to happen and things move and change.
Kashyap
So I think because I sort of learned, I mean, you know, from the beginning we went into all the twists and turns in this whole story so… I never sort of had a very surprising, like, I wouldn’t say there was a difficult moment in all of this, that I did not have anything that would… I would ignore it, maybe, if I did not, you know, did not like to learn it, or kind of understand it. I just said like, “I know that, okay fine. I’ll learn it later. Let’s see what happens. I’ll get to that, just add to the reading list.”
Kashyap
But I think surprising things were far fewer than what I kind of remember. It was pretty smooth sailing. I would say there were times where I was stuck and it was frustrating and, you know, didn’t have help to kind of ask what it is exactly, what the issue is, how to express that exact feeling. How do you ask the question? You know what the problem is but you don’t know how to ask what the problem is.
Kashyap
But yeah, I think that sort of was like, still like, you know… I don’t feel anything is hard in general if I just put my mind to it, but again I never do that so that’s the hardest part.
Tanner
Man. Well, so this is, you’re at Flipkart right now, right? Flipkart.com?
Kashyap
Yeah, yep.
Tanner
I’m so curious to hear more about this. It’s a progressive web app, it’s a PWA?
Kashyap
Yeah, back when we started it. Now I don’t think it sort of works as a PWA, but yeah.
Tanner
So has it transitioned or do you recall? Because I’m curious what it was like working on that, if there were differences in this paradigm. Like not only is there interactions, but it’s a progressive web app. Did that mean something different when you worked on it?
Kashyap
Yeah, I think more than progressive web apps, I think this application that I was working on was one of the first applications that got very popular, which used React and also did server-side rendering. And we kind of launched it with server-side rendering from the get-go. And it was a crazy experience.
Kashyap
I mean, I did not know, again, I was on the side just looking and learning when others did everything. So they were like talking about Node.js memory leaks, they were talking about how to, you know… because we had this huge cluster of machines that would handle a million connections per second and all of that. I knew that bit about the million connections per second, how what problems we would face, because again I’m coming from experimentation around networking and everything. So I kind of understood what that was but I did not know what, you know, how Node.js optimized it and everything. So it was a very fun experience.
Kashyap
And at that time the PWA thing was also… Initially desktop PWAs were not a thing. We did use service worker at that time. And again, we were the first, I guess one of the few companies who started using service worker and which got popular outside of… Just the fact that we were using service worker was popular at that time. We were trying to support offline functionality and everything, but for the desktop application that I was working on. So we had a, we still have a desktop website with a mobile website, and at that time the desktop website, we were not planning on supporting offline. We were not planning on supporting the fancy features that service workers actually allowed us to do at that time. It was more around just like have a push notification handler, maybe cache a few things here and there.
Tanner
Yeah.
Kashyap
So it did not, like, exactly now the PWA, the checklist of what makes your app a PWA or installable has now an offline handler as well. So because we did not do anything about it, it’s kind of, it was a PWA back in 2017, 2018, now it’s not anymore. So just like that, the spec has changed and moved us back into non-PWA.
Tanner
Fascinating. I personally haven’t worked on a PWA. I’ve tried to, you know, put offline support on my personal website. But that, I find, is like another paradigm shift. Like not only am I not just doing static pages, not only am I just working with interactions and things that move around change now, but I’m also trying to support an application when there is no connection. Offline-first is just a whole ’nother world for me. I’m not even quite sure how to test it.
Kashyap
Yeah. I think that’s what makes it a little hard as well. Like how much do you want to save in your cache? Do you want to like download your entire website and just dump it in the service worker cache so that people will be using it offline? So these kind of are very hard to answer questions. But I mean, but do have to go into the mindset when you’re building. Again, that’s why offline-first as a philosophy became important, that you can’t just like stick a service worker, cache everything and say, “Okay, offline.”
Tanner
We’re done!
Kashyap
Which is kind of what we tried to do. But yeah, that didn’t work out so we kind of walked back a little bit and thought, “Okay fine, let’s not do offline here for the desktop application, just like do some caching for JavaScript, I guess.” But yeah, I think it’s now, at that time, it was like very fancy that, you know, service workers were everywhere. Like no matter what website or blog post you were reading, it was all about service workers. Now suddenly it’s all silence. They either have become so…
Tanner
Interesting. I wonder why.
Kashyap
Yeah, I wonder why.
Tanner
It’s either become what? You say so normal, or…?
Kashyap
It’s either become normal, like everybody knows what a service worker is and everybody’s probably using it, or probably not everybody is using it and they just don’t get it anymore. It’s one of those at least.
Tanner
We’ll have to do some investigative journalism now and see like, “Where are service workers today?” The E! True Hollywood Story. So nowadays, when you’re working, I know you mentioned that you would keep open DevTools, or any time you experience something slow, you pop open DevTools, maybe turn on CPU throttling. Are there other things now? Like what’s kind of your day-to-day? Or are there any… How do I ask this? Are there any other habits you have that you try to keep that make you a better developer or make you better at web performance?
Kashyap
Yeah, I think… I started using WebPageTest a lot, I think a couple of years ago.
Kashyap
Yeah!
Kashyap
I’ve learned, yeah, I went through, there is a blog post on How to Read a Waterfall Chart. It’s interesting that it’s on like, I think, Nooshu…
Tanner
Matt Hobbs, baby!
Kashyap
Matt Hobbs, right. He has this like, I mean I did not know… Like on the waterfall if you see something, if you see a speck of dust or something, you have to understand, “Oh, that data has some meaning.” It’s like crazy the amount of information out there.
Tanner
Right.
Kashyap
So I started learning that, and it sort of helped a lot to understand how things like network priority or just the amount of JavaScript that we have, you know, sort of makes or breaks the case for a fast website.
Tanner
Yeah.
Kashyap
That’s kind of like, we started using that, even within the company we now have a… We now sort of like, we took the API subscription and we have a tool that would basically run the jobs, basically run a set of tests, and at the end of the day we get the reports and we have a sheet that maintains it for, we have been going back I think about two years now.
Tanner
Wow.
Kashyap
So we have a weekly snapshot of how all the web metrics are looking like, what is your TTFB, LCP, FCP…
Tanner
That’s fantastic. So you have automated WebPageTest runs for the site for like two years now.
Kashyap
Yeah, I wouldn’t call it automated. It was more around we sort of created a CLI tool, a simple CLI tool, that would just run the job and then take the data out later on…
Tanner
So somebody’s hitting that once a week or so.
Kashyap
Yeah, sombody’s like, so somebody does it manually.
Tanner
Still, that’s great.
Kashyap
But it’s still fine, once every week we do that. And we kind of use that as, to just like measure the trend line of how the web vitals are looking at. And this was before we kind of like onboarded to RUM tools.
Tanner
Yeah.
Kashyap
Basically now my whole job is trying to figure out which RUM tool to use, or which one, or should we even use a RUM tool.
Tanner
Oh, tell me more!
Kashyap
Yeah. So my current job is more around the website. Basically I’m kind of the, I don’t want to use this word but I’m the architect for the web application, the team that’s behind building the m-site and desktop applications. So most of my job is basically to add a little bit of direction into what we want to do with respect to performance, observability, and a few other things that we think of.
Kashyap
Performance was always on the radar. There are new things getting added, like observability is one major thing that we started tackling this year. And part of that is figuring out which RUM tool to use and whether we use it or not. So because we have been using WebPageTest, which is a synthetic system, it sort of simulates a user coming from some network, we also wanted to have some realtime insights as well, real user insights as well.
Kashyap
So yeah, I think we’re kind of evaluating a few options and seeing what works, what doesn’t work, and what are false metrics that don’t help a lot, and then how do you dig down deeper and see… You know, I keep saying this, that RUM basically tells you where you are at currently, it doesn’t tell you where you want to go, or what you have to do to improve it.
Kashyap
So I mean, within the team I say this, I don’t say this out loud because it sounds a little preachy.
Tanner
I mean, it’s true.
Kashyap
But in the team I can be a little preachy. Yeah, so I say, so we kind of use both at this point. But yeah, we are sort of mostly using those tools. I think for me, just like looking at a few of the Google IO and I forgot his name… CSS Wizardry?
Tanner
Yeah, Harry Roberts.
Kashyap
Harry Roberts, yeah, Harry Roberts. So he has some of, I mean it’s kind of mind boggling how he learns all of this, that, you know, two CSS files having a different priority and understanding how that shows up on a DevTools thing. So I kind of like always kind of keep, like if there is a Harry Roberts or a Matt Hobbs or a Addy Osmani or, you know, basically anyone who has, who shares knowledge and basically are doing a really good job in performance side, I do sort of follow and just learn. That has helped me so far, I guess.
Tanner
Man… And sorry, did you say the RUM tool that you’re using now? Or are you guys in the middle of evaluating still?
Kashyap
We, yeah, so we’re still evaluating a few options.
Tanner
Cool.
Kashyap
Currently, we have, I think we’re in the middle of that so we can’t give out…
Tanner
Yeah, yeah. No, you’re good. I was just gonna say like…
Kashyap
I’m not even sure if I am supposed to say that.
Tanner
Well, nah, I was just gonna say like, okay, so you’re in the middle of evaluating RUM providers and which tools to use. I guess that means we’re gonna have to come back in a couple of months and see where you end up.
Kashyap
Yeah, yeah. No, I think, I mean, I think the Google toolkit that they have, there is a repository in GitHub called “web-vitals”, I think it’s really great. You know, if there are people who are listening to this who want a tool name, I think it’s a really good resource, just like starting off. Because the difference that I noticed, very recently I had a chat with someone who noticed that that repository is always updated. If there is a new metric that they’re introducing or planning to introduce, it will be there in that repository. They’ll have tooling built around it. But if you are using some third-party system, you know that sort of sells you a RUM tool, it might take some time before they add the feature there in that. So it’s a very interesting look, or sort of a perspective, to kind of know. I just learned it recently, so it was very surprising that there is a benefit to using that rather than just buying some RUM tool out of the box.
Tanner
Yeah, for sure. Man, I wish we had more time because RUM, I feel like right now is just, that’s the hot topic. There’s so much to learn and talk about that we haven’t even scratched the surface on. Kashyap, it has been so great talking. I hope we get to talk again in a little bit and then hear more about the adventures of RUM. But until then, thanks so much for coming on the show, it’s been a great time.
Kashyap
Sure. Yeah, yeah. So now I’m guessing, like this is the first time I’ve been in sort of an interview like this. So it’s like, it’s fun. I really liked it.
Tanner
I’m glad to hear that. Okay, here we go. We’re gonna hit the—goodbye! I’ma hit the stop button.

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.