Meeting Up With Jade Wilson And BrandGhost Coding Updates

Meeting Up With Jade Wilson And BrandGhost Coding Updates

• 35 views
vlogvloggervloggingmercedesmercedes AMGMercedes AMG GTAMG GTbig techsoftware engineeringsoftware engineercar vlogvlogssoftware developmentsoftware developerssoftware engineersmicrosoftprogrammingcomputer sciencetips for developerstech jobscareer in techfaangwork vlogdevleaderdev leadernick cosentinovlogging lifevlog lifeengineering managermanagerleadershipsoftware engineering managerengineering managementmsftBrandGhost

Great opportunity to finally meet up with Jade Wilson this weekend and create some content together! In this drive into Bellevue, I discuss some blob storage challenges and migrating a live system to use resource identifiers from URLs.

📄 Auto-Generated Transcript

Transcript is auto-generated and may contain errors.

all right going to be it's not quite a commute but um driving into bellw area and then going to the office so I'm going to be meeting with Jade Wilson today who is from Microsoft um she's flying in or I guess she has flown in already for work uh this whole week which is cool and uh we don't obviously don't get opportunities like this very often of and so it's kind of a kind of neat to be able to do this and have someone fly in like we both work at Microsoft but obviously on very different sides of the world here so um yeah I think this is super cool so she she let me know that she was going to be traveling in and I I hope and I I'm pretty sure she is meeting up with a bunch of people while she's here

for for Content creation and stuff so you know awesome opportunity for her uh I would love to be able to do the same type thing you go uh go to the UK uh there's a bunch of people there uh not only just from like General content creation but even like for for creating courses and stuff the people I work with are over there so that's cool I'm excited for this um so we're going to go for breakfast and then uh try to record a little bit so we're going to go to the campus actually so um I'm not going to be recording the whole thing I think she's trying to Vlog her entire trip but I don't know I I don't know to what degree like is she going to have camera going the entire time or is she going to feel I don't like

if she wants to do that that's totally cool like if we if we're driving together that's fine uh I honest or obviously just want her to be comfortable so if she wanted to Vlog I don't want her to feel like oh no this guy is like judging me for it because I'm literally driving in my car right now talking to a camera um so yeah no that's going to be cool uh I think today I was planning just talking about some uh some brand Go stuff I think that'll be kind of interesting cuz we spent a lot of time this weekend building and this weekend was a little bit different in terms of how we build because uh usually like we're we're all remote from each other the people that are building brand ghost with me so we know each other very well but we're

all remote from each other and uh coincidentally just where our strengths lie um sorry just turn here where a strength SL we can work on separate parts of it and and be very effective right so uh none of us are great in the front end but one of the engineers has well I should say one person has I think a really good eye for like design and I don't want to say like he's an expert at it but out of the the group of us I you know I have a lot of uh trust and confidence in his ability to to pick up on that kind of stuff then one of the engineers is uh out of the group of us is definitely the best at front end stuff so I don't I don't think that he particularly loves it but uh but he is

able to get stuff done and I think well so he might disagree in in terms of if it's if it's the best or not um or how much he loves it but uh I think he's I think he's quite good honestly I think I think it's one of those things where he's way better at other stuff and as a result he'll kind of talk himself down that he's like not good at the front end stuff at all but he is he's good at it um because like when I look at our our user interface like like anything that you ever build like is there room for it to be better sure without a doubt but I think it looks good it doesn't look like something I would make because if I made the user interface it would just be it would be inconsistent it would

be sloppy like there's things I know about user interfaces and user design uh like sorry user experience design that I I spent a long time like I spent most of my career building desktop applications and like I understand what needs to go into that but it's kind of I think about it like art almost if you gave me a pencil and told me to draw a picture of something can't do it but to have ideas and stuff like that works really well for me I just can't kind of put it into practice so was kind of like that even when I was doing desktop applications like I knew I could organize things well I could make things have a flow but in terms of like like being pretty I guess like always kind of struggled with that so anyway the group of us have our

