Django Chat

Listen Notes - Wenbin Fang

Episode Summary

Listen Notes is a search engine for podcasts powered by Django. It’s founder, Wenbin Fang, joins us to talk about building a one-person internet company, prototyping it over a weekend, and how simple tools scale well.

Episode Notes

Episode Transcription

Will Vincent  0:06  

Hello, and welcome to another episode of Django chat weekly podcast on the Django web framework. I'm Will Vincent joined as always by Carlton Gibson. Hi, Carlton. I will. And this week we're joined by women from listen notes. Hi, how are you? I'm good. How are you? I'm good. Thank you for joining us. Yeah. Thanks for coming on with it. We wanted to have you on because we both loved your article on the boring tech behind a one person internet company. And that actually blew up on Hacker News recently, and justifies a lot of the points that Carlton, I try to make around keeping it simple, even at scale. So we'd love to talk to you about how you do that. So for folks who don't know what is listen notes, what's the quick pitch?

 

Wenbin Fang  0:43  

Yeah, so listen, nose is a search engine for podcasts is like Google for a podcast. So you type in keywords and then you can search through the whole internet protocols and episodes. And we also provide API's for developers. If you want to be Polycom at polycast Realty Services just use our API to search podcast to fetch podcast metadata,

 

Carlton Gibson  1:07  

right. So if I want if I wanted to make an app best Django podcasts, I could use your API and I come up with a list of Django podcasts. Django chat will be the number one Django podcast. Listen to that. Probably the one that Yeah.

 

Will Vincent  1:22  

Yeah. Super. One and only. And how long have you been working on this?

 

Wenbin Fang  1:29  

Yeah, so I started this as a side project in early 2017, January 2017. I spent probably one week or so to get a quick prototype for this nose. And then I didn't touch it a codebase for about nine months. Because during the time, I was brand new, my first startup which eventually failed, and in September 2017, I bet the Stop icon found it and I needed to find something good. So I pick up this nose work on you work on your futon, and I incorporated it as a company, one person company. And to now, actually this binds will be the two year anniversary for the sandals. Company. Congratulations

 

Carlton Gibson  2:21  

was really good thank you and you still woman still one person full

 

Wenbin Fang  2:24  

time employee yes one full time employee give me by hire some contractors on off for different things like design content or some fresh front end development, something like that. Yeah.

 

Will Vincent  2:38  

Okay, so one thing I wanted to ask you because for beginners to Python they hear something like I did a prototype in a week or a weekend and it sounds unimaginable so I'm so I wonder if you can recall. So what did that actually involve? I mean, start project like what is a what is a bare bones prototype look like? Yeah, for this because that's something that Yeah, newcomers don't understand. Okay, it can be done.

 

Wenbin Fang  3:00  

Yeah, yeah. So if you look, listen, nose calm today is quite complex. It has a search engine. He has a prayer. This has a lot of things. But back to the beginning, the project requirement was very simple. I just want to search podcast episodes. I see a search bar type in keyword, see the search results as he and I basically start here with the Django template. I believe the command is Django start or something like that. Yeah. So start a sister project. Yes. Federal I started barebone projects, add one view for search for the search page. And I spin up Elasticsearch instance, index data. So basically I have three Digital Ocean instances. One for watching. server running Django, one for Elastic Search, and then one for Postgres database.

 

Will Vincent  4:08  

So how did you get the initial data? Where did that come from? Right to popular so.

 

Wenbin Fang  4:14  

So there are only a few well known podcast directories on internet.

 

Will Vincent  4:20  

Okay, so do you scrape them or something?

 

Wenbin Fang  4:22  

So grab them and then gradually, I build internal tools so I can submit myself. Also podcasters can submit themselves. So let's say today, you start a podcast today. You You need to submit a podcast to somewhere you submit to Spotify to iTunes and the Sonos. So every day we are getting close to 100 podcast submissions from podcasters themselves.

 

Will Vincent  4:51  

So you Alright, so So you started. So simple page, you had your Elastic Search, you had the initial data. So Elastic Search. That's not a That's not a simple thing to spin up on. Clearly you've worked with Elasticsearch before, right?

 

Wenbin Fang  5:04  

Yeah. I, I had the same experience. So basically, I follow some simple notes I took a few years ago, setting it up yet. It was not too difficult. Because I needed before. Will you just run?

 

Carlton Gibson  5:20  

Were you just running like the sing? Yes. Or no. I meant to have the dude, the duplication and the replicas. And that's when it starts to get

 

Wenbin Fang  5:27  

a bit hairy because you know, I have a cluster, but back then it was. Yeah.

 

Will Vincent  5:33  

