James (00:07): I did, I spent James (00:11): two and a half hours inside of Calca and I'm not sure if I learned anything today. Two and a half Frank (00:18): hours inside. Calca well I hope James, that that was recorded for posterity cause that sounds absolutely incredible. James (00:25): It may have been the single single greatest advertisement for Calca. Yes. Frank (00:31): Awesome. Awesome, awesome, awesome. Using my app. I love it when people actually use my apps. I'm cool. Two and a half hours. Um, well, you know, the truth is I get lost in Calca all the time, so you're not actually freaking me out too much with that number. It's so easy. I mean it's like playing around James (00:50): Excel, just playing with numbers and seeing what happens. It truly is. And in fact it was fun because I was in doing it live on Twitch and which then everybody was like, what if you do this? What if you do this? And we just added amount of mass amounts of data into this file, which was very fun and it's hard to keep track of because one, I don't really know how to use Calca and uh, and uh, you know, uh, it was just a lot of math and it was quite fun and we did figure out a number together as a group and in fact, almost everybody that came into the chat was like, what is that? What is that thing? Everything I said, I guess, I think I dropped Calcutta at IO about a billion times. I do think you're going to see a big sales spike, which may not be the same for my application Island tracker. And that's what I want to talk about today because I'm in a dilemma, Frank, which is I have a paid app, which you also have many paid apps. And the question that I can't seem to get over is a, should I make it freemium and if I make it freemium, am I about to go in debt? Frank (01:53): No, you mean we have a real subject today. I thought we were just gonna do another 30 minute advertisement for Coca. That would have been kind of awesome. No. Okay. Well, uh, let me start by saying, uh, that sounds like a really boring accounting subject so I can't wait for it. But I do love that you are doing like group calculations, group accounting, that's so much fun because you can easily, um, make a mistake when doing this kind of stuff. You can fool yourself, you can not think it through all the way. So having, I don't know what like five, six people watching over your back reporting on you. That's kind of awesome. And I have a funny little story about that. So I totally stole the name of this app from a book. And the word that it means is kind of a group calculation like that, a bunch of people getting together and figuring something out. So you actually use the app a hundred percent to its name. It makes me proud. James (02:46): Wow. I like that. It's also one of the eight districts of the provenance of Calca in Peru. Frank (02:55): Hm. And it has something to do with either a model or jeans and Mexico, like the Twitter for Mexican Kalka is weird. Um, someone has to explain that one to me someday. Yeah, I think it's a Kalka protein. Uh, okay. I don't know. I just typed in Calca and you're, you were the first results by the way, so that's, that's cool. Um, I kind of stole it from Neil Stevenson and the book and a thumb. Don't tell him I won't, I don't know if the meal is going to come after you, so. Okay. I hope not. I so love you Neil. We love you. There's no crash. Um, so, so real stuff. Money. Okay. So you have released this app. I guess this is part four of the four-part turnip. Sonya. It's a soccer now. So now this is the part where James is starting to freak out about server costs. I get you, man. Like I, you know, I'm on record. I hate servers. One of the reasons I hate them, number one is maintenance, but number two is cost. So I get you, um, where to begin here. So what you have right now is a single payment app. So someone pays for it once and then for the rest of eternity you are going to pay to run a server. Is that right? James (04:15): That is correct. And additionally, that user only is costing me money potentially if they use the application. And this is also an application that goes along with a video game that probably has a lifespan of X months of popularity in which there'll be diehards that use it, but there's a peak, you know what I mean? Like this actual application has a life span associated. Frank (04:44): Interesting. This is really clever. I like it. Squeeze it for all it's worth and then dump it when, uh, when the long tail hits, James (04:53): yeah, you would see a spike hopefully of users and over time that the new users are going to, ideally you're still adding some new users, but you're going to see like a reduction of users because they're done with the game. You know, why, why are they going to use the application? Frank (05:10): Okay. Okay. Um, right. So I guess that that means you could get away with, um, the one time costs. But it's, I think when you're running a server, it's pretty obvious you should be charging a subscription fee. So are you thinking about doing that? James (05:26): So here's what I'm thinking. So with the application you are correct. It's a fixed cost. Two 99, there have been people that have bought it, have been liking it. I took your recommendations, the latest version has the, you know, um, star popup screen after you use the app so many times. So I did a lot of things, a lot of optimizations and I put in the new version, a little button that says Island tracker pro Frank and every user, every paid user already Island tracker pro. And because you already paid for it. And I've thought about, I thought about going to have to make like a platinum enterprise tier next. Cause there's nowhere to go once you use a pro. Pro is the good one, right? Uh, yeah. Okay. So you, um, what's the grandfathered people into the pro plan? Basically? Yeah, that's how much, okay. James (06:21): So you haven't done it. This is all in your mind right now. So everything I've told you to this point has happened, right? So it's still paid. The latest version has that, but I have a little pro flag in there and all it says is thank you for buying it and you'll have a lifetime pro subscription basically. Um, because you already bought it, you know, that's sort of how it's redundant. Okay. Yeah, I'm prepping, I'm prepping, I'm prepping. Okay. So I'm just confused. Well, let me explain my confusion real quick. So the normal model is free app. People pay for the pro version as a of features. Then maybe there's other little ad-ons along the way. I think that's kind of the standard model for free apps these days. But you are a paid app. Um, I already said that. I want you on a subscription model and then you just took everyone who already has your app and didn't put them on a subscription model but fake put them on a subscription model. James (07:14): No subscription model. The subscription models aren't going to matter for this app because you put a, if you put a yearly subscription into the application, you're not going to see any renewals after a year. It just, the complexity of adding a yearly subscription I don't think is worth it. Got it. So you're doing a one time upgrade pro and app purchase thing. That is my idea. So the idea here is that right now everybody has pro and a pro means that you can sync X, you know 20 friends, you can have up to 20 friends and you can sync some additional statistics and you get premium ELL support, whatever that means, right? And maybe add new features and you get pro features. So the thought in my mind was what if I make it free and I then grandfather everybody into pro and then make pro two 99 and what free people would get is only two friends. James (08:08): So they can only add two friends and that's it. And then they have to upgrade to pro. So like you're like, I'm using the app, I had some friends and then boom, I hit a wall and now I got to, you know, upgrade to pro for two 99 and additionally some other features that are, you know, nifty that are pro features basically you wouldn't get access to, but you'd still be able to use the application and that because the real draw of this application, this, the sucking it in that you really would want to use this application is that friends part of it, right? Which is your friends are on the platform, right? If only you are on Facebook and nobody else is on Facebook, you're probably not going to use Facebook. You know, you're not gonna use Facebook anyways, but you know, it's because of that, that mesh network. So the idea is if we can say now everybody can it for free and you can make those friend connections, ideally more people upgrade to pro than would have bought it. But at the same time, that means you have a lot more people using the app, which means your server costs are a lot more than if you only kept it paid. Frank (09:14): Ah ha ha. Now we're getting back around to the original topic I guess. But first I want to say this is good. I actually like you going free number one because I want you to be an experiment for me and I want to see, I'm looking forward to part five of the show. Um, but also there's a lot of reasons. So you mentioned the network effect and it's, I think it's really important for an app like yours cause it's the best kind of free marketing where you have a networking app and friends can tell, friends can tell, friends can tell friends. It's kind of an ideal situation for a grassroots kind of growth and you have to kick it and you have to make it easy for that network to be created. And then you have to get a little bit lucky. But if you are, it's a great, wonderful, uh, effect network effect. What a great effect. Plus, let me just say, uh, every game on the app store is free now. It's just people don't ever pay upfront for games. And so I'm starting to think that like apps that support games should probably also follow that model of having that free version, uh, to start things off. James (10:24): Yeah, that's sort of what I'm going with. And additionally, the, the hard part now is that animal crossing is very, very popular. Here's the other thing to kick in there is animal crossing. It's very, very popular and there's a lot of animal crossings applications on the app store. Many of them are companion applications. There are a lot of turnip predictors and my app does have a turnip predictor, but my core functionality that's unique is that you can share those prices with friends. You can share this gate code status, like if people can come to your Island or not in real time. And um, and you have that network effect and it's cross-platform, right? It works on iOS and Android and in the space that there's turnip predictors, they're all free. So there's a billion of them. But that's not my selling proposition. My selling proposition is the friend thing. And that's really the key. But again, when you're in the sea of free applications that look similar, now you, how do you stand out? Frank (11:26): So I can confirm that when you make an app free, it does get lots and lots of downloads. So that part is pretty much a guarantee. Um, so this brings up a good question. So now I guess it is your concern that it's going to be so wildly successful as a free app that even with two friends only, it's still gonna cost you. Money's on the backend, on the server side. That's the general, just James (11:53): the concern is in that it's going to cost me money. The concern is will I be able to, if, if I get him, you know, 500,000 users, wow, what a great day that would be. How much is that going to cost me and how many of those users do I need to upsell to break even? You know what I mean? Frank (12:14): Yeah. Cause otherwise it's pure loss. If you have a free app and zero people upgrade, you're just throwing away money. It's great. James (12:22): And then I might as well have just kept it at two 99 and kept this very slow growth and have small networks that people using it and now it doesn't really cost me very much. Frank (12:31): Gosh, could you AB test it? Why don't you do two skews? Do one where one way or the other the other way, whatever. Yeah. I know on Android they make that easy. You can have different pricing plans, but on iOS it's not so easy anyway. Just a thought. James (12:50): I think that the, well, you know, it actually wouldn't be terrible to be honest with you. There's probably a way to do it. And if you had one version of the app, I guess, would you do the free version and then you would, you'd have the, the, the INAP purchase basically. Frank (13:10): Yeah. Excuse me. Yeah, I would do it. Um, I would have a version exactly how yours is right now. I might even up the price cause I still don't like your price. And then um, yeah, the free version with the single time purchase that you're planning. Yup. James (13:25): Yeah. And that would be fascinating cause I guess you could always shut down the free version because they up to us, I'm sorry. Frank (13:32): And then you can finally have the icon with the little banner that says pro top. I've always wanted an app with a little pro banner on it. That's true. Yeah. James (13:40): I could easily do it. I mean cause the users would only have one of those applications installed at a time. So all the deep linking into the app with the custom URL schemes wouldn't really matter. Frank (13:53): Okay. I mean it would break if they had both installed at the same time, but yeah, you would just tell them please just use the pro one, I guess. Yeah, yeah, yeah. Why would you have both of them installed? They would be the same. It sounds like a lot of bookkeeping. I don't know. It's the experiment worth it. I kind of want you to do it because I want to know the results of the experiment, but are you willing, James (14:12): I mean that's the thing is one, I'm already scared about inept purchases. I mean the nice thing with a paid app is it's paid, you don't have to do anything in your app. Like they have it paid in app purchases are that you have to add that functionality into your app. I do have a plugin to do it, but I have enough use, use it in like two years and I assume it works okay. But what if it doesn't? Frank (14:34): Yeah. Yeah. And I know it's like, um, it's a little bit of a dark art because it's not even that much code if you do it, let's say just on the iOS side. Um, yeah, I guess where your thing really, uh, was nicest how it did both stores. Huh. Um, but I was just thinking like, I think mine is only like 200 lines of code in Calca and it's not that bad. What the bad part of it is testing it and yeah, because you have to like create those tests to Apple accounts. You have to log into a device with a certain thing, do all that stuff. It's just such a bear to test. That's why I get afraid of it. But you know, you know, I keep talking about an app that someday I'm going to release James and I'm really thinking I am going to go the freemium route because I don't have your problem. It doesn't have a backend server. So if I go to the freemium route, then you know, it's just more installs, more people get into check it out some, uh, it's, it stinks. I hate writing that code. I hate testing that code, but I think their lives, our futures unfortunately. James (15:44): Yeah. The and it's, yeah, and it's the same on Android. It's not fun to test. It's not fun to do anything. And in fact to do it correct, by the way, to do an app purchases, correct. You need to not only put it in your app if you really, really care about it, you would also have validation servers. And you would have like verify and all this stuff. That's a pain. Frank (16:06): Don't bother. Let the hackers hack. God, their logs were miserable enough trying to keep that operating system. I don't, yeah, whatever. No, Katie, but I'm not going to fight them either. Sort of. I thought to whatever side tangent. The one part that I haven't done is subscriptions. I know you're not doing subscriptions, but I'm thinking about subscriptions. So I've done one time in app purchases, but I haven't done subs. Actually I take that back. This Coca. Do subs are those one time, gosh, I don't even know how anything works. I bought Calca on the Mac for four 99. Oh yeah. I have different pricing models everywhere on the Mac. I have the flat, right. iOS, I have the worst. Yeah. W we could do a whole episode on this. I'm the worst model, which is the patron supported model. Yeah. We're not doing that ever again. Frank (16:58): Not well changing that pricing model is bad. Isn't that good? Well, it's just that I give you the full feature set. Um, and I rely on people just being Goodwill and there are wonderful Goodwill people out there. They are truly wonderful and great. Uh, but the majority of people, why would you pay for it if you don't have to? It's true. Yup. Yup. Yup. So I hate to do it cause I love the app being out there but um, and, and the hard part for me is just finding what the uh, what the light version versus the pro version is. I think you're in a nice spot where friends, the number of friends seems like a nice control lever. James (17:38): Yeah. Well it was funny because someone said, you know, well someone in the chat that I said, why limit the amount of, if your approach just give them the unlimited friends like they have as many as you want because you want to encourage the trickle effect. Your pro users, you would involve everybody. I said I just, it's on tested. I don't actually know. I don't know like with the performance of that. So I always wanted to limit it because Frank (18:00): I have a special code that says I James Monson Magno my account can have as many as I want and it seems to work good, you know, with 15 friends. James (18:08): But I don't know, I don't know what it'll be like if you had a hundred friends, if it would be fast and what the server costs like would be so kind of limiting. It made a lot of sense. And I thought like one friend for free, but then one friend's like seems like not enough. You know what I mean? Frank (18:23): Yeah. Yeah. I was thinking about that too when you first brought it up. I was like one, no, not one, but that's even thinking three might be okay. Three. Yeah. But yeah, but whatever. Uh, no, cause two would be the three in the group. Whatever. It's complicated. It's a network. I love it. Work. Yeah. So even like a network that increases square is still very large, so it kind of doesn't matter, but three, whatever. And the question, James (18:51): Ken, at this point is, Oh, what if I just made it free and didn't care anymore? Right. And just said, you know, you know what, my server costs are pretty low. That was make it free. What does that look like? No, and this is where Calca came in and in Calco reassured me that that is the wrong thing to do. Frank (19:08): Oh good. Good job. Kalka you saved us all. Let me just say my, my instinctual reaction was simply, you've put a lot of time into this change. We've put a lot of effort into this. Um, you deserve some reward for that. Or at least, you know, a coffee here and there. James (19:27): Actually, you know what's funny is someone was asking me in the chat, they're like, well, why don't you just make it like the cheapest you can to see what that does, you know, and if 99 cents, you know, is enough and pays for the user cost, maybe that's enough. And I was like, I still don't know if people will download it at 99 cents, to be honest with you. Um, which is, which is strange, but it could be a good AB test. Like, maybe, you know, I do some work to put in the free mode and I put it to 99 cents for a few weeks and maybe it's solid. Great. And I'm like, you know what, it's not worth changing the model. It's just 99 cents is the go to. But you know, in Calco what I ended up figuring out is there's a lot of different math. Like I, I've now run the app for about a month and I'm at about 150 users and, uh, that are at least active, you know, using the application or paid for it. And I could sort of figure out what's an average cost per user and at this rate, if everyone was just to keep paying, you know, two 99 for the app, for a single user, a paid user, if everybody's paid, it would take, uh, 18 years for me, for them to, for me to be in deficit for, for that fast. Right. Frank (20:36): Okay. And you're going to ditch this thing in two years. That's roughly the plan. I mean, I'd imagine that James (20:42): it would still be running, but I probably don't need to do anything with it. Right. So, right. So your server costs Frank (20:48): are, uh, you're assuming that your server costs are just proportional to your number of users that um, you really don't have any overhead. It's really just usage that hurts you. James (20:58): It seems to be just usage. There's not a lot of mass storage, gigabytes, you know, it's just bandwidth and reads and writes at that point. And you know, like this month it costs $1. So at that extrapolation for a year, if I kept adding 150 users, I think it was going to cost me $50 right. Like fine. And at that point I made, you know, a thousand bucks off of it or something. I don't know. Well more than that. But if you thousand bucks and then I'm happy, well I can open apps that and app sets, I would make $3,000. Right. Something like that. So that would leverage the problem here. Frank is the moment that there is a user that doesn't bring in any revenue that then is the offset, right? So how many people, how many new people will have to come into the app and have to convert for me to break even. James (21:50): That was really the mathematic that I tried to figure out in this application, which may also help you, by the way, when your next app, if you decide to do freemium because it's actually really challenging. Um, because maybe you are really happy and saying maybe your next app brings in, you know, not 150 people may, it brings in 500 people every month and you're like, you know what, this is great because I'm just making consistent money, blah blah blah. And you need to figure out that balance. What is your conversion rate? And that's one thing I kept saying on the Twitch stream. What is the conversion rate? And I've looked at a few other apps that had inept purchases to remove ads, which were also two 99 so by the way, people are willing to pay two 99 to remove ads. That's a fun fact. Frank (22:38): I would, yep. If I was using an app. Yep. I mean that's, that's why I pay Google what, eight, $9 a month to get rid of the ads on YouTube. James (22:46): Yeah, me too. And that's the sole reason for YouTube premium. Yeah, I agree. I agree too much. Yeah, it's a struggle. And, and I looked at some other apps and it looked like my conversion rate was about half a percent. Frank (23:02): Um, wait, how do you have a conversion rate already of my other applications that other applications? Okay. And say that number again, half a percentage, half a percent. That seems roughly reasonable. If it was more than a percent or so, I'd say you're lying. Um, so the problem with all of this is the same problem you have with that Excel is some numbers are magic numbers. Yes. Um, if you were doing this, let me say like the scientific proper way, you would have error margins on all of these numbers. Um, and that's why you'll see an app stat. I always put error margins and because you always have to take into account how much you're lying to. So you came up with a number called 0.5 for your conversion rate and or 0.05 whatever, however you do it. Um, is a 0.05 plus or minus 0.001 or is it, you know, does it range between 0.1 and 0.9 or does it range between 0.4, 1.6 and that the reason that's important is because you're gonna multiply that number and multiply and multiply and multiply and every time you multiply it, that error margin is getting bigger and bigger and bigger. Frank (24:16): So I absolutely love what you did here. Um, I just want to put that out there for everyone. Whenever you're doing calculations like this, any kind of future prediction stuff, please for the love of God, use error margins so that you know if you're lying to yourself or not. James (24:32): I think that's a great point because I was attempting to figure out what are the current costs on Azure, but there's no plus or minus cost per user. It treats every user as the same, which is not realistic at all. And additionally, um, I, I assumed the same amount of installs per month. There's no plus or minus a percentage of those installs and that. So there I said, you know, this could be, in my opinion, maybe the worst case scenario, that's my assumption, but I could again be incorrect. Frank (25:04): That's an excellent way to do it. Um, so if you are guessing at your error margins, then pick the one that results in the worst outcome possible. And if you do that for all your numbers, if you're conservative with all your numbers, hopefully your output will be conservative. Um, there's other tricks you can do to, um, if one number, you know, has variability but you don't know the variability of other numbers, you can, um, just fool around with that one and just see how much that swings things too. But I do like your approach of, um, the worst case and if the worst games comes out. Yeah, good stuff. Good stuff. James (25:40): Yeah. And I was, I was kind of pulling it all together and you know, if it's, it's really hard to say, I think that based on my numbers, it could swing anywhere to let's say let's say over a year I made it free and I got a million users. Frank, 1 million users. Well that's the number you can't predict yet, but let's go with that. James. A million users, world conquest users, that means I would be adding about, um, let me see how many users per month I believe I would be doing, let's see here. Uh, 50,000 users. Frank (26:16): Users per month? No, a lot. A lot. Let's say divide. James (26:21): I am, I'm here. All right. So about, I think it's 80,000, 80,000 new users per month. That's a lot of users. That's about a million installs. I mean I started to think about this and you know, server costs are going to go up. The more users you have, you're having a million users hitting your service and it's as an independent developer, even myself to be like, okay, what is that actually going to cost? Cause someone was like, Oh, that seems like a long number. Just put that on prem. And I was like, yeah, I don't think it's going to work. And if you have a million users hitting your server, my computer, my surface book too, that's not really going to scale scale. Right. So I looked at it and if you had a million users, Frank (27:04): I mean what do you think a good number is for like cost? Okay, well a, let's say a million users. It's one of those, it's a good problem to have because if you're not profiting off of a million users, maybe you shouldn't be a business person. Well let's take one step back there. But, um, I don't know. I've never had a site that was, uh, actually a million people. So I don't have any good numbers to give you off the top of my head. Um, I would say the more critical thing is obviously the conversion. How many people are paying and how many are free because it takes one user over an infinite amount of time to make you bankrupt. You know, a million just does it faster. So it's really just a velocity question at that point. It's very true. James (27:52): And in fact, the number of users, you're correct does not matter at all. The absolute number that actually matters is the conversion rate because there is a dollar amount per month that would be offset by the conversion rate of users. So in this application have 20 million users, and it still doesn't matter if you're getting that conversion rate because all of your costs are covered. Frank (28:18): Yeah. It sounds like you're starting to casino. All right. Just make sure you put the numbers in the house's favor, not the clients. It's true. My conversion number, by the way, is 2.1% is what I need to break even. Yeah, I was, I think I found that in this sheet. So let's, let's talk about what you did here. So, uh, you figured out how many users, active users, you have, you figured out the cost for that. You said about a buck, and that's how you roughly how much your server costs are. You're just saying that's roughly my server costs. Uh, what did you do next? Um, you decided your, uh, income per sale. So that's your current income per person. How did you, uh, did you calculate your conversion or that that was, you just looked at your other app? James (29:06): So the, so also by the way, the cost per sale I put as two 99 times 0.7 because 30% is taken off the top. Um, and that does not take into a fact the taxes in which I'll have to pay on that. But sure. So I just want to make sure I make that clear to you because Frank (29:22): you only pay taxes on profits, so that's all good. James (29:26): So there you go. Exactly. So I did that, which would be, unfortunately you, it's if it's $3 you lose 90 cents. Right? So it's $2 and 10 cents. So this is a big, it's a big, Frank (29:39): that's why I was telling you I want that number to higher. James (29:41): Yeah, I know. Um, so the pro conversion, uh, so I started with, I looked at scoreboard and meetup manager just saw what their, like, what their conversion is. Granted, again, that's another one that's fully featured 100% but you just to remove ads and those conversions were round 0.05 half a percent to an eighth of a percent. You know what I mean? So 0.0 8.08 or 0.05 and I just started saying, okay, let's start there and let's see how much money I would lose if I did that. And that's not, that's not good. Um, it's not good. It depends on the users at that point, right? Because then you're like, if I'm losing money, then I really don't want that many users, uh, in general. But you know, I could be losing, you know, if I gain 5,000 users every month, I would lose like 2000 bucks a year. Frank (30:40): Mm Hmm. It's not fun. Okay. Yeah, no, write off. Maybe right off. I get it right off for that. Well, fared at that far away. James (30:48): Yeah. So, so I started saying, okay, well, what do I actually need? And I just kept the modifying the one number until I broke, basically, even, which was two and a half, 2.1%. Frank (31:01): Uh, I like this. So you were iteratively solving, manually, iteratively solving. Just keep changing the number until the result is where you want it to be. I love that. I wish, sorry, I just sidetrack. I wish I could make the tool do that for you. Help you with these like hypothetical analysis and be like, Hey, this is what I want. Do whatever it takes to get this to where I want it to be. Um, that's funny. You could actually use the neural network engine to help with that anyway, so that's cool. So you discovered that two out of 100 newish users or users overall one or the other, uh, needs to pay you $3 one time. James (31:46): Yes. Yes. Frank (31:47): That's not a bad number. Two out of a hundred. So a number I always use in my head, and I don't know if this is very accurate, but it's my rule of thumb hand-waving number. Um, a free app does 10 times the number of downloads of a paid app and it almost kind of doesn't matter the price of the paid app. Ironically, up to a point, there's like different plateaus and things like that, but if your app is getting 20 downloads a day at whatever price, then you're going to get 200 a day free. Oh I can't wait for your experiment to verify and verify that number. But um, that's roughly what I think of. So two out of those it's quite possible that can work. James (32:29): Now what I could do, Frank, is I could make the promote four 99 and Frank would love this and uh, and that would then I would only need 1.2% of people to Frank (32:41): ah, yeah. Okay. That's interesting cause it's not quite double the price and so it's about half the conversion rates. Correct. Yeah. So those two numbers are linked that way. Yeah, it does simplify pretty well. That was a pretty long Calca file. There are a lot of variables. James (33:00): It's also depends on, it's also in the GitHub, which I'll link to in the show notes. So you kind of open up, you can give Frank your four 99 then you can look at the spot. Frank (33:08): You can read it either way. It's a test file. I did that on purpose to make it very easy to share. Uh, a few pro tips. You can use spaces and your variable names so you don't have to do all these underscores. No, I don't know how to use your app. I know, I can tell. I'm just kidding. I'm not kidding. Uh, you can put dollar signs on things so that they look like dollars. So it's a little easier to read in some parts. Um, but this is cool. What is the egress price per gig? Egress. I love the word egress. I do, but what the heck is it? James (33:42): There's ingress and egress. So ingress is the data coming in and Negress as the day data. Frank (33:47): Oh, okay. Bandwidth and bandwidth. Got it. Okay. That's fun. I'm trying to find other, uh, interesting variable names that don't make any sense to me. What are the, um, by tomorrow I'll forget all of these, by the way. Yeah. I mean, they are long names, they're just kinda generic. But why don't you give us, uh, a high level reminder? Are you Azure functions with an Azure storage account? Is that how all this works? James (34:13): That was correct. So I have an Azure storage account, which is mostly just table storage. Um, there's of course base storage, you know, read-write type of stuff that you pay for. And actually a storage account and table you pay for like table size, you pay for table bandwidth, you pay for, um, hot reads and writes. Um, and this is a hot table hot storage account because there's, it's active, right? It's not cold. So hot is good because the data's faster and it's cheaper to access the data more cause it's hot. Interesting. If you have cold it means it's cheaper to like access it seldomly. Yeah, right. It's more for cold storage. So it's hot. And what I found is that the Azure functions cost to run my functions is 1% 2% of the total cost of the Apple. Frank (35:09): Wow. Yeah. Functions are so cheap. So it should be architecting everything around Azure functions. Probably trying to do an ad for them, but jeepers, that's pretty cheap. James (35:21): And in fact, they're crazy cheap and they're the, I think they're the cheapest of the some, I mean at least some other serverless, I can't speak for all of them, but I use mostly HTTP stuff and there's no gateway that you need to put. So it's actually really, really cheap for HTTP stuff because it reduces the cost on having an HTTP gateway cause it's built in. Um, but yeah, it's so cheap in general. So I thought maybe that would be a detriment because I wasn't going to be able to do always on or something. No, not to do. Always on. It's just, it's good. It's good. It's fast. You know, the, my latency is, is not a lot. I mean, yeah, my response times are usually sub two seconds, you know, on a cold boot. I mean they're, they're pretty quick. Um, and that's including processing all the like non-optimized too. So what I found is that the hot REITs are the, the expensive part. So that is 60% of it. Frank (36:20): Ah, interesting. Yeah. But are they actually more expensive or you're just doing a lot of them? James (36:26): I am doing more of them and they're more expensive I think. I'm not sure. I'm not positive. Uh, I think, but they're there. I do more of them because every time someone updates their profile, every time somebody updates their turn up prices hot. Right. Hot, right. Hot. Right, right. Yeah. Um, Frank (36:46): boy, what I'm really learning from this is web servers are free. It's just databases that costs money. James (36:51): Yeah. So someone said, Oh, like what if you just put all the data in a database? And I was like, I don't know. I think that may cost me more money. You know what I mean? You have to have a database that's on all the time. Frank (37:02): Like I know there are some free plans. Like I think Cosmo DB technically has a free plan, but I was never quite able to fully get it free. So yeah, I know what you mean. You always seem to end up paying for the database. Now the one nice thing is, um, I think if you actually paid for a database database, do you get charged by the transaction? I think you just get charged a flat fee. So then you wouldn't have to worry about the transaction count. I don't know. That's a good question. I don't know either. That's a great question, Frank. So much answer it for us. Let us know. Right into merge conflict on Twitter. Merge conflict FM. James (37:39): It says billing by the hour by the second. Frank (37:43): Okay. I don't know what that means. Okay. Okay. I don't know. Server's James. Okay. So, uh, after all this calculations, uh, what is your conclusion? What are you, are you going everything we just discussed? James (38:01): I think I have to, it's, it's a weird part because I worked pretty hard on the app. Um, and I would like people to use the app. Yeah. That's the struggle. Now I could just not care, I guess and just be happy because it would probably make my life work balance a lot better. You know what I mean? Like, okay. Like it's just going to do its thing. Not a big deal. Frank (38:29): James, by the way. You, you have a nice paying job, like a really real job. You know, some people like me to work for a living. James (38:36): True. You already have a nice job. It's true. I do. I do, but I appreciate your enthusiasm, your compassion, your go get it. Well, somebody asked in the chat, they said, do you want to make a profit off of this app? Ooh, good question. Right? It's a good question. Do you want to make money? And I do. I want to not flip the question of privilege there. Do you want to make money? Do you want to make money of this? Do you want to make money? Come subscribe to James, his plan, just $5 one time fee. Oddly enough, I'm, I'm very happy to run the application as a really cool experiment to see how things scale. The cost of everything. I don't want to lose money. You know what I mean? Yeah. I don't, I don't have money sitting around like, yes, I have. I work at Microsoft and I do have a salary, but that doesn't mean that I have money that I can continuously pay Azure. James (39:35): That's not, that's not true. Steven shoveling it into that fire pit, you know, it feels good. You know, it's cathartic. Those two things are not equal. And I want to make that very clear, um, in general. So, um, but what I like to look like, it's what I said in the chat. I said, well, what if I sold a million units? That'd be great. Maybe I could retire, probably not. You know what I mean? But because my server costs would be a lot, but, but if I sold a million copies, I got a few million bucks sitting around like, Oh, that sounds good. Maybe I'll retire. But that doesn't seem to be the case, nor do I think that'll get 2 million upgrades. Right. So that'd be good. You put those numbers in though. You always have to put the optimistic, I mean, I talked about always putting the conservative numbers then, but it's fun to put the optimistic number into, well, you know, if I was to make a 10% well here's the fun. But there's a crazy part about it is, you know, if I, I mean it is kind of fun. Let's say I added, I make it free and I get 50,000 downloads a month. Frank, that's a lot of downloads, but okay. Magic land. Yes, so that's 600,000 users over a year. James (40:50): Right. Okay. Okay. 12 times five. Got it. Let's say we're having happy land, right? Let's say my max, I say I convert 10% of people, Frank. Oh, those are such generous people and they're like, I really need more friends. People have a lot of friends and they want to network with their friends. Then I'm making what a happy networky world. Then I'm making good money on this app. I could, I could. I could be very, very happy. That's, that's quite a lot of money. It's like 150 grand a year. Oh, I don't mind. That tells me that your numbers are wrong then. Correct. Now, let's say you have that, I just want to say if you have that many users and you're only making 150 Frank (41:34): grand, I know where it's supposed to be doing the happy route here, but that's not right. With that many users, you should be making a lot more. James (41:40): Well, that's what the conversion, right? Because the conversion of, you know, 60,000 times $3 times $2 and 10 cents it's not a lot of money. I mean it is a lot of money, but it's not millions of dollars. Right? Frank (41:54): Well, I only say it's not a lot of money because you're only in your lifetime going to have one or two things that are ever that successful. So you need to capitalize on them a little more efficiently than that because that's an amazing number to get to. It is really hard to build a user base. Anyone who's written an app knows you released the app and 10 people download it and you're like, Oh, that's sad. It's hard to build a user base. So if you do manage to build a user base, don't forget to milk them for all they've got. James (42:27): There you go. Yeah, and that's, if I make that four 99 by the way, not two 99 so four 99 might be the way to go. I'm almost sitting on it like talking with you more. I think the way to go is, is maybe try to, I actually, I'm going to do a combination. I think the combination here is the winner. You do a combination of what the chat said, which is prep the pro version upgrade and then make a big sale of 99 cents to maximize users. Then do a free version, right? And then make the pro version for 99 so this means everybody's happy. Your original users are pretty happy because they got to use the application for like two months, you know, without a sale going on on it. The new users that paid 99 cents are super happy because they got a deal. Right. And then now going forward, they're going to share with more friends X, Y, Z. Right. It's a, it's a, you know, a thing that goes over and over. And then if I go to and get 2% now we're looking at, you know, a pretty decent conversion at four 99 four 99 seems to be a good spot where I only need one out of 100 people to upgrade a breakeven. Frank (43:38): Yeah. I know mentally for me, I don't see much difference between $3 and $5. Like if I want the app, if I want to get rid of the ads or whatever, I don't see a big difference between three and five. That's a five. James (43:49): That's the last question is, is someone, everyone kept saying you didn't add in the what if you put ads in the app. You got to calculate that. Here's, here's the thing. Frank has don't make any money unless you have millions upon millions of on users and you put ads in front of their face all the time to do stuff like video ads. Frank (44:07): I'm pretty sure I was playing iPad games with a four year old and the amount of ads they came up were ridiculous and they made it harder and harder on each one of those ads to get rid of it. Now, in fairness, I was playing the app for free. Don't give up. Don't give them a dime. But still. Yeah. Um, I'm glad you that because I've just viscerally never wanted to put ads into my apps and so it's good to know that I wouldn't profit from it if even if I did. James (44:41): That's sort of what I've, I've noticed is, is there is some money into it. So I mean if you're going to put ads in is the only way of trying to get an upgrade, like a good idea for Calla, for Calco on iOS has put ads in, make it so you remove the ads with your patronage. That's what I would totally do. If I was you. You would make so much. You would, you would make more money that way. That's what you should do. By the way, the only reason you put ads in is because you have no other way of monetizing it. Right? You want mass users and it's not about making money off the ads. It's about making money off of people, removing the ads. That's the only reason. Frank (45:18): Got it. Um, I will say that I liked a lot about doing the sale price trick. Um, I have not in my own sales, uh, done enough sales. I haven't lowered my price. Why is that? Because I'm scared. I'm afraid of it. I'm like, you know, if I don't make money for a month, then I don't, you know, I ain't got that money to pay rent. Simple as that. So, um, I've always been too afraid to do experiments like that. Uh, so I hope that you will also do that and report back to me, uh, because I have thought about switching one or two of my apps over to a subscription, freemiums subscription style that were already paid for. So everything that you're doing is actually very useful to me. All of this whole discussion. Um, but I especially like the sale price idea so that there's, what a week or two, a one week sale, how long would you run that sale for? James (46:17): Maybe two weeks. Two weeks, a week, two weeks. Just see how it scales. The idea cushion the blow. Yeah. The idea is like, what if it actually sells really, really well at that reduced price and you're like, wow, I'm making way more money. I'm getting way more sales now. Like you'd have to triple your sales. But what if instead of 150, let's say I got 50 a week, right about, so what if I got 500 a week? You're like, okay, wow. Well okay, I'll just leave it at 99 cents. I don't have to worry about any of the enough purchase stuff. Frank (46:48): Yeah. So I did this once, so I circuit used to be $20 when it was first released and Oh boy, I got so much flack on mine and everywhere. But the truth was it was selling just fine. You know, people were buying it, they were enjoying it, it was fine. Um, I lowered it to $10, um, because just as an experiment. So that was my kind of, let's see what happens. And it turned out money-wise, I was making the same amount of money. So it was this funny thing of that was just the capacity of the market basically. Um, now what I decided to do was keep it at $10. I think if my older, more cynical, lazier self or to go back in time, I would say keep it at $20 because then you have less support emails. This is true. This is true. That's the other thought. But on the other hand, just today I received the absolute nicest letter from a student in Germany that was using my app to get through school. And it was just the nicest thing. And I, I love that it's affordable enough that students are able to use it and all that stuff. So pros and cons to pricing. James (48:02): That's great. Yeah, that's the, that's the challenge, you know, is, is putting it out there into the world and, and yeah, I don't know. It's a, it is a challenge because you know, it's, it's fun to experiment on all of it. And at the same time, I need to figure out the problem with going. By the way, the final kicker before we end this podcast, the final kicker of going from paid to freemium is how do you upgrade all of your existing users? Frank (48:33): Oh, the book keeping man, that's the part I don't want to do. So you have to track which version it is, which version they installed on. Remember which version you started doing, your pricing scheme. Do lots of checks like that to get, it's just bookkeeping. I don't want to write that bookkeeping code. It's true. James (48:50): So I'm relatively lucky because I do have a backend by the way. So, so one thing that I built into the app in the latest version is I have a simple Boolean setting that says is pro and it's set to true on app startup. You are, you are pro. Um, so every user that upgrade so you know to that latest version, which hopefully everybody does over time, they will be pro. And just because they have that, that doesn't necessarily mean, you know, um, there still needs to be a way to validate that. So my plan here is to have another table that is pro users that sort of says this user is pro. And when I flip the bits, if I do the free version with the paid upgrade, if I flip the bits right before I flip them, I will do a, Hey everybody that's an existing user, make them a pro user. And whenever someone buys in and that purchase, they will then register their account with the backend service as a pro user. Frank (49:54): Yeah, I like that a bit more than just relying on the info dot P list variable. But I'm probably gonna end up having to do in my apps because I don't have a backend that I can rely on like that. So that seems like a much more reliable, elegant solution. So the new version, um, would have to query, uh, it's proneness, which I think is what everyone would expect it to do. James (50:17): Yeah. And that's cool too, because the only time that you, you, every time. So in the, like in the pro thing, it'll be like, you know, purchase, restore, purchase, um, or like verify purchase or whatever. And, and really if for some reason you didn't upgrade to the latest version the last month and you opened it and you're like, Oh, how come I don't have the pro version? You could say like verify it. And then it would say, Oh, you know what, this person is approach version user. So does update that bully. And so it unlocks the UI bits. But even on the backend, what's nice is that if I have that information in the back and if they're pro users, when the person tries to add a friend or whatever, I can then query to say, are they a pro user? They can have 10 friends if not two, Frank (51:01): you know, so it'll be easy. It'll be easy. Folks, you heard it here first. Can't wait for part five of the turnip trilogy. The fun part is that I don't think that the, the backend stuff is the challenge. I think the challenge is the inept purchase stuff. Yeah. Yeah. And I was also thinking about, um, the thing I brought up earlier about releasing both skews and then I was like, Oh God, that's going to make app review just miserable and updating the app. So maybe, maybe you don't have to do that test for me. That sounds like a lot of work. I think I'm not going to do that and I'm just going to go with, go with Myra. Yeah. But I don't want to maintain that. That's too much effort. A little bit too much. Anyways, that is my conundrum. I, James (51:44): yeah, we'll, we'll put a link to the, to the Twitch video and to the, uh, it was, it was, it was me building it. I, it was funny, if you would've been there, you would've just shook your head and anger about how terrible this Calca file is. But Frank (51:55): I would have had to call in. I would've just probably called your cell phone, put me on speakerphone. I have, I would have brought you in. So I was hoping, I was hoping I, when I, when I said I was using your app the entire day, I was hoping that it would work. So anyways, I didn't see, was there a tweet that I miss the tweet deck every Friday at 2:00 PM on Twitch. I stream, you know this? Yes. But you have to send me Frank signals. Oh, I see. You have a busy life, you know, sitting around during the quarantine doing nothing. Perfect. Frank (52:27): Well, I have a buddy that's going to do it. Any other ridiculous stuff that you want to talk about? I hope you get rich James. I hope you all the success in the world. Yeah, man. If I could get a conversion rate of 50% now we're talking, it's not going to happen buddy. I know. No, no. I think 10% would be a small miracle. That'd be pretty good, huh? If that was the case. Yeah. Yeah. We'll throw a party. We'll throw a party. All right, everybody. Well, I will report back if, uh, if I become rich, which you know, you'll know because the show stops. That's true, huh? Yeah. I guess so. I guess so. Yeah. Well we'll see how it goes. I like more than anything, it's at least gives me something else to do on the app I guess. So yeah, come on. You must have had feature requests by now. I'm sure you have a million feature requests bio. I do. In fact the requests button has James (53:26): gotten some love. The email support has gotten some luck, in fact, most of the features. So I actually redesigned the app recently. Um, I sat down with my designer, my wife, um, who's an engineer manager and she was like, here's what I don't like about everything. And then I was like, wow, everything you just said is about to make the app so much better. And in one Frank (53:44): nice that's can be so brutal, so brutal. But she was so James (53:47): honest and pure and it was great. That's why I married her. Um, actually I like to say that's why she allowed me to marry her. But, um, uh, I will say the application, um, she made so many great suggestions because I had all these tabs cause I'm a developer and I just like, I have new sections, all these tabs and she's like, why is this a tab? Why is this a tab? She's like, I never go here. So now the application is super simplified. Super nice. I'm super happy with it. Um, it's very, very good. So Frank (54:15): Frank bought Kareem line, not simplified stream. Streamlined. Streamlined. That is correct. My iOS has not been rigorously updating apps lately, so I need to get on it. James (54:28): I do. Frank bought my app and I appreciate that. Frank (54:32): I'd make you buy all my apps. Like I just keep yelling at you until you buy them. So it's the least I can do. Literally the least I can do James (54:38): the bare minimum. All right everybody, let's going to do it for this week's emerged conflict. If you have feedback and you're like, James, just give up now, right into it's go to merge conflict at FM, hit that contact button or hop on our discord and give us a little chit chat or on Twitter, all the things. We'll see how it goes. But I think that's going to do it for this week. James (54:56): Ah, so until next time, uh, James Monza Magnum, and I'm Brian Krueger. Thanks for listening. Peace.