strengths and weaknesses and and we are remote so it's kind of cool that we can like be very asynchronous and just say hey you're getting this part done cool like for me like let me go build the API for that what what pieces of data do you need no problem like let me get that done and we've just been operating that way and we did the same type of thing on meal coach and it was pretty effective so we're just continuing that um so this weekend was different though because I mean we we've spent time in person building stuff I'm only being a little bit vague because like uh I don't I just want their like identities I'm not like it's not up to me to reveal their identities so I'm just not going to say their names or give away too much about who

they are not because it stops secret just because it's like literally not my business to be talking about them um but we've worked in person on things before and we know what it's like to like put our brains together and just like work on stuff so we actually had two evenings of that this weekend so like Friday and uh and yesterday cuz it's Sunday today and it was awesome like uh we stayed up probably later than we should have which is you know fine it's funny how much of an impact that has now uh that we're a little bit older um I know for me yesterday waking up for my on call shift was like was pretty rough um so I set my alarm I have to be up and ready for on call at 600 so I set my alarm for 6 started going

through email to see if there's anything yesterday I was checking up on some stuff right away and then I was like okay things are good like I'm I'm napping like phone is on uh you know full blast if someone needs me like something will go off but I got a nap and then I can periodically check the things I need to um and then today is kind of similar like we didn't stay up late but I'm just I'm just wiped so you know same idea set my alarm for 6 check things and actually I have my laptop right beside me too so uh that's the nice thing I was thinking like I technically backup on call right now um for anything that we've been looking at I feel like we're in pretty good shape so I'm not concerned but I do need to be able

to support my primary on call and like I can based on the things I'm capable of doing a lot of it is like if I just need to communicate and coordinate I can do it for my phone but if I need to be running you know something more in depth than I have my laptop now so covered that way so we spent time this weekend uh like literally getting on to like a Google meet chat and just like working together and I like I miss this kind of thing which is kind of uh you know one of the non-technical things that I just wanted to to mention as I drive down here so I miss this kind of thing because and I I don't think it works all of the time especially if you're I don't know like for these individuals I know them very

well so I find that when we're on a call and stuff like we can be very effective asynchronously but on a call it's like you know 10x uh and it doesn't even have to be very structured we can just be like kind of jumping between things trying to solve problems and it's still incredibly effective I find um so I I just think that we can take the at least for us we can take some of the things that we might be able to do in person some of the qualities about how we communicate and I don't know like and just translate that well into a call whereas for some people it doesn't work that well and just to give you an example uh yesterday we were talking about uh and I I'll probably talk about the technical Parts about this we're talking about some concept

around like the domains that we have and I mean we have data that we're trying to convert into a different format so we were trying to say like where should like what parts of the system need to know about what format of that data for just for Simplicity here and we were talking for a while asynchronously and we realized that we were saying the same thing so we were laughing about it and then when we got on the call we realized we weren't saying the same thing it was very close but um it took us like 2 seconds on a call just to have like total Clarity um so even though we do work well asynchronously uh and you know over chat and stuff there's still these opportunities that pop up so that's kind of what I want to talk about though uh on the

technical side so this is a pretty interesting problem um I don't want to call it a problem it's a challenge right it's like it has a solution so um one of the previous videos here I was talking about blob storage and how in our system right now just for call it like Legacy reasons and like MVP reasons just like keeping things simple technology-wise we said if you want to be able to post media to social media we just need a public URL to it that's it very simple if you can give us a public URL we can post it but the reality is from a usability expect uh experience like that's not that's not Stellar right because the example I gave is even even for us making our own topic streams we uh we messed it up right like we copied the wrong Google drive

format of URL now it doesn't work so it's just too easy to mess up even if you're comfortable setting it up in the first place it's just you know room for hair so um the the challenge or the I guess the goal is like we want to make sure that we can put content into blob storage and what that means though is that we have a different way to identify and work with that content so we can have our own like resource identifiers internally to our system and we were talking about like who needs to know about resource IDs and who needs to know about URLs uh to the media and it's kind it's a it's just a really interesting uh challenge to to kind of sort out so um we were trying to say like and I should be I need to I wish