Okay. Yeah. Okay. It's especially relevant to me, because at Django con this year, I gave a talk on search, talking about basic search, and then with Postgres built in search, but I'm curious, did you ever consider using built in, you know, the full text search in Postgres, or did you already know Elastic Search, so we did it without

 

Wenbin Fang  5:52  

us? Yeah, so I actually use Postgres Full Text Search for my other small side projects. With a small amount of data at the beginning of this descent nose project I did some testing with Postgres Full Text Search. He was very slow if I didn't agree he was very slow so I gave up quickly maybe because of the amount of data that we need to index hmm right it's ingestion speeds

 

Will Vincent  6:22  

yeah cuz it seems like you you're pulling in data but data that's already there isn't gonna change much so you can index that and query it

 

Wenbin Fang  6:30  

know quickly it's changed a lot our changed a lot. The in the index data changed a lot. Well, what because

 

Will Vincent  6:36  

what there's so there's new shows, and then there's new episodes, right? Is it more episodes? What else

 

Wenbin Fang  6:43  

and episodes data podcast data changes all the time? Okay, probably you guys don't don't update your podcast much. But you know, you have the whole internet podcast data at any given time. There are some protocols tend to layer description type. All eyes is feed or do you are all kinds of things?

 

Will Vincent  7:04  

Well, yeah, so I wanted to ask, so in your article from was it may of 2019. You said there's 20 production servers, and many of those are workers. Could you describe the setup of workers you're using to, you know, pull in this information? So,

 

Wenbin Fang  7:17  

so for workers, basically, they are asynchronous processing, test workers. I use celery. See, er, why your audience familiar with them? Yeah.

 

Yeah. So yeah. Waste those sorts of theories.

 

It's a hookup with Sara repeat, which is a schedule like Chrome. Yeah, so we have some schedule the task for for crawling data, pulling data from ISIS feed to a new resource. And Sara Lee also handles our async task mostly compute intensive tasks, like sending emails, resizing images, doing heavy database queries, things like that.

 

Will Vincent  8:13  

Yeah, yeah. Well, I like that this is I mean, your use case is such a, it's complex, but it's also simple and that you can understand that it's, you know, it's not tons and tons of workers, it's, you know, emails and checking for changes to the podcast directories. So it makes a lot of sense. So. So how much man and I know you have all sorts of actually could you talk about so you have monitoring involved? you've listed a whole bunch of tools, right? So because otherwise you couldn't sleep at night? Well, how did you think about your How did you baby step from that? Right? Like, if you recall, like, what did you start with? And then now obviously, you have a lot of monitoring going on. Okay. How would you tell yourself to do it, you know, someone saying, okay, which way do I start with, right? Because there's so many you can add and

 

Wenbin Fang  8:56  

yeah, so basically, we set out more or less team to give us confidence about the health of the entire system. Right? So high level, you need to know the website is up. API is out. Yeah, yeah. So for moratorium, I use data dog Hmm. And data dog is connecting to Pedro duty for alerting. And for para dog. We continuously pm the website and API endpoint and check the response to see is 200 is no 500. Right. And if you know 200, Jordans, probably something broken and I will get a lot. So however you need to have this kind of stuff. But for individual components, you also need to monitor some matrix life or Postgres knees will monitor a few things for radius and a few things. mq Elastic Search? Yeah ETL for them? I O have one or two others associated?

 

Will Vincent  10:07  

Yeah, yeah. And I think you mentioned for Django itself use rhobar. Is that still the tool that you like to use? Yes.

 

Wenbin Fang  10:14  

Yes. So I gave the stack trace the full stack trace if something wrong. Yeah.

 

Will Vincent  10:20  

Yeah. Well, so Carlton and I spoke and we wanted to ask you about so you sort of proudly don't use Docker at all. And Carlson is big on this wagon and

 

No, okay, make the case.

 

Carlton Gibson  10:35  

My case, my case is simply the Docker repositories

 

Will Vincent  10:37  

95% relevant like,

 

Carlton Gibson  10:41  

right, but for 95% of Django applications out there. You don't need all this highfalutin container. You want a VM and you want to bang your application on it and you run a run it the good old fashioned simple way, because that VM will never go down. That will. You'll never have Portage. You'll never have network issues. Like you don't need all this massive containerization stuff until you're scaling up to something much bigger. And look at what woman's doing single handedly. Right. So that would be the way I'd phrase it. What's your experience? So

 

Will Vincent  11:17  

I was gonna ask if it if it would be different if you had a team of developers because to me, that's, in some ways, the biggest advantage is on a team having the same local setup. Separate from Yeah, yeah. What are your thoughts? Yeah.

 

Wenbin Fang  11:32  

