James (00:09): Frank, I just learned how soap works James (00:12): and it blew my mind. Frank (00:15): Are we actually talking about this? Are we talking about soap? Is this a fight club reference? Um, James (00:20): it could be, should we start making soap? Is this a good time to start producing soap from our house? Frank (00:27): No, I can't even make jello right now. The thought of making soap sounds ridiculous. I do appreciate everyone's like bread making efforts, but I think soap making's a whole different level with terrible chemicals. [inaudible] James (00:40): yes, I like to imagine that it's, I mean, I've had goat soap though and I don't know how goat soap works because it's like goat milk or something. I don't understand. But anyways, I just want to let everyone know that you should be washing your hands for 20 seconds. I know my wife has been telling me this for three months now and I didn't believe her until I watched a Vox video. And then for real twenties algens Frank 20 seconds. Count it one. Frank (01:04): I too. I think you're supposed to sing happy birthday twice to the B of, I dunno, brave new world. Um, wait, is that even a song? I don't know what I'm even saying. Vox videos, those are hilarious. Was this the one with the person's hands recovered all in black stuff and then they had to show like you had to scrub every little millimeter of your hand to get rid of all the virus. James (01:31): It was similar. What they did is they, there's like this lotion that you can get that emulates a virus on your hand, like the texture of it and how it interacts with soap. So they put that on and they said, here's what happens with five seconds and under neon your your hand just like lights up basically and under 10 seconds it's like halfway gone. But then 20 seconds like it is just gone because literally soap, it's amazing. They did this cool thing where they said, you know when you put oil into water that how it just floats. James (02:03): And that's kind of what happens with um, the virus stuff because if you just put water over the virus, it is just kind of slips right off like oil. But when you put soap inside the oil and water, it basically separates those two. There's two ends. I'm not a, I'm not a scientist over chemist, but the two ends, one attracts the oil and one attracts a water and it basically just rips it apart. The molecules and when you apply the same concept of soap, just normal soap, not even anti microbial silver, whatever. It takes the virus and it like it like the rash is it it like rips it apart in a violence. It's crazy like science man, man science. It's mind blowing. Frank (02:48): You are very satisfied with the ripping at apart part, aren't you? Like that just makes you happy. I can just hear it in your voice. You're like, it tears it apart. I love it. I love it so much. Kill that virus. It was a, James (03:00): it was a cool animation and I was like, you know, it's kind of those like the more, you know, animations, but it was just a really cool animation of it. Just like slowly just ripping in a party and going to town. Anyways, that's all we're going to talk about for it. Unless you want to talk about more social stuff. Frank (03:14): Oh no, I have one more soap thing on the topic of, I don't know how soap works. I was in grants pass Oregon and they gave me black soap is supposed to be like a charcoal soap and I still don't comprehend it because I've been around charcoal my whole life. And it makes you dirty, not clean. So you use the soap and it's black, but then it cleans your hand and your hand is clean and it makes no sense. So just on the topic of soap makes no sense. I uh, I just want to present to you charcoal soap, James (03:46): man soap, I'll tell you, soap it, it does the body good, you know? Anyways, anyways, it gives them so people wash your hands, 20 seconds, go, go down there. I'll also put a link to that video. It's been watched like 10 million times, but everyone should watch it. It's great video. Now, here's what I really want to talk about today, Frank, because I've been working on an app, which, you know, I've been tweeting this animal crossing app and I've finished the UI too to a lesser extent. And I'm got the data cache offline. Everything's working good, but I've ran into something that I've never had to do before in my entire life. Do you know what that is? Frank (04:23): Ah, well we talked about web stuff last time, so hopefully it's not web stuff. Um, you had to, Oh boy, you've done a lot. James. I'm, I'm like trying to make up something ridiculous and then I'm like, James has probably done that. So this is hard. Just tell me James (04:42): what did you do? So I've done a lot of things. I've done apps that are just your data. I've done apps that are online that has, you know, connected to a database. You insert rows, get rows, do things, share data with people, things like that. But the one thing that I've never done in that realm of sharing data is I've never created a friends system. And I'm complexed in for a week on my walks and my shower when I'm eating the complexity of a friend system, which seems so simple, has me boggled of how to implement it. And I'm scared and I'm terrified all at the same time. Frank (05:21): I love this. I love this so much. Um, um, I don't know where to even start. James (05:27): Well, let me set up a situation. Let me set up the situation so you really know what I'm going into here. So this application is for animal crossing. Frank (05:35): I'm going to pause you for context. Um, I was around a friend who was making one of the early social networks out there and I used to get to spend a lot of time looking at the PHP code and playing with the PHP code with him on friends systems. And we've had many nights discussing how social networks should be built. All these kinds of systems should be built. So I just love that. I'm going to condense a year of my life of discussions. James (06:05): Well that's good because it's really like a compressed version of a social network. So this application allows you to enter some data of your turnip prices and animal crossing. And the goal is that you can share that data with your friends and your friends can share that data with you. Now in this situation, only your friends should be able to see your data and vice versa. So this, luckily there's no personal identifiable information cause there's just turnip prices that I'm soaring on the internet and some unique identifier. But it has me thinking like how do I send a friend request? How do I accept a friend request? Do both people need to accept the friend requests? Like how does someone remove a friend and like what does that look like in the backend system? Because you think it's easy like, Oh these two people can see each other's data, but there's a entire user flow behind it that I'm so perplexed by. Frank (07:05): If you unfriend someone, should you delete data associated with that friendship? But what if they become friends again as the expectation that that data gets restored? This can go on for ever getting locked out of an account. I'm moderating people. Yes. Okay, great. I think the trick here and you're nailing it is it is a big thing. So you just got to write down some decisions. This is the time for a design document because you could easily start writing code here and just go insane with the possibilities and the options. So I think this is one place where you absolutely have to do some front end design. Yeah. So should we start answering these questions or should I keep throwing more questions at you? I think James (07:54): and good. Let's start going for it. Like the first thing that comes to me is how do I send a friend request, right? Because if you take off the whole situation of like, how do I even get a friend request over there? You got to start by sending one. I have some ideas. I think that's the place to start. Do you think that's where I should start a thought process? Go? Frank (08:14): Yes. Yeah, it is. Um, right here, the model I think everyone's comfortable with is requests. Yeah. So like a text message maybe is honestly the simplest thing. But yeah, it's like you pushing out a request or sorry, an invitation. The tricky part is like invitation links, you know, like, cause optimally that's what you would want. But now you have website integration and things like that. But I think that the like invite link is kind of the universal thing out there that everyone's comfortable with. But you know, there are tricky parts for implementation to that. But definitely I think it should be. Um, you James, say I want to be friends with whoever else. Um, and, and through links. Here's something fun. Contacts sharing. Right. So do you access the contacts on a person's phone? Have you thought about that at all? James (09:15): No, that is terrible. Never do it. I was just helping 'em um, Heather's, Heather's dad was using Snapchat and um, have you ever used, you've used a Snapchat, the snap who snap? Frank (09:28): Yeah. Yeah. I've, I've tried it. I've tried it. I, I, I didn't find it that interesting. Snapchat James (09:34): they will, they will like get all of your information. They'll turn on all the things by default. Like everything you're in the global, you're in this like you're, everybody can see all the data and I hate that because we sat on the phone on FaceTime with them or like we couldn't even find the settings in our application to turn stuff off. It took us like 20 minutes because everything is so hidden. So I don't like the notion Shane on Snapchat except for a little, little, little cloudy up in here, but I don't want to get into the, I don't want to get into the any personal identifiable information reaching in. No permissions. I'm against it. I don't like it. I think it's shady. Frank (10:08): Right? So I think what you need to decide now is how do you want to do your friendships? Do you want a mesh network like a social network or do you want rigid groups? The nice thing about rigid groups is you can create like a database century, a group, it exists and the admin is James and this is the invitation code to the group. Anyone who gets that invitation code can just join the group. That's when they submit whatever information they want, whatever turnip count. If that's all it is, if the rest is anonymous, I like that because there's a great simplicity in those groups. The harder one is I'm friends with Jane. Jane's is, Jane is a friends with Tim, 10 is friends with Alice. Alice is also friends with me. Are there inputs that relationships should Alice see some of, I already lost the chain but some of Jane's stuff, you know that's the Facebook front feed where they're extending your network a little bit. I hope you don't want to go that direction. James (11:12): No, I am. That's very fascinating about the groups. I didn't think about that cause that would make it very easy to say like I want, here's a, here's a code unique identifier and like maybe someone creates it and maybe someone shares it and then you can do that. Here's what I was thinking. Now when someone logs into the system, they're going to log in and that's Frank or James unique identifier. You have to have a unique identifier Duguid now in the Nintendo switch, like there's no API to say, give me my friends cause that'd be very, that'd be great. Right? To see all my switches, friends or whatever, automatically add them since that doesn't exist. My thought here was first I, I, I pitched this past Heather and I said, Hey, um, what if I just make people enter unique identifiers? And she's like, no one's going to enter unique identifiers. Like ask someone to enter a grid because that's basically when no does and is not great. So here was my thought. What if for iOS and Android I register a custom URL. So it's like my app, colon slash slash Frank (12:17): invite James (12:19): more or whatever requests. Yeah, friend. And then my identifier. And then I basically, when you tap a button to send a friend request, you'll just like email them, text them, whatever they click on it. It opens the app. I register that that person wants to be your friend and then boom, your friends basically. Frank (12:40): Yes. Love it. Uh, that is the URL idea. So instead of just being a website, it's an app URL, whatever. Same difference. It's a link that you can share around to people. I love that a lot. Um, if we want to get into nitty gritty details though on Apple, let's say for instance, um, you said, you said the phrase that person, so like that person gets the link, the app opens and now you want to join them to the group or whatever that link is associated with. What do you mean by that person? That's the trick. So how do you create a user ID that um, you know, will either track with the phone or maybe it doesn't track with the phone, all that stuff. What are your thoughts on what that person in scare quotes means? Is that an automatically generated ID on the device? James (13:34): Yes, that's a good question. So I think I'm going to have them log in with either a Microsoft account or an Apple account because Apple ID, why not? Frank (13:43): Not just why not a Apple requires it if you want to do a sign in system. James (13:50): So because Apple requires it, so I'm thinking that Apple ID and a Microsoft account, I could add more providers later, but my thought was that that person is just Frank (14:00): like that. Yes. That identifier that comes back. Yes. But that's the good way to do it. I just wasn't sure if you're gonna put in the effort or not. But sign in with Apple is absolutely wonderful for this case. James (14:14): Yeah. Cause I thought the just generating unique identifier like a [inaudible] like it is supposed to be unique, but like Frank (14:22): do you, is it you? Yes it is. It is. James. The probability is so low you don't even want to think about the probability. Uh, so actually I kind of personally prefer generate a ed, throw it into key store. So it's even like super ridiculous private. Um, but it, cause I, I mean do you really want sign-in? Like do you want people creating accounts? Like why, why even have accounts? Just have buckets of ideas? I guess. James (14:52): That's a good, yeah, I guess, um, I guess I that would simplify my life not to have any login. I didn't think about that. Yeah. Frank (14:58): Every person is just to go ahead and if they get a link to another GUI, then they get to join that go at group and get to talk to the other goods. James (15:07): Yeah. I guess as long as you're not looking to the question that comes up in that mind, the reason that you would want sign in is if you were going to do it from multiple devices. Frank (15:16): Yes. Um, but in that case you can also share the good, you could create like a, um, a QR code and have one device scan the other device sync devices. Yeah, something like feature. Yeah, that's a pro feature. Um, in general, I like the idea of not having a user account, but there's pros and cons to both. Honestly. Like user accounts simplify a lot of things, but at the same time you don't really want a password and a token and refresh the token and all that stuff. I think it'd be easier if just whoever creates the group or the first person in the group can just boot someone out if they want to. Or you can quit a group if you want to. James (15:59): I think so. I think that this is the most amazing thing I've ever thought of in my life. So I'm thinking here is that yeah, you get rid of all user IDs. I do have a profile. So like the person, they enter their name, they enter their Island name and their time zone. So I can, I can, I can create a little blob because every time, every time a user enters their turnip prices, I'm going to have a sync button where they can take their current profile, their current user ID, which I'll have generated and their current prices, sync them to the internet. And then on another page I will basically say, give me all my friends, turn up prices and then go to there and say, give me all these people that have basically synchronized it across the board. I love this. You, I should have really started with authentication because that is the point. But now we've gotten rid of authentication and frankly you've just saved me a week's worth of [inaudible]. Frank (16:45): Okay, great. But you still gotta be a little bit careful. So what, we've just done a little bit of security through obscurity and that's kind of what zoom just got in trouble for. People were able to guess, um, IDs. Now zoom is silly because they just use like nine numbers. You're using a [inaudible], it's really hard to guess a good, but it's still theoretically not probable. It'll never happen, but it's still possible. Um, so what you could do at the server level is just make sure that you give a four Oh four to anyone who's not authorized to fetch whatever data, make sure they're a part of a group or whatever that entails. So I'm just saying maybe a tiny bit of server side security just to be it up. So it's not just purely security through obscurity. James (17:30): Yeah. Cause that's what I, you would sort of do with 'em. That's what you would sort of do with the login, right? Because you'd be able to log in and then when someone would upload or query data, they would say, Hey, here's my token. Add, validate to that person and the token or the correct thing. And those are stored in the key chain and everything's gravy train. Frank (17:48): Um, yes. Yeah. James (17:50): So that would be ideal. Frank (17:51): Uh, so now as the added safety for that, um, I think it would be good if, um, anyone still, you haven't answered if we're, if you're doing the group thing or not or if you're doing an ad hoc kind of mesh thing. But let's say you're doing the group thing, like everyone in the group I think should be able to boot someone out just in case if that person's being, James (18:14): I'll talk about the group saying, but let me first take a quick break. Frank. I think our good friends over at st fusion, unless you listen, you know, sing fusion, you love seeing fusion. And honestly I've been using seeing fusion so much in this application. I simply love it. Sync fusion does everything that you could possibly want for your mobile applications, for your desktop applications, for your web applications. They have hundreds of beautiful controls that you can roll out and start using immediately. And there's new get packages for Xamarin, Xamarin forms WPF, UWP you name it. In fact, if you take a look on my Twitter, you'll see that I've been using some beautiful studying controls like I've been using their combo box. Even the little drop down has a little fruit next to it. I've been using their mast, edit, oo, their numeric text box or you can only enter numbers. That little shimmer effect when you reload it goes [inaudible]. James (19:05): What about effects? What about like a cool little text input? Swishy UI. They have it all for you. I've been using all of these controls. It's amazing. I love it. Listen, all you gotta do is go to sync fusion.com/merge conflict. That's it. Sync fusion.com/merge conflict. Take a look at any of their beautiful controls, charts, graphs, all their cool, stuffy. You're going to love it. It's made me super productive. I couldn't read this app any other way without these awesome controls. No matter what you're building, sync fusion has you covered. Go to sync fusion.com/merge conflict and tell them that James and Frank sent ya. Frank (19:39): Thanks. Sync fusion. You know, in all of that, all those amazing controls who were describing the one that stood out to me was the numeric text box. Cause I'm like, Oh my God, I need numeric text box in like every app I write and I'm so tired of writing a numeric text box. I'm like, I need that numeric text box. James (20:01): It's super good. And then just figured out like I was, I was using it and I was like, as people are entering their turnip prices, I want the numbers to update. And in a normal entry box you'd, the value doesn't change until the focus is lost. While fusion, they have a little property that says, when do you want to update the value on value change or on focus change. So like as someone is typing 101 zero zero it will update along the way. So the whole UI is very responsive. It's very cool. Frank (20:29): Yeah. I love that. I, I'm, I'm terrible like that on on key press. My apps always, I try to always have them update. I think it's like showing off a little bit. Oh look, I can do it on KeyPass. James (20:41): Thank you brother. So, okay groups. So here's my idea. I was originally not going with groups. My idea, I could send you a friend request. Okay. And then basically at that point, through this process, I send you a code and that, and if you accept it and you open it, that means that you have accepted the friend's request. Now I still need to approve it on my end because you could have given that link to anybody. Right? So until I actually approve it. So like the idea is I send it to you. You say yes, like I'll get a little pop up. It's like do you want to add blah blah blah as your friend? And then you would say yes or no. And then as soon as you say yes, I would basically update the server. So then I who sent it to you? I have a pending friend requests from you. So it's sort of the two way, cause that's sorta how somebody has to initiate it. Right? On Facebook I send you a request and then you approve it. So in this one, I'm not really sending you a request, I'm sending the internet a link that anyone could add. So you have to have that reverse proxy though. Even though I gave you my code, you could've given that code to anybody, you know what I mean? Frank (21:54): Do you like that or do you prefer the, because the alternative is for every friend relationship two way or not, whatever. Between James and Frank, there's a database record for that. You know, the relationship exists and um, yeah, that's it. Um, so are you gonna yeah, sorry, go ahead. James (22:14): I think that's what I have to do. I think what I'm going to have to do in the backend is basically like you're saying is every relationship is an entry and then there's a bullying that says accepted, accepted, and you know, like one person, a excepted person B didn't accept. And if they're both true, then you get to see that data. So what will happen is when I query the data, I would say, Hey, give me all of my friends in which both the values are true. You know what I mean? Right. And then if both values are true, I have my friends information and then I can query their information and return that to the mobile app. Yep. Frank (22:52): So are you going along with the idea of like there's one James link, so anyone who gets the James link can become James's friend or just initiate a friend process I guess is what you're saying. Right. Just initiate it. I like that. Just initiate it then you both have to approve it or though whoever initiates it can auto-approve obviously. Yup. Sounds good to me. James (23:13): Yes. Yeah, you could, you could put an option there. It says auto approve or whatever. So you could just, anyone that gets it, you could share it around. But I was thinking of having that extra layer in there just right. Frank (23:24): Yeah. And if you want to super overcomplicate it, you could have public and private James IDs and so when you become a friend, that's the only time you get the private ID and that's the only time you can actually see the data. But I think that that's a level of security. Just two levels of security. Not really. You know, not totally needed, but getting closer to just getting closer to public private key encryption because all we're doing is just a really bad version of public private key encryption here. [inaudible] James (23:56): yeah, so really what you would end up doing is you would have, so when I upload my values, that's actually the private key and then friend requests or the public key. Frank (24:07): Yeah, like the, well the link is going to be a separate key and everything too. I don't think you need that extra step, but the more I think about it, I'm like, eh, it's not really saving you much because the invitation one is almost like your public ID [inaudible] because up till then no one's going to be able to guess your ID and the invitation make that a separate ID. Don't make that your James' ID make that a different color. That's a good idea. Yeah. Because the idea then is you'll have the capability to have either multiple codes for James or you could kill a code like say, yeah, don't, don't allow that one anymore. So it's just nice to have a separate, a request ID versus a James' ID. James (24:48): That's a good idea. That is a good idea. Yeah. So that's the one thing I sorta need to figure out at that point is okay, once, sorry. Yeah, Frank (24:58): no, I think that'll work. Yeah, that'll work. And then anytime anyone says no more friend, the database table gets updated, the query will no longer work. Magic bingo. Mango, easy peasy. No accounts needed. James (25:12): I like it. Done. That's it. Right? I mean that's what you just saw. Shipping tire. I mean that's really it. Yeah. Cause then you're just going to upload your data with your private key and then through the friend request system, there'll be some information in there to gather that data entry. Frank (25:28): Yeah. So what are you writing the server and, Oh, James (25:33): this is a conundrum of things. Um, so I think here's what I'm going to go with is I think I'm going to use, well I think I'm going to call now, it's hard because I was going to use an asp.net core backend for my authentication because Xamarin essentials now has web authenticator in it, but now I don't need that. So this greatly simplifies my cost at the end of the day because I believe what I can do is use cosmos DB Frank (26:03): for my information friend request information and then James (26:10): I can then use an Azure function as the gateway in between the mobile app and the cosmos DB. I think that's what I'm going to do only because Frank, there's a new free tier of cosmos DB. Frank (26:20): Ooh. So is there a free tier of, or I guess the functions are just cheap, right? That's why there's, there's not really a free tier that functions cause they're kind of paper use. Yeah, I mean they're going to be cheap, cheap, cheap. I really liked that design actually because it's real simple. You have a database and you have a front end API server and I know the um, those Azure functions have a ridiculous security model. So I think you can do a lot of fancy stuff with that security model to lock things down too. I like this a lot. It's a clean design to services James (26:56): two services. My idea was not to use SQL database even though I do low sequel or even SQL Lite. Right. But my main thing was what about if I want to add a row or do more information in the future? Right. Then I just want it to be no SQL. Just put a document and go to town. Right. Just continuously add or modify or Frank (27:16): everyone's so afraid of migrations. But yeah, I get it. I get it. Um, yeah. And in the design where it talking about it could, it can be done in a key value store. No problem. Because all on talk, all we're talking about is primary keys and values. Primary keys and values. James (27:33): Yeah. Easy peasy. Easy peasy. I mean at the, I think that's it. I think that's going to be my back end. I think I'm going to make it work. I think it's possible. I need to revalidate the friends system, but I, I I still think like I, there's not really a great turnkey solution that I've seen. I don't know, a piece of a new gate or something out there that's like, Hey, here's the drop dead simple friend system. Frank (27:59): I'm sure that there is a PHP project out there with a wonderful social network system built into it. Like so many web apps essentially have social networks built into them these days. Like how many times do you go to your, I mean like you're at a store app or something. You go to your user account and they're like, here are your friends on the store and you're like, why does a store have a friend system inappropriate? QFC so like maybe it's like a WordPress plugin or something, but Oh, you could just rewrite your whole app in WordPress. Then you could have a social network. James (28:33): Nice. I do like that. Yes. Done. Frank (28:37): It's fun though because what is now basically a feature, I know this is kind of a core feature of your app, but it's almost a feature, but it's literally what my friend sold his business for millions of dollars was building. You know, it's just tailored versions of it. It's just funny that you know, 1520 years later it's just the technology has moved on. We all understand how these systems work. So I think your goal is just don't make it too complicated and make it work the way people expect it to work. And that's it. James (29:11): Yes, I think so. And I think that it'll be a fascinating rollout because if I get it right, it'll be simple and if I don't get it right, it won't be simple and I'll mess it up. But I think, I think I got it. I think talking through this with you has been super helpful actually because like I said, I've never built a friend system as far as I know you also have not built a friend system but have shared data and I circuit with user accounts. But is there a friend system there? Because that would actually be kind of cool to see all my friends circuits. I'm just saying. Uh, no, you're right though. There should be a friend system cause that is actually a very obvious one. I was modeling it more, you know, I was going to say I was modeling it more around thing averse, but I'm pretty sure thing averse has a friend system. James (30:00): Um, but in mind like you can star things and stuff like that. It's not really appropriate for yours because you're not doing a public marketplace. You're doing private marketplaces. Yes. So you, what you could do in your application is if there's a public feed then you could say follow this person. And then those are great things because if someone's publishing public data and then you do follow, that's like get hub, right? You can follow me basically. You know on Twitter, Twitter is not actually a friend system. Right? Anyone can follow anybody. Yeah. It's a broadcast system. It's a syndication system. That's, it's, it's more in common with the ice circuit here I created some content. It's 140 stupid words. I hope you liked my content. Like in subscribe, click that, subscribe, merge concept.fm. You did mention notifications earlier now, now I'm just curious since we mentioned the bell, um, user accounts aside and invitations aside, are you doing notifications in this app? James (31:02): No, I'm against it. So just on principle you don't want notifications. Also, here's the thing with this application, is this an application that you should be opening twice a day? Maybe a little bit more once a friend systems in there because you enter prices in the morning and in the afternoon they change twice. So the idea is really that you will have, um, you'll open the application and if you have new friend requests, basically I'll put a little dot on it and it'll say like request, you'll go process them, refresh the data. But I don't really think I want to put in a whole system to notify them because that then will, would require me to connect to your device to that user ID. So when a friend request happens, I send a push notification to you. That just seems like a lot of work. I mean if it can be set up for down the road, right, like not a big deal, but I'm not sure how much in value it will add long term because the, the goal is like, I will, if my friend system works in this way, I will have initiated a friend request to you via text message or whatever. James (32:12): Right. Cause it's not in the app. Like that's the other thing is you can't like look up somebody in the app. It's not like Facebook, it's not like there's not like a search. The best part is like it is your friends. So you send them the code and then you'll see the, you know, little refresh button. You hit the, you know, little, you know, boom. And then boom, you're good to go. That's my thought. I love it. Great. Fantastic. I hate notifications too. It's all good. Um, can I throw more thing at Frank (32:40): you? One more small suggestions, but I'm going to go around the block to get there. Sure. Ah, every time I've, so I have a little bit experience. I'm mostly in web apps for doing friends systems like this. And the thing that always comes up, the feature creep is always private messages cause it almost feels like, Hey, we're friends, I should be able to send you a message. It comes up from time to time. I just wanna advise you. Don't do that. Don't go down that rabbit hole. Uh, one thing you can do to prevent having to go down that rabbit hole, it's just have status messages per person and that honestly is good enough. Um, and then I think you won't have people requesting that feature in case they ever do. If history is to repeat itself and people request that feature, just give them a status passage. Frank (33:28): Good enough. Yeah. So in your profile you could have like a little thing, a little little note that you could add on there and that gets synchronized down or just have them pick an emoji or something. Just something, anything. Just some way to add a human element. So it's not just all numbers and marketplace, just give people something that's not just their username to express themselves. I like it. A big combo box of dropdown of all the emojis I can put, yeah. What I'll do is they allowed to speak in emoji. Well I can take this lack ones. You know how Slack has like, um, the recommended status basically like you can set the state. Secondly, they have like working remotely in office a day out, sick AFK vacation, but then they're gonna have just other fun ones, you know? Yeah. Aren't just making a text box, whatever. Frank (34:16): Or just me. I just see you can, I just love emoji. You can enter like I guess whatever an emoji is, is so many characters or something. I dunno. That's a good idea. I'll figure that out. I love it. Just, just some personalization. Just some UpToDate update up to date. [inaudible] yup. That's a word I do like that. I think emoji status. I will add that into the application next. And that will be fun because you yeah. The idea, the idea is that whenever you change your profile and when you hit save, it will update your information basically on the internet. And then if you limit it to like a few characters, people can't do naughty things basically. Oh yeah. That's a good point to just limit it to emoji. Yeah. But it's not public information. So it almost doesn't matter if they're doing strictly things. Frank (35:06): That's true. Yeah. You don't want people to, and then you're the, you're in charge of the friends system. You are there. I am Frank and Frank. So to do put bad things in his name then I'm just going to remove that. Nope. Basically. Yup. Yup. It's a good design man. Go right at James. Just implement it all now on doing all, Frank, thank you so much for actually walking through this because I have a in my brain, you know, you know when you just think you're like, I think this is the right way to do it. I'm not positive. And then you go back and forth and you doubt yourself for James (35:38): Oh two weeks. But just to talk through it with you has been super helpful. Frank (35:42): Well, and the truth is there's a million different ways to do this and the five of those are valid. So as long as you're doing one of those five, it doesn't matter. So don't overthink it either. I think you would have done fine. So I'm just glad that I got to throw in some feature requests into it. James (35:59): I love it. I love it. Well, thank you Frank so much and thanks to all of our listeners for hopefully I'm enjoying this session. If you've implemented a friend system, we would share a love it. You know, we've had a few people write in to the show recently with some cool show ideas, suggestions, giving us some feedback. Hit us up, merge conflict out of fan. There's a contact button or just tweet at us and merge conflict FM or Apple Clara at Janie's Monta Magnol Frank, thank you so much. Stay healthy. Wash your hands. Just do it. Uh, and it's all next week. I'm James Montana. James (36:34): Can I crank Kroger? Thanks for listening.