I could draw pictures and drive at the same time but that's where it gets dangerous um we we technically have an API that can be accessed outside of our front end code technically uh and I use this like for the Legacy system I have that as we build in support for platforms and brand GH I can call those apis and exercise that they work so I've been I kind of test things like dog food our own stuff that's not on the user interface I do that repeatedly and I've been doing that for months and months now so we have that API access that isn't part of our product offering but honestly I think like I don't want to get rid of it because I feel like it could be something that we offer if you don't want to use our user interface and you have

your own systems for Automation and you just want to be able to post out across different platforms like I think that would be kind of cool that offer so I don't just want to get rid of that and that API surface area currently just deals with URLs so especially if you're using zap or other tools like they have like URLs from the workflows they have and you can feed that in now if we change that if we change that API surface area and those callers need to know about resource IDs they need to be knowledgeable about uploading their media first so they have to know to call another API to then go upload uh to then get a resource ID to give to us for the second API call so it's doable but it suddenly makes that API a little bit more of a pain

in the butt to call and personally I think the Best of Both Worlds would be that you just give us uh a URL on that API and we can post it or you give us a resource ID like if you have the resource ID already because you've up like based on whatever system you have you've done the upload manually or through some other call give us the resource ID just save the effort but otherwise keeping the URL in place is important so that's one pathway into the system and then the other pathway is just our own user interface and it turns out from our discussion like we think that uh the API surface area to our server to our backend server should use URLs and we can we can get away with that because even if someone gives us a URL to our own blob

storage the URLs themselves have a fully qualified blob name in them so we can just literally check for that and say oh yeah that that's one of our resources already don't don't do anything it's a police officer I think he's already got someone else pulled over nice it's not me um so if we have URLs to our own blob storage then we don't have to do anything otherwise though if that's a URL that's not something that we can take the resource ID from then we have to go run some work and this is where we had this other challenge to kind of talk through is like our current API when you go to create content in our system uh it comes back pretty quick right so you say like submit and then it gives you back like the IDS and stuff for the new content

that's created and you can do it in bulk as well but um from an API design perspective as soon as you start like you want to be in a position where you can give answers back to callers like immediately ideally right so super low latency but the problem is like well not the problem the challenge is like what does that look like to call so if someone has to say create the content and even if it was just simple text for One content entry should they really be sitting there like making other requests to pull when it's done do you really have to have the complexity of a call back URL to to be triggered when it's done like it's kind of crappy to do that so if we can just do it quick enough and return the results on the call Great you know

you say create it with this text and we say yeah it's done and here's a a Content ID I like that a lot it's just very simple but when you start getting into bulk content and then this problem of oh you just submitted 10 pieces of content to make each one is uh a 5 megab picture so we have have to go upload 50 megab of picture to our blob storage that's not crazy to do but it's not going to be instant so you probably as a caller don't want to be sitting there on an HTTP request it's going to take multiple seconds like that's that's a pretty bad experience so now we have to think about designing something that when people submit the content we can return right away but at the same time we have to go do back background processing so uh

the good news is I do have job scheduling through courts so our if you're if you have no idea what I'm talking about our our servers written in uh C so we use asp.net and there's a job scheduling framework that's called quartz the quartz is really powerful it's great to use um I like it I think hangfire is another option I've just never used it before so I use quarts we use that for posting the content for leaving comments um and we'll be using quarts for for this part now so I'll will need to go make something that when we add content it says is this URL to our own blob storage if it is great we're done if it's not I need to go add this thing onto the work CU to go upload the content so I have that to do um there's

some weird like consistency challenges I have to think through but I think I'm just overanalyzing it um and that's because the the way that the system works is that it cares currently it cares about URLs everywhere and that's about to change because the system in the back end needs to care about resource IDs everywhere and now I need to try and decouple these Concepts because the front end will care about URLs the server will not it will care about resource IDs so I just need to make sure that the data that we have in place I need to make sure what assumptions I can make about that data so it'll be kind of neat but I don't have the answers yet so I just tried to take a swig of that and it was just like one Ice Cube It's like all that went into