So I don't use Docker because it's unnecessary for my situation. For the workload. I'm running for the team. I have basically it's just me as a back end engineer, so Docker is good to to provide a standardized that container is about it's very portable. So you can run Docker container on your local Dave, you can run the same content, in stages in production. You can start In a CI with Docker containers, it's very convenient. It's very easy to scale up and down for for my situation where I run all these servers for many, many months, so I don't need to scale up and down over and I don't have team so it's just me I basically set out everything and I don't need standardization for other people.

 

Carlton Gibson  12:30  

I mean maybe one use case you might have say you what you mentioned rabbit and blue well maybe you don't want to install the whole Erlang VM and all the rest of it and to use a container there to locally use rabbit mq Britt while you're developing or testing Hmm, that seems that'd be that's one useful case where you know, you don't need to go the whole hog with Docker. You don't have to jump into Yeah, Kubernetes or whatever you like to use it a bit.

 

Wenbin Fang  12:56  

Yeah. So for my previous job as a preferred This guy walked in next door, a local social network website. Yeah. And in 2014 I believe he was me who introduced Docker to the company. And

 

so when they come on

 

maybe 2013, something like that. Yeah. Okay. Yeah.

 

Carlton Gibson  13:20  

So

 

Wenbin Fang  13:22  

for me the size company for me the size staff with 10s of engineers. Yeah, we stalker is nice. So basically, we standardize the dev environment for all the engineers with Docker containers. And so it's easy to set up onboarding is easy. Yeah. Because onboarding to us.

 

Carlton Gibson  13:41  

Yeah, you know, that's it, right? Yeah. I mean, this is where but a few years ago, people were using vagrant and VMs. Right. So because you get that you get the development VM and just be able to vagrant up and it would run and but it's slow and heavy. I'm using beggars much nicer. Sorry, I'm

 

Wenbin Fang  13:57  

using vagrant, right okay. For this

 

Carlton Gibson  14:00  

No, but I still use vogon loads because I'm a big advocate of VMs. And Docker is quicker and lighter. And you know, yep. I can see why people like it for the development in But

 

Will Vincent  14:12  

yeah, I want to deploy became deployment. So you're on AWS. Is that right? Yep. Now I assume you have previous experience, because AWS is not the easiest thing to start with. I'm curious of you talking about your experience, maybe with at AWS versus other ones you've used professionally.

 

Wenbin Fang  14:31  

Yeah. So I do I mentioned as I spin up three Digital Ocean. So yeah, you said that, yes, that they call the instance properties? I don't because because it's very lightweight or cheap.

 

Will Vincent  14:45  

$5.

 

Wenbin Fang  14:46  

Yeah, or whatever $5 provides. I had three instances for listeners as a side project. I use the same setup for many months. Maybe one year after I started this side projects, I might go Ready to enter as the reason was very, very simple because I studied work in we work, and we will give you $5,000 at house credit. And then I migrated to AWS. I mostly just use easy to instance. Okay, I don't want to have a vendor lock in with erase.

 

Yeah, I just use easy to instance. Anything else? Oh, I also use a s3. Right? Yeah, I think in s3 and CloudFront. For your for your front end.

 

Will Vincent  15:39  

Yeah. Yeah. Well, I guess that's a

 

Carlton Gibson  15:42  

begin that's very, that's very sensible, right. Because Amazon, the, I mean, like each of the big services, they've got, you know, 5060 different things that you could use if you want to, but like if you just focus on s3, or just focus on a ECU, or, you know, two or three of the courses Service, I get to know those. Yeah, it's not any more complex than any other day. It's just that they've also got quick site and you know, these million AI offerings, and do you need all of them?

 

Wenbin Fang  16:11  

No for now.

 

Will Vincent  16:13  

So the front end. So I mean, you have, you know, for a single person, startup, I mean, you're now running API's and using, I believe, react and the full bit. Can you talk about that transition? Yes. At what point you switched over to the to using a dedicated front end

 

Wenbin Fang  16:27  

API at the very beginning. I started to you.

 

Will Vincent  16:30  

Okay. Oh, wow. Yes. Good for you. So,

 

Wenbin Fang  16:33  

so basically Django.

 

So so so so I did, both backend rendering and our front end rendering for HTML. So basically, Django render renders the boilerplate HTML, and then react render components inside the HTML page.

 

Will Vincent  16:55  

Right. But so that first week prototype, you also have it up with react and Django rest framework. Yeah, yeah, yeah. Yeah. That's awesome. No, I'm just trying to think that's, that's gonna you know, it's it's sort of a something you can do when you have experience listeners, you can you can wire these things up, but I know that all those things sound like I just because I get so many questions about all that it's, um, it takes some practice, but once you get to know the steps, right, you're sort of duplicating your own steps right for just do my how I hook in react.

 

