Sean: Hi, and welcome to PodRocket. I'm Sean and joining us today is Vic Vijayakumar, principal engineer at Twilio, who recently spoke at Remix Conf this year about building tech with low-code tools for social good. Welcome to the show, Vic. Vic Vijayakumar: Hey, thank you for having me. Sean: Yeah, I'm really excited to have you on. You've already had a full career before going to Twilio, but can you talk about how you got intoengineering in the first place? Vic Vijayakumar: Sure. My entry in engineering is actually quite boring and what you'd call traditional. I have a four-year degree in computer engineering, which, to be fair, has more to do with hardware than software, but... So, I just begun to work on a master's program in cybersecurity, and I got a job as a student programmer with the university, and I liked that way more than I should have. Next thing you know, the university offered me a full-time job to write web stuff. Roughly around then, my girlfriend moved across the country to get her PhD and way back then, you had to usually live in the city of the company that you work for, so I took on a job as a first engineer at a company in Durham that was helping non-native scientists get published in English-language journals. It was such a rollercoaster ride because I became an EM and then an engineering director, and then I hired and scaled and learned so much. And then, I decided I want to go back into IC work and I hired my own replacement, became a principal engineer. When that company got acquired, I moved to Eventbrite to work on frontend infrastructure and architecture work and then onto a product team there. And then, I have now just recently, this is actually just my second week at Twilio, I joined as a principal engineer on their platform side. Sean: Well, that's exciting. Congrats on Twilio. Vic Vijayakumar: Thank you. Sean: Sounds like you got a lot packed in there, but somehow you also find time to do it on the side as well, and you call yourself an indie maker. What does that mean to you? Vic Vijayakumar: Sure. There's two parts to that. I'm an independent creator. The indie part, I work on projects entirely funded by my own sweat, blood, and tears, taking care of everything from infrastructure all the way to the frontend. I've always been a T-shaped generalist at heart and I think this has been a good way for me to make sure that I still stay appraised of everything that's happening across every layer of the cake. I said earlier I work in platform right now in Twilio, but I want to make sure that the rest of the web world doesn't get away from me while I'm not paying attention to it, and I think the indie part of that helps me do stuff that is not directly related to my job, to still... I don't want to say to stay relevant, but it's so that I can still follow the discourse, still know what's going on. I know as much now about the hottest way to spin up servers as I do about frontend frameworks. The creator part, I make things that try to add some value into this world, whether that's creating tutorials or podcasts or software that helps people. Sean: Yeah, I think that's also one of the most fun aspects of software engineering, is there's always new tools and frameworks coming out to play around with all these new shiny toys for us. One of your side projects is about creating social good with low-code tools. How did you come up with that idea in particular? Vic Vijayakumar: That's a tough one. My way of really generating ideas is just things that will scratch my own itch. In this case, we had a kid... So, the girlfriend that I moved across the country with, she and I got married, we had a kid, she went to preschool and I realized that... Well, we had to fill out all these forms to get her into preschool and then they said, "Okay, we'll get back to you," and they literally sent us a letter in the mail of her getting into school. And then, we had to drive in to go drop off a check for the tuition and all this stuff and I realized that, "Wow, this is an insane amount of paper," and there's just so much paper going back and forth. This is a perfect use case, is someone getting into the school. And there are plenty of... Yes, there's wait lists for preschools. That's another thing we can not talk about. But there's so much other wasted paper of all these people who are dropping off forms. "Oh, there's a mistake on your form. You got to come back and fix that because you forgot to fill in your kids' allergies or something." There was all of this back and forth and it seems silly to us, but this happens every day across thousands, millions of schools across the country all the time. When a new preschool director came into this school, she had come from a college, and I think one of the very first times I met her she said something about, "Wow, sorry, I'm still just getting all of this paper and trying to figure out what goes where and all this, and there's still this filing cabinet full of paper that I haven't even looked through." And I said, "For a day job, I actually help people sort through messes like this, and I automate workflows. Is this something that I could possibly help you with?" I should admit it was a polite offer and she jumped on it, and she said, "Yes, when can we talk about it?" I was like, "Okay, you know what? This is a problem that I'm vested in as someone who doesn't like to fill out paper forms, and something that you seem to care about because you don't know why a kid is convulsing on the ground without digging through a bunch of paper. I feel like we can come to an agreement here of what to do to solve that problem." Sean: Definitely sounds like somewhat of an archaic system, but so many aspects of our society totally just run on paper and manual systems. So, were you already working on a side project at the time? Vic Vijayakumar: No, I wasn't. Oh, you mean this project or just any? Sean: Yeah. Were you working on anything at the time, or were you like, "Okay, this is a good opportunity to start something new." Vic Vijayakumar: I think at that time, all of my, quote unquote, "side projects" were offshoots of proof of concepts of things that were work related because my job at the time was very much go play with things, figure out proof of concepts that we can productize. I also had, I want to say, a pretty poor work-life balance because I would use my free time to basically do work, and I turned that, that exact time that I was already doing that, into basically doing not work, which was this. Overall, I still wrote code when I shouldn't have been writing code, but at least now I was doing it for the joy of it instead of... Sean: And then someone else is getting some benefit out of it, too. Vic Vijayakumar: Right. Yeah, exactly. Making a lot of people happy by getting them not trying to fill out a form. Sean: Okay, so the preschool has this problem and... Can you work us through your thought process of how you decided how to fix it, what tools you would use, and particularly the low-code tools? Vic Vijayakumar: Yeah. I wanted to do this as fast as possible. I didn't want this to be a typical software engineering project, like if they had gone and contracted a firm or something like that. I wanted to show them how quickly they could win at this, so the very first thing I think I did was I converted their entire application process into just... I didn't use Typeform or anything like that because those don't have validation. I find it harder to do validation using something like that. For example, let's say, we say, "Hey, pick a class among this list of classes." One thing that these forms always got returned for was that someone whose kid would turn three in November is not actually eligible for the three-year-old class, because there's some math needs to happen there and these things would always get returned. So, I wanted to add some logic there. I found that the easiest thing for me to do was to actually build a simple HTML and JavaScript form, and this wasn't much work. I could get this done. They basically gave me an application form, which I'd seen before, but I took that form and I converted it to HTML and JavaScript. Pretty simple there. I added all the validation that you need, everything that says, "Hey, you said your kid has allergies, but you didn't fill out the allergy part," all that stuff. So, it was a direct transformation of the paper form into, I think it was rack file form or something like that. And then, the next thing I did was, all this data had to go somewhere and I didn't want to have it go into a database like MySQL or something like that, because then I would have to give them a way to read that database, and now you have to train people on, "Oh, here's a tool called phpMyAdmin and each of you need different logins, and you need to go into that." At that time, I think Airtable was really popular, and starting to get popular. I mean, it's very popular now. So, I had it basically so that anytime the parent would click submit on that form, it would validate that and then it would shove it into an Airtable, and then it would send the school an email and it would send the parent an email basically saying, "Here's what you filled out. Here's a complete record of what you filled out." Back in your email immediately. "We've received your application. There's nothing left for you to do." And this right away... I demoed this to them and their eyes just lit up. They were like, "Wow. What?" And they were like, "What is this going to cost us?" I'm like, "It doesn't cost you anything. It took me, I don't know, two hours of my time. I'm not going to charge you for that. You take care of my child for a good amount of the day." Sean: Enjoying the podcast? Consider hitting that follow button for more great episodes. Yeah, that's awesome, and it's funny because I think if I were building this on my own I would think, "Yeah, MySQL or SQLite." So, were you planning as part of this process that you wouldn't want to have to spend a ton of time maintaining it in the future? Or that someone who wouldn't have experience coding would be maintaining in the future? Vic Vijayakumar: Yeah, I didn't want to become their IT team. I didn't want to be the person that was responsible for a Kubernetes cluster for a daycare or something like that. I wanted it to be as little involvement for me as possible, and I wanted it to go into commercial tools that had their own support, like Airtable. It turned out for the amount that they use, they actually only very recently started to pay for Airtable. I think it's $10 a month or something like that. I don't even know. But at the time they didn't have enough usage to even need paid accounts and they could each have different logins. They were already using Gmail, I think, so they could just use their Gmail logins to log into Airtable and look at the school and they could see these records start to populate with every kid. And if they had any Airtable questions, which they didn't, they could ask Airtable support, or I'd be able to help them with that. I didn't have to create a user interface for them to view their records. I didn't have to create an admin side of things. I didn't have to deal with any of that. This project, I could have done it in a month or I could have done it in two hours and made my involvement in it as little as possible. Sean: Nice, and so I imagine it saved them hours and hours of time going through these forms. Vic Vijayakumar: So much. I'm trying to remember exactly what it was, but it used to take them, I want to say something like 60 hours to do this, and then it came down to three or four hours for one person instead of a team of them trying to sort through... Because the thing is these applications would come in and they would have to sort them into different classes, and they wanted it to be classes of people that were roughly the same ages and a split between boys and girls. They didn't want it to be all boys or all girls, and they wanted the kids to be like, "Oh, if you have kids with allergies, let them all be in the same class. You can have an allergy specialist taking care of that class," and stuff like that. They would be sorting through this, through a pile of paper, if you can imagine that. But instead, they could instead just group people by ages and genders and whatever in Airtable and this just drastically sped it through, and they could do this real time as applications are coming in, instead of waiting to sort through a pile of paper. So, it dramatically improved their lives, they still use it, and the parents love it. And I should say, this is all pre-COVID, so back when people were willing to go and hang out in a room and sort through piles of paper, and were willing to go in and drop checks off. Even back then, people were like, "This is so annoying. Why would I do this?" Sean: Since then, has the word gotten around that you have the ability to transform small-business processes. How about other people reached out and asked for your help? Vic Vijayakumar: Yeah. Locally, there was this text message group of preschool directors in the Raleigh area or something like that, and each of them reached out to me about how they could change their own school, because what happens is when one school is able to get back to you within hours, confirm immediately, they have such a huge competitive advantage over all the other schools in the area that they all want to have that quick ability to get back to you. So, they all wanted me to help with them and I was able to help a couple of them, but eventually I had to say, "Hey, I have to slow down on this a little bit," because none of them wanted standard forms. They all wanted just a little bit more customization. I'm like, "Now, you're trying to turn me into a web shop." The more customization you have to do, it takes away from your ability to scale yourself to help people for free, and that's why I had to stop. Another fun one, when I talked about this project on Twitter, random schools from across the country reached out to me, and I think parents maybe linked the thread to their school and said, "Hey, they can do this. Why aren't you doing this?" But that was also fun for me to see, and I've actually scheduled calls with a couple of these schools to just chat with them, see what they're... I think primarily, they just want someone to chat with and say either, "This is absurd," or, "You're on the right track here." They seem to know that what they're doing is not ideal because I'm guessing they've had parent pushback, but I have a couple of those conversations lined up. Sean: Where does the need from this come from? Is it because code is just so expensive, that you have to hire people to write it? Why do you think this is a pervasive issue? Vic Vijayakumar: That's it, right? Code is expensive. It's expensive, both for you as a creator to have to create it and maintain it, and it's expensive for you to go out and get someone to write something for you because time is not free and it's an opportunity cost for the person that's helping you. Oftentimes though, when you hand a project like this to someone they're not thinking of it as a mix of local tools. They're looking at it as, "How can we scale this to, I don't know, millions of users?" whatever. I mean, the school has 200 kids tops per year. That's the number of records. I mean, that's the amount of records that you can fit into a free Airtable. So, you don't have to make it an expensive project for yourself or the school, and I think when you reduce the total cost and the total burden it is for you to provide this assistance to someone, you're far more likely to take on the project. Yeah, I think that's the bulk of it. If this is really easy for you to do, if it's really easy for you to help people, you're far more likely to do it than if it's something that is a huge burden to you. Emily: It's Emily again, producer for PodRocket, and I want to talk to you. Yeah, you, the person who's listening but won't stop talking about your new favorite frontend framework to your friends, even though they don't want to hear about it anymore. Well, I do want to hear about it because you are really important to us as a listener. So, what do you think of PodRocket? What do you like best? What do you absolutely hate? What's the one thing in the entire world that you want to hear about? Edge computing, weird little component libraries, how to become a productive developer when your WiFi's out? I don't know, and that's the point. If you get in contact with us, you can rant about how we haven't had your favorite dev advocate on or tell us we're doing great, whatever. And if you do, we'll give you a $25 gift card. That's pretty sweet, so reach out to us. Links are in the description. $25 gift card. Sean: There's an aspect of profitability, where this code will help a business but it won't necessarily have some startup-level effect where they'll have tons of customers because there's a limit to how many kids can enroll in a preschool. Vic Vijayakumar: Originally when I did this, I helped one school, Airtable and forms, and it was done. And then, what happened was in subsequent years, parents said, "I filled out this form already last year. I just really don't want to fill it out again. Is that possible?" And actually, that parent was my wife. So, I was like, "You know what? I do have this information from you last year. I could this year do a little bit more effort and when you log in..." I'm like, "Okay, this needs a log in system now so that it can retrieve your existing kids." So, after you do something bare minimal that can help a lot of people, you can start to think about whether this is something you want to productize, is it something you want to scale. And by scale, I still don't mean the ability to handle 10,000 kids. That's a high school. Actually, that's more than a high school. That was the size of my college. But you want to think about, are there ways that you could help just make the user experience a little better? So, I did end up adding log in to it, and then I did end up creating a way to store all these records in MySQL, but the thing is the school doesn't get access to MySQL. The MySQL part of it is purely for me to be able to offer a better experience to the parents logging in. All these records still get sent over to Airtable, so as far as the school is concerned, people are still applying and all their stuff shows up in Airtable and they're still able to move things around, group it, whatever they need to do directly in Airtable. So, I still didn't make a huge admin interface for them to be able to view and sort any of that stuff. I mean, why would I? Airtable has a really good interface to do that. But this now also allowed me to be able to say, "Hey, other schools, you're free to come in and register your kids through this as well, and then your stuff just goes into your Airtable." Sean: So, you've made a bunch of incremental changes, but the MVP that you released was still super helpful. Do you think that other people who are hacking on the side or other indie hackers could benefit from that advice? Just releasing it earlier than you think? Vic Vijayakumar: Yeah. There's something to be said about if you are looking at a car and you're like, "I really could..." I don't know. Let's say that you built a car or a house or whatever analogy you want to look at it. But until this thing is in service, until this thing is on the highway transporting people, you are going to be consumed by this desire to make it better. You're going to look at it and say, "Well, it really could be better." But the truth of it is that until it is on the road, on the highway transporting people, it's not really doing its job, and I think two things come here. One, it's important to ship this as soon as possible so it can help people, one as a way to stay motivated to still work on this thing, because once it starts to help real people, once real people are using it, you just get motivation to actually work on this project more. And it also helps you understand what parts of this are actually critical to upgrade or change while it is being used as opposed to, if you have a project just sitting stagnant unused, you're going to say, "I really should rewrite that from Node to Golang go this week. I bet that would be way faster. I bet people would like that way more if I did that." And the thing is it's lie. You're lying to yourself because it has zero users. Zero users don't care what the backend is. Sean: Yeah, I think we all... Developers working on side projects give in frequently to the temptation to start on a new idea or add in some unnecessary optimization, so I guess releasing it and having people actually start using it forces you to work on the things that matter to them. Vic Vijayakumar: And I just said something, I said, "Zero users care what your backend is," but actually, even if you had a million users they still don't care what your backend is. They really only care about the user experience on the frontend. As an example here, when I had the preschool thing going, the backend was Airtable. Did the users care what the backend was? They literally only care about how they're filling out these forms. And then eventually, when I added login to those forms and they were able to look at their kid's data and, "Oh, okay, I'm going to update their allergies because I found a new allergy last week or whatever," they still don't care that all of this is get dumped into Airtable and the school's using that as a way to group them. So, I think we often get bogged down in details because we are thinking about things that the users don't necessarily care about at all, and shipping early is really the, I don't know, the panacea for that. Just get it out there, and if no one uses it, no one cares about it, you've just saved yourself a ton of time. You didn't change your backend to go for something that no one ended up using anyway. You either incrementally improve it or you kill it. It's done. Sean: If we're thinking about, focusing on the frontend and then just getting it out as quickly as possible, what's the landscape for the low-code tools to just get something working as a backend? You mentioned Airtable. Are there others that you considered? Vic Vijayakumar: Yeah. At the time, what I did was I built an HTML page. I want to say it was Nextras. Yeah. I think it was Nextras. So, it was a Nextras page using react forms, so it was really simple for me to spin it up. And then, I deployed this to Vercel, which was free, and then what it did was it made API calls to... What I don't remember right now, but what I would do probably is I think I sent it to Zapier and... Yeah, that's what it was. I sent it to Zapier and Zapier forwarded this on to Airtable and also forwarded it onto an email service, and then the emails went out that way. I think Airtable has since then added features where you can act on rows and you can have it do things, but it wasn't a thing back then. Zapier is a really nice, very low expensive, very-low cost way for you to be able to take on multiple actions, and you don't have to write API integration code. You don't have to try to deal with the various SDKs. You can just say, "Hey, Zapier, talk to Postmark or something like that and send this email out," and you don't have to try to learn these new APIs. If you decide that you want to replace Airtable with Google Sheets, your frontend application is still only talking to Zapier and you can just switch these things out on the backend. It's very much changing attire on the highway sort of thing. Sean: Yeah, that sounds really nice in terms of development efficiency, and it also ties in to a point that you made in the Remix Conf talk about outsourcing your scope. Can you explain what you meant by that in the talk, and what are the advantages of doing so? Vic Vijayakumar: Yeah. I think you can iterate really, really fast when you outsource scope, and what I mean by that is that, in this case I didn't really spend any time building a filterer or a sorter or any kind of admin UI because I was just taking all of that and I was relying entirely on Zapier's... Not Zapier, Airtable's backend. I was just shoving all of it into Zap... I keep saying Zapier, but it's Airtable... Kept shoving all of it into Airtable's backend, and I could just rely on a billion-dollar company who were dedicated to building a backend UI for me, instead of me needing to do any of that. Even if I had to pay for Airtable at that time, it would still have been 10s of dollars instead of... I'm trying to imagine. It would probably have taken six to eight hours of my time, time that is opportunity cost that I can instead spend with my kids. It would've taken away valuable time for me that I would've been spending building this user interface, and it may never have been as good as just Airtable. I keep saying Airtable here, but just as well, it could be Google Sheets, and when you use something like Zapier, you can mix and match those. You can just switch that out. You can send the data to three different places, if you wanted to. If the school had said, "Oh, we really just prefer working in Excel." Okay, yep. Here you go. Now all your data's in Excel. I'm not going to spend any amount of time actually changing the integration. I'm just going to send the data to a different place, and I think that's just a fascinating way of being able to do all of this work for free, basically, without me needing to hand code any of that stuff. Sean: Yeah, and it sounds like a similar trade off, for example, to using Google for your SSO. You can trust that they've built it right, and authentication is a very complicated thing. Turns out databases are a very complicated thing, too, and Airtable's done that legwork for you. Vic Vijayakumar: People love to rewrite authentication systems when they absolutely... You have no business doing that. A lot of smart people have solved this problem for you already many, many times over. Don't do it. Sean: Okay. Tying it back to the beginning, so you hack on the side and I think a lot of other developers do so, too, so why should people care about using this time to do things that are socially good? Vic Vijayakumar: Sure. I mean, I'm not going to be prescriptive about how you spend your time. Feel free to use your time for whatever it is that you want to do, but my goal in all of this is to tell people that, "Do as little as possible to create value in this world as fast as possible." That's not to say don't build well-engineered systems. That's not it at all, but the faster and cheaper it is for you to do good things and provide value and provide good karma into the world, the easier it is for you to do this, the more likely it is that you're going to do it. It's about reducing, I don't know, the height of the mountain that you need to climb or something like that. There are a lot of old systems in small businesses out there that are getting eaten up by software, getting eaten up by Silicon-Valley-funded software, and you're starting to see these small businesses that are disappearing out of your neighborhoods and your communities because they're being replaced by the Amazons of preschool or whatever. And it's important that a lot of these places can stay.... Not just competitive. I mean, they're not going to be able to compete with Amazon. That's not the point I'm making, it's important for all these places to still provide a good experience for people that are using them, and I think that it is a valuable effort, and I think it's a valiant effort to help them still be competitive, still be able to provide a good experience for your... Whether it they're your produce box that delivers your produce, or whether they're preschool, or whether they're some other thing like that, it's just a way for you to spread good karma around. There's this famous quote that I've seen somewhere that says something about how, "Find a business that is using a fax machine." Oh, yeah, "The key to a successful startup is finding a company that has a lot of profit and a fax machine and to go compete with them." You don't have to do that. You could go help them instead. Everyone doesn't have to build a startup that competes with... I don't know, I don't want to build a preschool competitor. That's not what I'm into, but I can go help them. Sean: Yeah, not everyone's looking to start a company, and programming is this skill that has ability to affect a lot of people in a good way, especially if they can't afford to hire someone to do it, and really, for not huge amount of effort. Yeah, I think- Vic Vijayakumar: Yeah, and everyone is like, "Oh, how can I use my programming skills on the side?" And everyone is like, "Oh, I'm going to make a hobby and I'm going to monetize that hobby." If that's you, good for you, this is not me saying you shouldn't do that at all. But the things that you can do with this skill that you have shouldn't always be to start another business. Sometimes it can be to just help the ones that already exist out there, and these are people that already know what they're doing and you can just help them be better at what they do. I think that's an important thing that sometimes we forget, that we could just help other people. We don't have to do our own thing. Sean: Yeah. There's a lot of ways to use your free time that we don't always talk about. So, for those listening, where can we find you online? Vic Vijayakumar: I am on Twitter as Vic Vijayakumar. I'm also on vicvijayakumar.com, which is my blog that I've probably updated three times this year, but every now and then I still write on there. That is most of it. Sean: Awesome. Well, thanks for joining us today, Vic. It was awesome getting a chance to talk with you. Vic Vijayakumar: Thank you so much. Emily: Hey, this is Emily, one of the producers for Podrocket. I'm so glad you're enjoying this episode. You probably hear this from lots of other podcasts, but we really do appreciate our listeners. Without you, there would be no podcasts, and because of that, it would really help if you could follow us on Apple Podcasts so we can continue to bring you conversations with great devs like Evan Yu and Rich Harris. In return, we'll send you some awesome Podrocket stickers, so check out the show notes on this episode and follow the link to claim your stickers as a small thanks for following us on Apple podcasts.