my mouth no good so I'm about 5 minutes away from bellw here um which is nice it's not a bad Drive especially on a a Sunday like I'm in the fast lane but the Fast Lanes are free uh on the weekends and and late well in in the evening sort of like after rush hour and stuff they uh they become free uh in terms of a cost to drive on but also free in terms of who's around right so this drive is pretty quick I'm trying to look at the time it's only been like what 20 minutes 5 minutes away that's not bad at all um yeah should be okay it's weird I don't I feel like this isn't the right exit but whatever I trust my GPS where me meeting at a Starbucks but I thought that I had to this is always the

thing that that gets me we're supposed to meet at a Starbucks I'm pretty sure I know where it is from Google Maps but I'm looking at the drive here and I'm like this doesn't really line up for me um no no it does I have to go one more exit so you can't see it obviously cuz the camera's facing the other way literally right here if you watch my other videos this is where I merge over uh uh to drive to work so I just missed my work exit and I thought that that's where it was telling me to go I thought it was telling me to use my work exit the next exit is the one that I expect and that's what it's telling me to do so good news I'm not lost then the next fun part is the parking so bellw is

kind of interesting uh I'm not in bellw that often and every time I'm in bellw it just seems weird it's like you always no matter where you want to go you park in the same spot it's like there's a big underground parking lot that's under the whole city or something it's really weird uh so I never really understand it this says Northeast East okay 13B don't mess it up Nick okay and then I need the West one so here we go yeah sorry I'm going to be this is like the awkward part of the drive cuz I'm like oh I don't know where I'm going kind of do like I know I'm in bellw right now so far so good this I I wish you could see this intersection there's uh it's a five-way intersection so if you were to look straight ahead like for

my point of view it's a building so I think that's incredibly confusing cuz if you wanted to drive straight you might have people beside you that like now that's got to be classified as a left hand turn you'd have to see it it's really bizarre cuz I'm pointing literally at the edge of a uh the corner of a building I was watching the the other lane beside me and I was thinking like man this is not going to be okay but cuz two corners of traffic started driving oh this bump not good so this does suggest that it's on the other side from where I normally park but maybe that's okay I think every time I try to deviate from my parking plan I realiz like I shouldn't do that that lane was going to end that's weird the lane ends and then like 10

ft later it resumes on the other side of the light I don't know why it's like that but that's okay I'm going to park in my my normal spot I think maybe I can't no I'm not even where I think I am that's annoying I'm going to have to turn around or something uh well what I might as well do is end this because you're probably just going to see me getting frustrated trying to park so uh yeah that's what we're doing for brand ghost it's a it's a bunch of work but it's going to be challenging and exciting so thanks and uh I'll give you an update once I meet with Jade talk later

Frequently Asked Questions

These Q&A summaries are AI-generated from the video transcript and may not reflect my exact wording. Watch the video for the full context.

How do you and your team manage remote collaboration for building BrandGhost?
My team and I work very effectively asynchronously since we all have different strengths and are remote from each other. We divide tasks based on our skills, like front-end design or API development, and communicate through calls or chat. Occasionally, we meet in person to brainstorm and work together, which significantly boosts our productivity and clarity.
What challenges are you facing with handling media uploads and URLs in BrandGhost's API?
Currently, our system requires a public URL to post media to social media, which is simple but prone to user errors like incorrect URLs. We want to support uploading content to blob storage with internal resource IDs, but this complicates the API because callers need to upload media first to get a resource ID. We aim to support both URLs and resource IDs to keep the API flexible and user-friendly.
How do you plan to handle the latency issue when uploading large media files through the API?
Uploading large media files can take multiple seconds, which is a poor experience if callers have to wait on the HTTP request. To solve this, we plan to return results immediately and handle the upload asynchronously using a job scheduling framework called Quartz. This allows background processing of uploads while keeping the API response fast and simple for users.