Wenbin Fang  17:30  

Yeah. Oh, on GitHub, you can find me the boiler play starters. So basically, you would run one command and then it gives you the project

 

Will Vincent  17:41  

or the play for react. You're saying,

 

Wenbin Fang  17:43  

for the editor for Django for the whole project set. Have we did you use cookie cutter which which one are you referring to? I don't remember. I use some. I don't even want to say that. I said that. It's not there. You can find a lot of such tools. If you want to get started. Quickly.

 

Will Vincent  18:04  

Yeah. Well, I always wonder how, how good they are and how much you understand them. Because I mean, you can use them. But then if you don't know what's going on one,

 

Wenbin Fang  18:13  

yeah, one downside using such tools is you don't you don't go very deep into the mechanics and all these things. Yeah. But

 

Will Vincent  18:22  

again, it's that it's that first prototype versus you know what you end up with a two years later, right? Yeah, well in it and just in terms of Django frameworks, cookie cutter is probably the top one by far. I mean, I have my own one Django axe that's simpler by design. But I'm always curious if there's others out there I'm not aware of because there's actually a Django app. So my own when is it this middle ground where it's basically just a basic site with templates and authentication and custom user model. But I could make it how I start my projects now, which would be a lot more complex. It would be sort of become cookie cutter, but I feel like that was make it less relevant to beginners who just want something up and going. So there is sort of this tension, you know, between Yeah, simple and then what you would actually use, you know, because cookie cutter is fantastic, but it's, it's, you need to know what you're doing to use it.

 

Wenbin Fang  19:17  

Mm hmm. Yep.

 

Will Vincent  19:18  

Okay, so the so now something near and dear to Carlton's heart. So the API, can you talk about managing performance on the API and any sort of steps you've made along the way to serve all the data that you do?

 

Wenbin Fang  19:31  

All right. So

 

I'm sorry, I'm going back to buy THROUGH THROUGH THROUGH memory, how I started API. So okay, so as I said, I started dissonance as a side project, and then I work on a full time studying in September 2017. And then after I'd run this website for a couple of binds are so I got some requests from developers asking If I provide API's, and so that was the end of 2017, I was not sure whether API can be a viable business or whether it deserves my time, right? So I try to do a quick prototype, quick and dirty prototype. But I also want to be able to charge people for using API. So I did some googling, and I found an API marketplace called monster ape. Ma sh. p. Yeah, it doesn't exist anymore. It was acquired by a startup by rape, called rapid API. So every brand new This is grapey. The API right now, is there is this by with a different name. Okay, so I found this API marketplace mash ape is basically your handles. The pay then handles API analytics. You've made yours how many API requests User API users use during the billing cycle. So they can do to a period calculation and the handles on edge cases, or year for developer, subscribe to your API plan and unsubscribe and then subscribe again.

 

Will Vincent  21:17  

Yeah, no, that's fantastic.

 

Wenbin Fang  21:18  

I did get declined. Essentially, I didn't want to deal with these things. Okay, so good. The handle all these things. So basically, what I needed to do was to provide a few API endpoints, and I hook up with their service. Okay, sounds easy. So I spent about two hours using Django waste framework, building three endpoints API endpoints, one for search, one for fetching polycast metadata by ID one for fetching episode metadata by ID visit. So I think these are the minimum requirements for building a polygon Hey, if you want to use my API, okay, so after two hours, I had this API business running, and people slowly sign up. I didn't touch the API for about one year. You know, API business has long cycle. Today, someone discovered this another API good. They sign up. They spend six months building the app. They spend another six months

 

Will Vincent  22:25  

marketing. Right, right,

 

Wenbin Fang  22:27  

maybe another six months to gain some traction. And then two or three years later, I start to collect. So yeah, so if you're using a slow, I, so yeah, I didn't I didn't put up any effort on API for about one year. So the end of 2018. Well, I saw some serious usage of API. So 10s of a sign up by the Pauline's and some paid users. So I decided to To replace the API API for the API gateway stuff, so I, I wanted to build my own Pavan, my own API analytics stuff. So they will be API v2. So I built this whole scene in the beginning of this year was running now, how long did I mean that? That sounds

 

Will Vincent  23:21  

like a lot of work. Was that three months, three months, three months.

 

Wenbin Fang  23:25  

So, okay, so that's a big commit. So basically, I prefer building things up making incremental changes, small incremental changes. So three bytes for me is a huge project is unusual.

 

Will Vincent  23:40  

Yeah, well, I like buy hydrocodone. I mean, I think that's a brilliant philosophy, though, to use an off the shelf tool. Confirm that there's market validation before you spend the time because, you know, that's the curse of engineers is it's fun to build your own. everything right, but usually not the best use of time unless it's a proven need, right? Wow. Man, I'm so impressed by that. So so the business itself now so how does in broad strokes so you have the API that you charge for you have ads on the site itself? How do you think about the business kind of where now and where you want it to be long term?

 

Wenbin Fang  24:15  

So so right now is the kind of sustainable now for one person business.

 

I'm doing fine.

 

It's not going out of business any sooner. So but I yeah, I start to see in the future, what's the long term? So basically, I saw this I want to send notice to make protocols accessible in journal. So line, so let me explain a bit. So how many people in the world right now? Probably a billion close to a billion. How many people listen to podcast today? This then 100 million, maybe there's 50 million So let's do a lot of room to grow for podcasts or spoken audio in general. So we human beings get information through eyes and through ears. Yeah, most big companies nowadays are basically focused on screen time. Yeah, getting through eyes.

 

I think audio has huge potential

 

in the future you know some some companies like a poll, they're making a pause. Amazon they're making a call. These are all voice first products. My instinct Thompson is audio could be something. Yeah. If you can, you can help people find audio accountants. Maybe you will be a good business. Yeah. And that is there. Let's come back to this and knows how can this know how podcasts become accessible? So we don't really So at this point, we don't do apps. We don't we don't do our own contents is a website. website is easy for people to discover to share. Right? And especially for international users. And also we provide API's, so developers can quickly build protocols related service using the API, they don't need to worry about a back end. And this can somehow help the innovation in the application space for polakovs making protocols more accessible.

 

Will Vincent  26:34  

Yeah, this is why sent to you. I mean, speaking of international, do you use any of the International tools within Django to I mean, I see it in English, but are you what do you have other languages then you have support for?

 

Wenbin Fang  26:48  

Yes, we support more than 20 languages. If you go to website, you scroll down to the bottom, you'll see that you can switch to different languages. Oh my goodness, yeah.

 

Will Vincent  26:59  

Are you using They're built in built in Django tools for this or what do you

 

Wenbin Fang  27:02  

Yes, yes, yes, I use the built in Django. I 18. n stuff is very good. I'm very satisfied with with Django for 40 years. So basically, I generate a bunch of Django po files.

 

And then I also asked for translator,

 

Carlton Gibson  27:22  

yes. translate into different languages. Yep. Very easy. And is do you use a cert? Do you use a service for that? Because there are I know there are services that offer their find your translators, or do you have to have a relationship within individual translators?

 

Wenbin Fang  27:37  

Ah, I use a service called a name. It's called 20 effects. It is later service.

 

I can send you the link for the show notes. Okay, we put it in the

 

Carlton Gibson  27:49  

show notes. I mean, it's interesting because lots of people

 

Wenbin Fang  27:52  

basically the service provides a translation editor. So you can you can see that you and translate your text side by side and use eg to translate. And they also has have partnership with some translation agencies. So you can directly pay those agencies on a service. But for certain languages that I cannot find translators later, so I need to post on Upwork to find individuals who say,

 

Will Vincent  28:26  

yeah, yeah, well, congratulations on all those languages. I mean, I was when I was in San Francisco, I worked at a company called Quizlet. And I worked a lot on the Oh, yeah, translation, which was literally we would get, you know, a Chinese teacher in San Francisco to translate the site it you know, it was very, we found a couple users and then we scaled up from there. And it's, it's no easy thing. So it's impressive that you have all these language and it takes a Yeah, the, the maintenance, right. I mean, that's sort of the, I mean, like, for example, I was reading through like, I think I caught a typo in one of your pages. I forget if but You know if that were a word that would be something then in every language next time you run through, you have to

 

Wenbin Fang  29:04  

translate suddenly, suddenly. Yeah. Yeah. Is it far from perfect? Yes.

 

Will Vincent  29:10  

But still, it's nice. It's still nice for Jesse aside in your own language, obviously. I mean, yeah, I'm certainly guilty of assuming everything's in English. So.

 

Wenbin Fang  29:22  

Wow. Yeah. I'm very happy to see international users using Museo de Santos. And,

 

Carlton Gibson  29:31  

yeah, one thing I did want to ask is, you know, what versions? Are you up to date? Do you have python 3.7 3.8. This week? Are you on Django? 2.2. So I'm using Django 2.1 and Python 3.63 point 6.8. Okay, so, strings.

 

Wenbin Fang  29:49  

Yeah. I started this a node in early 2017. So back then the latest version was 9.1 point nine, I believe. Right? I update the price along the way. 1.9 to 2.0 and 2.0 to 2.1 for jenko.

 

Carlton Gibson  30:07  

And have you have you found that process? Did you Was it easy? Did you hit that is it

 

Wenbin Fang  30:13  

so I basically

 

err Okay, it's a couple days every few months to upgrade major software components in the whole test deck. So primarily, Ubuntu, Django, Postgres, Elasticsearch. I like to keep the keep using almost the latest version. No, that is one maybe second to the latest one. Yeah. And it's, I always say it's a bit like me, you know, it's servicing your car. It's doing the work to keep your car running you know, you've got to change the tires and maintenance is important, is not always build buildings shiny, new features you need to invest time to Then this whole thing. Yeah, for each upgrade, basically I will. So basically I use Ansible to do the server provisioning, I version control Ansible configuration files. For each upgrade, I bump the version number in Ansible configuration files. And I will test on my local Dave inside vagrant and VirtualBox. This is where staging and if things go well, okay, I launched new production instances, changing the laws, load balancers setting pointing to new servers, and I will keep all those instances running for a couple of days and then terminated Yeah, pretty standard. Yeah,

 

Carlton Gibson  31:44  

yeah, yeah, no, but like done well and done professionally. And that's that's exactly the way it is. I like how you're building it in vagrant first and then putting it to staging and then into production. It's just switch. Well, I was gonna ask how do you handle them like when you need to do a database migration?

 

Wenbin Fang  31:59  

Oh,

 

Carlton Gibson  32:00  

changes the structure the data, and then you want to migrate it from staging to say that so you're going to add a new field or how would you How would you handle a more complicated migration? You mean, something I schema migration at noon coordinating index? Yeah, where you need where perhaps you need the old version to work back? And how do you handle that? Or what whatever. If I need to roll back? How do you? How do you How is what's your strategy there?

 

Wenbin Fang  32:26  

Wow, this is a very broad topic, because there, I basically keep keep some notes about about database operations. And then if I need to add a new column to a big table, and then if I need to add index to a big table, something I like. So most the Django my migration is enough for migrating the schemas. Sometimes I need to modify the migration script To put in some raw SQL. Yeah, yeah. I don't see operation concurrent index. Something.

 

Will Vincent  33:08  

Yeah. Well, I also I want to just in terms of forming a business, I think the fact that you've been around only two years, I mean, looking at your list. I mean, you're, you use stripe Atlas to incorporate. I mean, you must have been one of the very first users for that. Right. I think that. Yeah. I mean, so did you consider, you know, a C Corp versus an LLC? I mean, because if you're so you know, obviously, C Corp is easier to bring on new people, but a little

 

Wenbin Fang  33:32  

here. We are C Corp. We are C Corp. Yeah. Because we're because stripe. Analysts only support here. SQL back then. Yeah, maybe they are supposed to be maybe they're supposed to see right now. But back then is only SQL.

 

Will Vincent  33:49  

Right. All right, because there's, I mean, it depends on the business, but there's can be some tax advantages to an LLC. But if you want to have employees or sell yourself, you have to To be a secret I Quizlet We are an LLC for a long time at we were top hundred website and still an LLC. So it was interesting working with the CEO in that transition, but it's easier to go from LLC to a C Corp than back. But yeah, and I see also I mean so brax charge card. people outside of San Francisco may not know what that is. But that sounds also like a smart hack for a small business. Can you explain what what that is?

 

Wenbin Fang  34:27  

Well, if you live in San Francisco, you will see breaks. Bo Bo Bo is everywhere. Yeah. Yeah, so I i had i have no brakes cart, because they they also give me 5000 AWS credit on top of whatever credit I get.

 

Will Vincent  34:47  

Right will be very nice because you know, stripe now is offering business loans and I assume I don't think they have a credit card but I'm sure they'll that's coming. It Yeah, it's it. Interesting because it makes sense. If you're striking That you, you have more mental dead data than you'd ever want. Yep. And yeah, you know, running these businesses, right? I mean, I mean makes me think I mean, I, I have my own book publishing business. And I, you know, I just have a simple Bank of America credit card and I have to spend thousands of dollars on stuff and, you know, I could use, maybe I should rethink this. But maybe that's an advantage being in San Francisco, you're surrounded by these best practices or while you're surrounded by these good offers, I should say, right? For all the need. I don't know whether your space previous Yeah, right. So a lot of people out there watching right here.

 

Carlton Gibson  35:36  

Yeah. Interesting. From an ops point of view, I always hear this sort of idea that your credit card is the single point of failure. Yeah, cuz you've got your load balancer, you've got your multiple servers, but if your credit card got your credit card,

 

Will Vincent  35:49  

go down. You're gonna have to,

 

Wenbin Fang  35:50  

yeah, I write I have multiple credit cards. Actually, when I started this and knows I posted a question on Hacker News asked What credit cards? Do people use something? Because I found it on the internet, you can find a lot of very high level startup advice, or you need to go to McAfee, you need to do these two dates. They are very high level very abstract. In terms of conquering devices, okay, where do you get an office? Where do you get credit card? Well, so which bank is better for small business? Something like that? It's very hard to find answers.

 

Will Vincent  36:28  

Yeah, you sort of have to ask someone you trust. who's already done it.

 

Wenbin Fang  36:32  

Yeah.

 

Will Vincent  36:34  

Yeah. Well, I mean, that's something that I mean, so you've been doing this over two years, I mean, for me last year, so I've been now doing books and teaching full time and I probably had to spend two or three months just on my business setup last fall, which was deeply frustrating, but you know, many of these things you list here, you know, setting up my bank accounts, you know, credit cards, all this stuff is just, you know, you need to do bookkeeping. Yeah, bookkeeping, I mean, you know, I think like you using QuickBooks but then so it's it's a, it's a good problem to have, but it it does often feel like you do kind of everything but coding or everything but your business just to keep it going. Yeah, I wonder, you know, for you now,

 

I

 

don't feel like you have things sufficiently automated now that you've invested in all these tools or is it No,

 

Wenbin Fang  37:25  

no. So actually actually,

 

running internet business coding engineering is just a very small part of most things you do is is not engineering is no coding. So engineering is deterministic, right? nowadays is 2019. Now, if you want to build something, website do and if you can do it, you can do yourself or you can outsource to hire contractors to build you. But business is very deterministic. There's no guarantee that you follow certain playbook, you can make money. Marketing is hard. I'm still figuring how to do marketing. Yeah. So yeah, I spent and a lot of there are a lot of manual operational tasks you need to do. For example, every day I spend one third of my time just replying to email. You know, I was

 

Will Vincent  38:22  

complaining to Carlton about this earlier this morning. I mean, how do you Yeah, it's like, you need to have the information and you want to engage with your users. But, you know, it's like, what did I do today? I just looked at I just respond to email. It's, it's, it's

 

Wenbin Fang  38:37  

totally Frank, and I quite enjoy the process of defining emails. Hello to users.

 

Will Vincent  38:44  

Yeah, that's good. Well, good. So what's what's the positive take on it because you learn something from it, or it's because it's personal like Yeah,

 

Wenbin Fang  38:50  

sure. Yeah. Yeah. Well, I feel I am opening a small restaurant and I know all my customers. They can talk to me Never very easy. So if you go to website, go to the Sonos, you can see my email address is on every page about it. So anyone can reach me, they can answer for me directly. And typically they Okay, they can reply in a few minutes. If I email very fast.

 

Carlton Gibson  39:20  

Yeah, that's the kind of thing that really builds a business right? Because they have a connection with and yeah, you can offer service which no way some giant competitor.

 

Wenbin Fang  39:30  

Personally, I feel very frustrated to deal with face these companies. Yeah. It because I use a lot of third party services. As you can see, if something something something goes wrong, I need to find a contact. Yeah, it's typically buried very deep. And you when you send email to the UK ticket, yeah. Oh, they assign a ticket to you and you reference to this ticket on 911 data, you get a response from them. It's very frustrating.

 

Will Vincent  40:04  

Yeah, no, I mean, that's right. And then when something goes wrong or competitors shows up, you don't feel any loyalty because there's no person on the other end of the line. And I guess to your service, it's it. You know, once you have a customer, they're probably going to stay or grow, which is nice. I mean, I hope so. Yeah. Well, I mean, it's not it's not a purely transactional thing. You know, it's not you're not selling, you know, a book where someone buys it, and then they leave almost for forever. So you Yeah, yeah. No, that's great. I mean, that's the kind of things that it's hard to, you know, as engineers, it's, it's hard to quantify the value of responding to emails and engaging with people but it Yeah, I think it has all these incredible benefits. I mean, because I'm constantly being advised by some of my business friends who I, you know, say I spent a lot of time on email. They're like, what are you doing, you know, hire someone else to do it for you. And maybe there's some truth but I think it's, it keeps you in touch with your your your Your users say,

 

Wenbin Fang  41:01  

I don't want to outsource this customer support too early to someone else I want to do in person. Yeah. And so in terms of other operational tasks, I built a bunch of internal tools into Slack, Tom using slack. I don't talk to human beings on slack. On Slack, I get notifications when some events hunting die, some podcasters they want to delete their podcast from our database. Okay, okay, I get a lot and I can do everything on slack. I can run commands and the podcast is deleted. I can look out well but a particular podcast when new podcast is submitted to listen knows I can notification from slack. I can see the basic information for the podcast, the podcast images, the podcast title on a sample audio so I can get a sense whether this is legal policy. costs and approve like they are. So if I am on a goal I am on vacation or something I can do work on my phone because I can use a slack

 

Will Vincent  42:13  

I was just gonna ask how you how you do boundaries because you know I mean all three of us to a degree do our our run single person companies and that is always the problem is yeah you never really turn off but it sounds like you've automated slack so you you can relax because you don't have to worry about it I guess as much but you're still getting

 

Wenbin Fang  42:32  

Yeah, I still need to use a human judgment for certain thing. I someone want to delete a podcast. Well, I need to make sure this is the legit person. It's not it's not a random person on the on the internet who want to delete a Joe Rogan's podcast. Well, I cannot do that.

 

So yeah,

 

Carlton Gibson  42:56  

yeah. I like how you've used slack for that though. It's it's kind of like a bash shell but uses

 

Wenbin Fang  43:04  

that yes.

 

Will Vincent  43:06  

I mean, because I sort of pride myself on not using slack for anything, but I guess if you're used to it, but this actually sounds like maybe a good use case. And you know, you probably had used it your startup before. So

 

Carlton Gibson  43:16  

Well, the problem the problem with slack is

 

Will Vincent  43:19  

exactly right.

 

Wenbin Fang  43:21  

I'm the only human being on my Slack channel.

 

Will Vincent  43:24  

Right, right. That's kind of that's kind of do you like that? Yeah. Are there any any last things you want to mention or talk about before we before we wrap up? I mean, I'm so impressed by what you've built single handily. Here. Thank you. Yeah.

 

Wenbin Fang  43:42  

If you haven't listened to podcast yet, listen to podcast. I nowadays I can more information from podcast than from other media format. I put on my AOL pause all day long. I listen to podcasts all day long. So on Lisa knows, I I have a playlist feature so you can curate episodes to playlist. You don't need to subscribe to podcasts, you can just add individual episodes to various. So I have a master playlist with 2500 episodes in the over the past two years. So I listen to a lot of podcasts you can subscribe to my to my parodies if you want.

 

Will Vincent  44:28  

Oh fantastic. Yeah. Carlton, anything you want to add?

 

Carlton Gibson  44:32  

No, that's super I just, you know, bought a Super Chat. I mean, it's lovely to go talk with you to go through your stack how you're running it and, you know, really nice and realistic and grounded in it's just you and you've got you're able to run such actually quite a big installation single handedly. That's Thank you.

 

Will Vincent  44:49  

Thank you. Perfect. It's just you so you remember these steps because sometimes we interview people at bigger companies and they weren't around or in decide. So they can't speak to that process of you know from predator. Type two. Yeah to scale is

 

Wenbin Fang  45:04  

the vantage of me to Ian's custom support. When people ask questions, I can explain why I do this. What's the history of this particular feature? why I've made this decision? What are some edge cases that we don't handle right now? But later we'll be built in to buy something.

 

Will Vincent  45:22  

Right? Well, maybe as a last question, so what what should people look forward to what are some new products or features that are coming on listen notes in the future that you want to talk about.

 

Wenbin Fang  45:36  

So most of time, I don't build new new features that big new features most of the time is just to iterate on existing features, add new stuffs. It's quite boring in some people's eyes. Let me give you one example. Now, a search engine must have some field of such a field. Your searches when you search, you may want to fine tune the search results. Right? Okay, how many search filters does Google have? You go to Google's Advanced Search page, you can see a lot. Let's say there are 50 different filters, right? How many filters does this house have today? maybe seven. Okay. 43 to call. So, so basically, I saw that today I do a new search filter. Two weeks later, I build another one. Well, this kind of thing. Don't need don't don't move the needle much. is no is no lie. IP will filter and then the word chair for double is no, like, this is a process. It's a long process. You keep improving the service incrementally. And yeah. Making your user happy and making it useful. Yeah, yeah.

 

Carlton Gibson  46:56  

Well, the key point is you want people to come back they want you want people to keep using it. And then tell their friends and those incremental improvements are what's gonna make them stay and recommend you Right,

 

Wenbin Fang  47:05  

right.

 

Will Vincent  47:06  

Yeah, yep. super fantastic. Thank you so much for taking the time today, we're going to have show notes for all the things we talked about, especially the article you wrote, which is really fantastic run through over one person startup. So thank you again. Thank you.

 

Wenbin Fang  47:21  

It's nice talking to

 

Carlton Gibson  47:22  

thanks for coming on the show

 

by taking the other