Coding Blocks - Gitlab vs Github, AI vs Microservices
Episode Date: May 15, 2023In this sequence of sound, we compute Joe’s unexpected pleasure in commercial-viewing algorithms, Michael’s intricate process of slicing up the pizza, and Allen’s persistent request for more che...ese data augmentation. Will you engage in this data streaming session? The full show notes for this episode are available at https://www.codingblocks.net/episode210. Resources we like Tip of the week
Transcript
Discussion (0)
You're listening to Coding Blocks, episode...
Oh, whatever. 210.
Oh, I had other stuff to say.
You did.
I'm telling you, man, I'm so out of it.
So, behind the scenes things, we are recording it some ungodly hour of the morning
because alan needed to record early like mortal man it was not intended to be awake this early
and yet here we are so i might be a little bit off my game uh subscribe on spotify stitchify
itunify uh wherever you can find your podcasts visit us at codingblocks.net where you
can find the show notes examples discussion and more so for most people on the planet they're
probably usually awake and up a movie by this hour just just saying no no i beg to differ so if you're
awake you can send your uh feedback questions and rants to comments at codingblocks.net.
And you can follow us on Twitter at Coding Blocks.
Yep.
And we've got a website, too.
It has links to other stuff.
Like, I don't know.
I really don't know.
That was hard.
In a sense.
With that, I'm Joe Zeck.
I'm just kidding.
There's a bunch of them.
I'm Joe Zeck.
I'm up too early.
Yep.
And I'm Alan Under underwood normal time of day
for most people no it is not the stores aren't even open this is not open this is not normal
hours waffle house is open 24 7 that doesn't count plus people on the other side of the pond
are like what's a waffle house, they must make the trip.
They must make the journey.
Yeah.
We're getting Fizzolis back in Orlando, by the way.
Oh, really?
I love Fizzolis.
Is that a soda?
What is that?
It's real Italian, real fast.
Yeah, it's fast food Italian.
It's not either one of those, really.
But, you know, it's a medium.
It's a mid.
It's pretty good, though. It's pretty good though.
It's pretty good.
Free breadsticks.
Yeah.
And the breadsticks don't look like much, but they're really good.
Yeah.
Yeah.
They are probably better than all of gardens breadsticks.
All right.
I'm going to start the show with like, uh, you know, some controversy already.
Cause I'm not, I'm not a fan of like the majority of italian dishes that i've have
experienced or seen like i i just not a fan like it seems to center around like even the things
listening to what you guys are talking about like breads and whatnot but or or pastas a lot of the
dishes center around pastas right i'm just on you dude yeah i'm not a fan i'm not a fan either like i i don't want all those carbs i just
my entire life i've wanted all those carbs so yeah send me your rants and complaints to joe
at slack and uh yeah i'll respond there hey real quick though what's your favorite dish at fazoli's
uh you know what they got rid of them. I used to love the submarinos.
They're saying this now, but it's not the same.
And then when they got rid of those, I liked the pizzarinos, which they also got rid of.
See, I like their spicy ziti.
Oh, man, it's so good.
He keeps talking about like heavy carb stuff.
I mean, that's what Italian is.
It's all carbs.
That's what I'm saying.
Like the majority of Italian dishes that I've been exposed to, like I haven't found one that i'm like oh that's my go-to then meatballs they're all heavy
carbs but even aren't meatballs like uh made with bread some bread yeah there's a little bit of
bread maybe not a ton but you can just do the marinara sauce right i mean we're not talking
about health we're talking about good food oh okay i'm sorry and uh yeah so today on fooding blocks sorry uh yeah so so yeah um we got some some
random topics here if you want to kick us off here apparently we're gonna start with men's health so
yeah there we go, and proper dieting.
And facilities and facilities.
Oh, wait.
Huh?
Okay.
See, this is why we don't have reviews.
This is why we don't do this this early in the morning.
But we don't have reviews.
And if you leave a review or you want to leave a review, that would be super helpful.
We got a link, codingblocks.net slash reviews.
That would help us a lot.
And yeah, that'd be great.
Yeah, a little bit of a dry spell.
All right. So I'm sure you guys have heard of this term.
But with everything, articles and whatnot and like all the technology announcements
every cent uh i just kind of thought of like you know is this the rise of the prompt engineer
right and and so you've heard that term or have you yeah prompt engineer yeah the prompt engineer
no like instead of instead of like writing like you're using a prompt like an
ai prompt like you're just querying the prompt like hey write me a function that does blah blah
blah blah blah blah oh okay right and um so there was an article that i saw where stack overflow
our beloved stack overflow our source of truth that will be argued and told you that it's wrong and then eventually upvoted but then downvoted and you'll never know if it was truly right or not.
Stack Overflow has seen a decrease in traffic of 14% in March.
And it has been steadily down since the release of ChatGPT.
That is crazy. That's's brutal it makes sense i mean i mean think about it right just from a perspective of what are you going to stack over
flow for it to figure out an answer to a problem right and what is chat gpt good at asking it a
question and trying to solve the problem for you right like
it took out some of your mental cycles yeah i mean that's part of what the art the article is
talking about is that like on stack overflow either either platform right you were already
going to like ask some question to either one of those things and then it would you know give you
back some answer and you were never going to be like then it would, you know, give you back some answer and
you were never going to be like, take it directly. You, you're going to have to like do some
modifications. And so the article was making the point that like, well, even with Chad GPT,
you might not, you might be avoiding like the up down vote kind of scenarios, but you can ask the
question. Um, you don't have to worry to worry about your question being marked as a duplicate question or downvoted or whatever and never getting an answer.
Chat GPT is just going to respond.
And, yeah, it might not be the correct answer, like, right out of the gate.
But it's going to be close enough to get you into the ballpark to where you can start tweaking it to make it what you needed, which, you know, that's probably what
you want to have to do with Stack Overflow anyways, was tweak the answer a little bit to fit your
exact need. And they were saying, they were talking about how since, they were actually
seeing a decline even with Copilot's release, because Copilot was released earlier in the year uh in 22 than um chat gpt was
and you know so they were already seeing a decline and then it like just went exponentially like it
went it got significantly worse with the release of chat gpd so you just you just said something
that was really interesting to me and and I started reading part of this article that you linked here.
And one of the things I hadn't even considered is the time delay.
When you go to Stack Overflow, if you have a problem, right, and you can't find the answer on Stack Overflow. You post a question,
you're waiting for somebody to respond. It could be, it could be five minutes. It could be an hour.
It could be a day, right? It could be longer. It could be years. I've got questions on Stack
Overflow that is still gone unanswered. Yeah. Same, same. And it's usually because I'm not,
I'm not asking the same question that, the 500 other people have asked. Right.
And so what you don't get with chat GPT is that unknown delay.
You may not get the answer you want, but like you said, you can just keep asking question after question after question until you sort of get into the ballpark of it. And that's done within minutes.
Right. park of it and that's done within minutes right as opposed to putting something out there and
waiting for the crowd source to to come back with with something that may or may not be relevant
that's that's really interesting i hadn't even considered it yeah most of the questions i have
got answers you know weren't exactly positive experiences but they usually took days to get
that because they're you know pretty specific and you know uh what i've noticed that things that uh
that do get good answers
are really easy questions
and they get answers
and they get shot really quickly.
So it's almost like
there's a race going on
for people trying to kind of farm
karma or whatever,
which, you know, whatever.
That's a hard problem to solve.
But just not having to leave
the context of your editor
with Copilot is amazing.
And Warp AI, the terminal
we talked about that last time too.
It's so nice to just stay in the game.
And yeah, I've mentioned how I use it for Unity stuff all the time.
I mean, it's just incredible.
Like there's really tricky things with like linear interpolation or like sine waves or geometry, perpendiculars, tangents, stuff like that.
It's so nice to just be able to describe what you want.
And then you keep refining what your description is as you get answers that are closer or further away.
And to have that feedback cycle be quicker rather than Stack Overflow, wait a day, have somebody respond in some way.
And then you kind of go and you leave a comment and you go back and forth.
And that's just too slow for most things.
I mean, adding on to the slow cycle factor, I know. I mean, adding onto the, the slow cycle factor.
I know that there are a lot of times where like,
I will be super hesitant to post a question out to stack overflow because
more often than not,
I find that like the questions that I want to ask or the,
are the more complex type scenarios,
right?
So even to set the questions framework up,
it takes,
it takes some explanation to put the background behind what's trying to happen there.
And so I get it because if you're the person wanting to read and answer questions, you're going to be like, I don't have time for all that.
I don't want to go and set up something to even try to understand what you're trying to do. So you are already kind of deterred from
wanting to A, ask the harder questions or B, take the time to answer the harder questions.
So it's going to lend itself like we are lazy by nature, like as a, you know, civilization or,
you know, a being, whatever, you know, people are lazy know, civilization or, you know, a being, whatever,
you know, people are lazy by nature. So, you know, we want to go after the lowest hanging fruit in,
you know, most bang for buck, which is going to be those easy questions.
Yeah. And, you know, um, when you think about what it takes to even ask a good question,
like typically people are going to want to see an example and you can't just take what you've got.
You've got to simplify it. You got to rid of, you know, get rid of anything that's going to
be too specific to your use case in order to kind of boil it down
but gpt or you know whatever tool you're using your ide it's got the context right there you're
working with it in your stuff you don't have to clear out any of that junk it just goes yeah hey
so you know you said that the co-pilot usage had also gone down. It looks like it just shot up.
No, up.
It went up.
Copilot had shot up.
Stack Overflow was going down since the release of Copilot.
It was already going down due to the release of Copilot and then went worse with ChatGPT.
Okay, okay.
Got it.
Yeah.
And think about sites like we've talked about Baildong and being frustrated with like you search some like thing you want to do in Java and then you find like a a bail dong article or maybe somebody from like a code camp is going to
write an article for an assignment or something and the examples that they give you are like such
like happy path simple uh you know kind of boiled down examples and if you need to do anything
that's like integrating with other technologies even if they're really common like good luck you
know it's it's really hard to wade through the noise and yeah it's so nice to be able to like have you know gpt or copilot whatever like no this i like
this is my project it's obviously maven here i'm working with this version of the spring framework
like you know help me out with my authentication model or whatever yeah i think i've also made this
point um i think on like a previous episode where we had talked about like the rise of platforms like ChatGPT and just AIs in general or, you know, any kind of these bots that the generative AI and like what it might mean to the developer and the developer career. And, you know, my point has always been that, like,
I think that it's just going to be, you know, there will always be the same need, but it's
just like your tool set is evolving, right? So like the developers that are going to succeed
are going to be the developers that, you know, know how to use these tools. And it doesn't even
have to, I think I made this point too, It doesn't have to necessarily be, um, specific to developers. It could be, I think
we used in a previous example of lawyers, right? Like, you know, the lawyers that know how to use
these tools, uh, you know, if they want to generate a contract or whatever, or, you know,
have it understand the contract and, and, you know, verify a contract, those are going to be the lawyers that are going
to be more proficient, more able to succeed because they're able to iterate faster.
Yeah. Yeah. Interesting time.
So you know what's interesting though, and I don't know that we've talked about this so much,
I think we mentioned it, is as awesome as some of these tools are companies like big
companies software companies are very hesitant to use them for a number of reasons right like
one of them being that they don't want their own source code to get pushed out across the wire
right that's that's huge and then the other is the source code that chat gpt or any of these
things brings back isn't necessarily coming back with the same license information like you don't
know what licenses you might be um violating if you take this stuff back and those are two
huge problems that i have no doubt they're going to be solved
at some point, right? Because this stuff is way too important, but that is something that you
need to absolutely be aware of. I know we talked about stuff being sent out over the wire. I think
we did that a couple of times, a couple episodes back, but you also need to be aware that you got
to be careful, just like Stack Overflow we've talked about in the past.
If you copy and paste something from Stack Overflow, they actually have a usage license that you have to include and link to the page and all kinds of stuff.
And most people don't do it.
Yeah, for sure.
And I forgot what I was going to say.
I totally forgot what I was going to say. I totally forgot what I was going to say.
There are, though, upcoming solutions, Alan,
for hosted versions of these,
so that as an enterprise,
you could have a hosted copilot
or a hosted chat GPT
so that you can not have your IP
going out into some other external you know, external model.
I I've heard about it, at least for copilot. I'm not sure about for chat GPT. I might've
misspoken there, but, um, yeah, I've heard something on that too. It seems like that's,
that makes sense for your stuff going out, right. For it being able to search your code and all that
kind of stuff that, that makes total sense. But on the opposite end,
when you ask it for answers to things,
is it limited to only your source code or is it still going to be,
you know,
scouring the web of,
of code out there?
It'd be limited.
So the model,
the model,
the idea is that you don't want it.
You don't want,
okay,
let's say that I am your employer. The idea is that I don't
ever want your AI queries to go out external and how am I to know, you know, the type. So like,
I'm just going to like keep it all in, but I might like whatever service that I'm getting,
like this, you know, co-pilot hosted co-pilot service that I get from Microsoft, you know,
there's going to be refreshes to that model and updates to that model
that are based on externally trained information.
That's definitely more interesting.
I wouldn't be surprised if companies don't spend a pretty penny on that.
I would think that's a huge gold rush.
I assume Google Bar and stuff like that, a lot of things coming out and even Alpaca and Llama, like the various open source models.
A big part of that has got to be the solution to that.
I think that it's a no brainer that huge companies are going to want this tool.
Otherwise, they're going to become dinosaurs and they don't want their stuff leaking out.
They don't want bad stuff leaking in.
So, yeah.
And even just refreshing is tough.
Like GPT is not refreshing data.
Like they're
capped at basically like late 2021 for 3.5 and 4 so like there's you know that's going to get
out of date and so having control over what kind of data you let in when you let it in is really
important that's based on the current version 3 though right so 2021 is also uh wait it's uh it's capped at 2021
for version for chat gpt3 for four oh four was two i thought four was newer okay yeah it might
be 2022 uh it's like it around that time period but it's not like you know constantly being
updated with uh new data as far as i'm aware well yeah because at the moment it it takes so long to
train the model right so you you have you have this problem like that yeah i get it do you guys recall when we first like if
you had to take a guess when do you think we first talked about co-pilot oh man a year ago
so may of 22 we'll call it joe yeah i was gonna say probably i'll go i'll go with that july of 21
wow yeah episode 163 is when we first talked about co-pilot that's that's when it first
dropped isn't it when it was in preview mode limited preview mode at the time
yeah it's funny it's definitely one of those things i was just totally wrong on like the amount of usefulness i would find yeah i i mean honestly i don't think that i i don't i don't i i probably
didn't want to be a naysayer but i'm sure that i was like eh whatever you crazy kids and your
silly extensions for the you know vs code because that was kind of like how we talked about it at
the time was that like oh it's just another extension in the vs code like maybe it'll be helpful
it's funny a lot of times like i'll hear some about something like that and my excuse for not
trying it or my reason for not trying will be that it solves a problem that i don't have
and at the time i'm sure that was my opinion on it and it seems like whenever i've had that
opinion or at least not always but there's been several times when I've had that specific opinion of like,
it solves a problem I don't have.
It's like, you know, it only helps a little bit.
I'm wrong often.
Well, you don't know.
If I have that opinion, then I should try it.
Yeah, I mean, that's the thing.
You never know until you actually get into it.
You don't even realize the use cases it might handle for you that you hadn't even thought about.
I,
you know,
I mentioned that,
that baseball thing that I had talked about doing the,
the whole,
um,
not batting lineup,
but the fielding lineup.
I think I am going to give that a shot with like chat GPT and just see if I
could talk or,
or ask my way into an application and see what happens.
Heck yeah.
It's fun.
If nothing else.
Yeah.
I bet. I bet at some point uh during
that conversation of uh co-pilot i or one of us probably made a comment about like comparing it
to like a file new experience that that's my that's my gut is i guarantee you in episode 163
i probably said something like oh it's just going to be like
another file new experience except for a particular function it's filed new for a specific function or
something like that like yeah like totally downplaying like or or not understanding like
to your point jay-z about like not having that problem or you know not not thinking you have that
that problem yeah that's funny huh i kind of want to go back and listen
to it now yeah it's like it wasn't even that long ago it's crazy and it's we even have on the page
is this the future but that's that's my point though is it is kind of like it was two years ago
so we were talking about this thing two years ago and totally downplayed it you know and and didn't we totally underestimated what it was
going to be and then last year stack overflow starts to see this decrease in their traffic
and then boom another uh you know competitor to co-pilot which is chat gpt comes out and just
destroys stack overflow in their traffic and now Overflow is trying to come up with answers
because Stack Overflow had already banned answers
that were generated using ChatGPT.
They said it violated their terms of service,
which I don't know which specific terms of service,
but maybe some kind of copyright thing or whatever.
I'm not sure.
So they had already they had
already banned it now they're talking about like ways that they can incorporate generative ai uh
solutions as part of part of their answers so well they they did say that it um it was a violation
because their their answers were too often incorrect yeah that's that's funny but it's like you said
you're not necessarily looking for the perfect answer you're looking for something that that
sort of nudges you but maybe not so gently in the right direction let's be honest though how many
answers are on stack overflow that are incorrect i know right yeah so even there are even accepted
answers so how was how would chad gpt be any
different in that regard if that's your only measure i mean how many answers on stack overflow
or why are you doing it that way it's like dude that's not the question i asked you
that's ridiculous well sometimes there are like good suggestions like oh you should do it this
way and then you're like oh i didn't even realize that was an option. Right, yeah, totally.
And then what I hate is when that's not the approved answer.
Yeah.
Also, they'd be like,
how do I do this thing in Mongo?
And they're like, you should do it in SQL Server.
And you're like, well, I don't have SQL Server.
You should get it.
You should install it.
Yeah.
Here's the download link.
Yeah.
That's right.
That's not the question.
Yeah.
The comments are always, I almost have gotten into the now of like looking for the most upvoted comment.
Yep.
Same.
I always find the best context in the comments.
Yeah.
Well, I got a kind of a funny one for you.
This is kind of related.
We talked about prompt engineers, you know, or mentioned it briefly a minute ago.
Someone claims to have leaked the prompt that Copilot uses.
Copilot uses GPT-3, and it's not so much that somebody potentially actually leaked this stuff,
but I think it's more interesting that, number one, it's really hard to prevent generative AI.
I hate that word, AI, but anyway, generative models like this from leaking information that you don't want it to about itself. And also,
okay, I guess there's three things. So the second thing I thought was interesting
is how do you know if it's actually the prompt
or if it's just hallucinating or, you know, if it's
revealing something that's similar to
you know like how do you really test it uh but it might be good enough so who cares um but the
third thing the final thing i wanted to mention i'm sorry for running through all three but um
the third thing i want to mention is just uh we might be entering in this kind of time period or
like lose for a little bit where
just having a good prompt could be enough for a business. Like if you came up with a really smart
prompt for, you know, I don't know if you've seen this, but you can be like, listen, here's your
role. You're a programmer. Uh, here are your set of languages. Here are the licenses you can pull
from. You know, you kind of just like preamble set up and then use that as your first, you know, step and then everything else uses that
context.
So it's kind of crazy to think that like Copilot in a way might just be, you know, kind of
a simple prompt and a few other little things about kind of, you know, sprinkling in some
extra data.
And that might be enough to make a really compelling product
just a little bit of preamble on this thing so by the prompt you're referring to like
it's it's rules of engagement like uh you know it's almost like the three rules of of robotics
in like iRobot type of thing except there's a lot more than three when you look at this thing.
Yeah, and I'll get,
we'll talk about it in the tip of the week session,
but my tip of the week is a music tool
for generating music.
And my wife was doing cool stuff,
like saying Spanish guitar with hip hop beats.
And so, you know, that came out
and she kind of liked it,
but she kept refining from there.
So she'd say big bass drums, lots of high hats, like Django Reinhardt style Spanish guitar.
She was like, you know, kind of drilling in further and further on stuff.
And you can kind of imagine like at the end, she's got this whole paragraph of stuff that she used to describe.
And she can start with that next time she gets in and say, here's what you're starting with.
Now, give me something minor key and slow now give me something uh faster and you know i don't know three four time something like
that but there's something um valuable about just having that prompt and that's where that prompt
engineering kind of job title comes in it's like someone who really understands how to create those
and set them up so that things generated in the future kind of have that good context and good starting spot to jump off from.
I mean,
this is kind of not where you were going,
but one of the things that made me think of it.
So in the,
in the guise of like we,
we,
these tools allow us to do things faster or that we might not have otherwise done,
or that might not even be like technically like quote humanly possible kind of thing.
Cause like you were describing like creating music and, and whatnot with it. And you're like,
Oh, I want a lot of hi-hat or, you know, a lot, I want more drums or whatever.
It made me think of like, uh, I recently learned about drum triggers.
Oh yeah. it made me think of like uh i recently learned about drum triggers oh yeah and so where like you can create drum rhythms that are not humanly possible like you can't you can't hit that beat
fast enough you can't like move that fast but you can you know through the use of you know these
tools that we have you can do things that you can't really do. Right. Like, I mean, even like an electric guitar technically is kind of like that too. Right. Like you can make,
you can make sounds with an electric guitar that you would never be able to pull off acoustically.
Right. Um, so, you know, to that end, it kind of goes back to my point before,
like, it's just a matter of like learning how to use these tools uh and that you know that's where you're
going to succeed you don't see like the same well i was going to make an acoustic reference
guitar reference um but there are like you know wildly successful acoustic guitar players
so i'll stop that thought so when you say prompt i've been looking at this article that you shared
where their prompt leaked i guess is what what the the whole claim yeah that's the claim and
really what it looks to be if you go to the main twitter page where this thing was first posted it looks like what they were able to do was basically dump
out the rules of the the engine that's being used and i guess that's what you're talking about the
prompt right like um what what maybe it's hard to describe it right because these rules are human
humanly readable but they're basically like parameters.
To me, it looks like pseudocode in the effect of you.
Like when we talked about in the past, like in interview, right?
If somebody gave you a problem to solve, you pseudocode it.
Okay.
It must do this.
It can't do this.
It should do this.
It can't do this.
That's what this looks like.
And I guess that's what you're saying a prompt is.
It's basically a collection of these rules that determine the interactions
and how this thing can go back and forth between the user?
Yep.
Okay.
And they basically, it's like they ask ChatGPT to describe itself sort of thing.
But that's why I made the reference to like the i robot the rules of robotics because like it doesn't go into the details of like how do you
code that specific thing it's just like at the high level these are the bullet points except
there's like 20 of them yeah now if you ask gpt questions about like certain things like legal
advice or medical advice it's going to give you a warning and it's going to push back on on answering
anything uh and so you know for safety reasons and there's all sorts of
other controversial topics that it'll kind of stay away from and you can very quickly find
yourself getting kind of, uh, like I can't talk about that type things, but if you know the kind
of prompts that it's using kind of as like a precursor to everything you're doing, you kind
of tell it to undo some stuff. Like, uh, I'm looking at this thing here, right? Like one of
the things is like, don't answer any questions that aren't related to development well you can imagine if you're you know like if
you have the prompt the first thing you do is say like only answers only answer questions about
development and it's really hard to kind of i don't want to use the word convince but it's
really hard to to make it so those rules can't be changed and so so it's so hard to, to use these, like use the tool for itself
without letting people modify it or get rid of those, uh, those, uh, guardrails. And we talked
about, I think we had a list of jailbreaks a couple episodes ago as a tip, like people were
coming up with those all the time. And like the list has gotten so big, that's more about like,
like here's the various different techniques you can use to jailbreak because it's so easy to come up with them.
Again, this just all goes back to supporting the rise of the prompt engineer, though, because now, like, the prompt engineer is, like, learning how to interact.
Like, how do I bend this thing to my will, even though, like, that's not what it wants to do, right?
And you look at, like, every tool that we use right you know a hammer doesn't want to move but we've learned that hey if i swing it
i can drive this now right you know what i mean so uh yeah i mean and so yeah this is like that's
the time that we live in now it's it's it was the lesser known arnold schwarzenegger uh sequel to the terminator but
it was definitely like part of the franchise yeah rise rise of the prompt engineer yeah yeah it is
yeah nice uh yeah so i just thought that was kind of cool um a couple other things here i thought
were interesting uh we've got some links here if you can click on them uh now i want to talk about
it's kind of interesting so uh i was curious about github um projects and like was starred and actually i started with this not even like
curious about i wasn't even thinking about gpt at the time i was just like
you know i've never really looked to see or i haven't looked in a long time to see what the
most popular projects are and what's kind of funny first of all is that github almost kind
of obfuscates it now i think a lot of people were kind of buying stars or like writing bots to like
star accounts and so they've kind of gotten away from it but they do have a trending section
that they uh promote and if you take a look at that uh that trending section you notice any trends
the scene yeah yeah a little bit of ai stuff yeah i mean like almost everything yeah it's everything
like seriously yeah i'm seeing like auto automatic plane ticket pricing generate three objects Yeah, I mean, like, almost everything. Yeah, it's everything. Like, seriously.
Yeah, I'm seeing, like, automatic plane ticket pricing,
generate three objects, all sorts of crazy stuff.
Private GPT, Lama.
Smart GPT.
Smart GPT, yeah.
I mean, there's a Rasa GPT.
Yeah, open chat video editor.
So this is kind of like, this was another thought.
I didn't put this in the notes, but but like as i was putting some things together i thought about this one which was just
like all recent news has seemed to be like related to some type of ai type thing like any of the like
the big headlines right you know like it reminded me of, say, like after the iPhone was announced in 2007, right?
There was this period of several years where it was like all of the like, quote, big news events were all related to something mobile related.
It didn't necessarily have to be Apple.
It could have been Android or Microsoft or whoever.
But it was all all the big
headline stories were all mobile related and right now what we're seeing is like all the big headline
stories seem to be ai kind of related so it makes sense that like that's what's trending on github
yep yeah no i was oh go ahead i was gonna say what's interesting is your second link is GitLab, and it's totally not that.
Yeah.
This is all software that we know and use a lot.
Yep, totally.
So a lot of open source organizations.
So trending, it's stuff like there's some Android tools.
There's Inkscape, a popular video image editor.
iTerm2 is on there.
Inkscape's a vector image editor oh yes it's actually really
good it's like adobe illustrator a free version type of adobe illustrator oh nice okay i see
tortoise get on here so to me it's more just about like the kinds of this shows you the kinds of
organizations that are using gitlab as opposed to github which I thought was very interesting. Yeah, same.
And GitLab actually does give you an easy way to see most starred.
And if you look at it, GitLab stuff is at the top,
and Inkscape is actually number three,
which I barely even heard of it.
So it was interesting to see that being ranked so high.
Yep.
It's still hard. One thing I want mention so there is one uh one last thing um it was the most starred tab underneath the link so the link went to the trending but next to it said most
starred yep and i'll rearrange the links here to get that there and so it's just kind of interesting
to see like and that's just a further example of like how different the clientele is, the customer base of GitLab versus GitHub.
There is a way I found to see the Git star, the Git rankings.
It's through a third party site.
So, you know, who knows?
But that was pretty interesting.
So you can actually see the organizations there.
So like Microsoft is actually number one to like over two million stars.
Google's number two, one million.
So I just thought that was kind of interesting.
And,
uh,
do you can see users like the users that have the most stars?
Like I clicked through a couple of them.
A lot of them have like kind of beginner friendly information,
almost like,
um,
free code camp.
The people buying free code camp are way up there.
And people who write like books,
like you don't know,
J S the book,
uh,
is on GitHub.
And like people started that a lot is it's
reference material um the number one repository though on github is free code camp and the second
is like a how to program a collection of how to program books so just again just kind of noticing
that divide and like the kind of people that are using github and starring github and treating it like a social media hub compared to git lab i just thought was interesting it is i you know um where is
is uh oh my god react where is that hosted uh it's on github it's number eight on the most
popular repository most oh it is right above it i I see it. Angular, I don't see on there. It was shocking to me that Vue.js
was in the top 10. And right under React 2.
Yeah, barely below it. It's crazy. I never would have guessed that.
I wouldn't have either. And I didn't even see it right above it. But yeah, that's
shocking. Is Vue really that popular?
Yeah, hard to say oh i kind of thought of the uh the framework wars kind of being over you know like right it's been a while since we've had like
a new you know framework that people are really talking about a lot um but it seems like even if
you look on organizations uh facebook is number four and vjs is number six yeah that's so it's also if you look at the users
and then look at repositories so like the top three users for example or actually top
four five i see at least the top five users are also in the top five are also in the top 10 of repositories. Yep.
So like the one that was just called awesome.
Did you look at that?
Yeah.
Awesome lists about all kinds of interesting topics.
Yep.
That's pretty cool.
So I'm going to bookmark that one and see if I,
you know,
I guess people must like it or maybe they bought all the stars.
Who knows?
I mean, a lot of stars to be buying.
Yeah, that is a lot of stars to be buying.
This,
this reminds me of stuff that we found in the past where we'll find a,
basically a get page that's more or less a read me with a bunch of
interesting links.
Right.
And that's what this looks like.
Yep.
All right.
Well, let me jump in here.
I don't want to cut Joe off.
He's already spoke too much.
So if you haven't already left us a review, we would greatly appreciate it if you did.
Sad face.
We haven't had one in a minute.
So, you know, we would appreciate it.
You can find some helpful links at www.codingbox.net slash in a minute so you know uh we would appreciate it you can find some
helpful links at www.codingblocks.net slash review hey you know what maybe i should let joe do it
maybe that's why like maybe i've been jinxing it joe how about you howdy there everybody we can
really use a couple reviews there if you could sling them our way over here at the codingblocks.net
podcast i'll see you there why do i feel like i'm at the, like, what's the rusty saloon at Six Flags?
Or, you know, or like whatever that, what's that little play area where they do the live show?
Yeah, that's amazing.
I was totally ripping off.
We have a Family Auto Mart local store here.
I grew up seeing commercials from Family Auto Mart.
We'll see you there.
Yeah, I miss those commercials. I just realized after after i started that that was like extremely local that's amazing well not anymore it's not so you know now it's yeah now it's
worldwide that's right i don't want your your uh your global now but um the commercials are
up on youtube so i'll have links there in the show notes. Look at that. Have you ever seen where somebody like a John Oliver, for example, will pick some local company that makes funny commercials,
and then that company kind of explodes in popularity for a minute?
They have their minute of fame.
I remember seeing some for funny local
dealership car commercials.
You know what I'm talking about?
That's exactly what this is.
That's awesome.
All right. Well, it's time
for my favorite portion of the show.
Survey said.
All right.
Now that we all know what
Tutco's trademark rules of engagement are, we can use them.
And this is episode two 10.
So Jay-Z, you are up first.
Okay, let's do it.
All right.
Are you ready?
I think you won last time, right?
No, I destroyed him last.
Oh, that's right.
Destroy.
Alan.
Alan began his winning streak of one.
I did. I obliterated him. Are you ready to began his winning streak of one. I did.
I obliterated him.
Are you ready to end that winning streak?
Yeah.
All right. Here you go.
Name something kids use for fun, but adults use for exercise.
Wow.
Kids use for fun.
I'm going to go jump rope. Jump rope. rope okay i think i got the number one answer here
dang it let's hear it bicycle cycling okay i can't believe jay-z you didn't say that nope
dang honestly as somebody who bicycles i was kind of surprised you didn't
too yeah that's why i think it's fun that was i'm not doing exercise
you're still a kid is what you're saying yeah yeah number five answer on the board
swimming pool number for three points number four for six points trampoline number three answer on the board for 18 points. Jump rope.
Right.
Number two answer
on the board for 24 points.
Just plain old
ball.
Ball.
No specific ball, just ball.
It's like a
Ren and Stimpy commercial.
It's ball.
It's ball. it's like a ren and snippy commercial well it's great for a boy wait no how's it go again what's it's great for a girl
yeah it's whatever all right number one answer on the board for 48 points. Wow. Bicycle or technically bike.
Okay.
Was the way that it was worded.
All right.
Are we asking GPT?
Did we do that one at a time?
I forget.
It said running or playing.
I asked after I answered.
Running or playing.
Okay.
Let me add chat GPT to the board here.
Chat GPT.
And its answer was what uh running running was not on the
on the list so chat right it's zero and let me uh chasing maybe you're being chased like when
you're a kid yeah sure but running no nobody just likes to run all right i said kids engage in it
without even thinking about it.
It's exercise.
Now, you can't ask it the question before you've answered the crazy.
Yeah.
That would be cheating.
That would be cheating, sir.
Can I trust you?
No.
Okay.
I'll let you do the Chad GQP interaction since you're already there.
But yeah, we're going to change that from the future ones.
I'll do it.
Yeah, because you can't be trusted. You're going to cheat.
He was honest in his
possible dishonesty.
It doesn't make it better.
Sure, I killed that guy.
Yeah, right?
He deserved it, right?
If it's fun or
in my benefit.
Jay-Z, this is to jay-z this is you no it's mine no you went first oh yeah yeah yeah you're right you're right don't try and cheat me
well i mean i wasn't cheating if it's if i'm honest about it who's the cheater that's right
if you're honest about being dishonest okay Okay. Wait, does that hold up in court?
Alright, name a place, Alan,
where people watch
the clock.
Work.
Okay.
Is sports an answer?
Is that a place?
Is that your answer?
I would suggest not going with that one
people don't watch the clock uh but that's actually not a bad
yeah i'll say the olympics okay that's that's uh that's the sportiest thing there is right
i don't think you're gonna all right and what's the what's chat gpt's answer um we say what's uh
name a place where people watch the Name a place where people watch the clock.
One place where people watch the clock.
This is another reason why I'm going to do this.
It's at work.
Next answer.
Okay.
I can't repeat.
This is Family Feud rules, yo.
Yeah, man.
Let's see.
What is the second?
Likely be school.
Dang, that's a good one.
Okay.
So, number four answer on the board, airport for three points.
Sorry, that was the number five.
Sorry, I think I said four.
Number four answer on the board for five points doctor's
office number three answer on the board place of worship for six points
number two answer on the board olympics wait what no no yeah that's right. What's up? Take it. Take it.
School.
Chad GPT.
Chad GPT is on the board with 26 points.
Number one answer on the board, work, for 57 points.
Ooh, this is getting big, Jay-Z.
Yeah, it's getting close.
Nick and Nick. Jay-Z, you just need all hundred of the next response.
I believe in you though.
I believe in you.
And that's where,
that's where this could happen.
Okay.
So all right.
Jay Z,
as is tradition,
you get to pick the next question.
Are you ready?
Here are your choices.
If there were a gourmet cafe for dogs, what coffee flavors would be on the menu?
Or name something in an office that makes lots of noise.
Or name something people wear that has a company logo on it.
Okay.
I'm going to go with the first one. I need you. with the first one tetupt still generating so give me a minute i knew you would all right so i went ahead like
you can copy and paste it from the chat so that you don't have to type it next time oh thank you
all right but you have to answer first though so what's your yeah what's your answer uh it's bacon
bacon coffee bacon flavored coffee okay you this is where like we need a sound effect for like good I haven't. It's bacon. Bacon. Bacon-flavored coffee, okay?
This is where we need
a sound effect for like, good answer, good answer,
good answer. You know, like where the
rest of the family weighs
in. Alan? That it's
right.
Right.
They love
every piece of food that isn't their own um let's uh
beef beef okay and what was chat gpts well it's a fun idea it's important to note that
dogs should never consume coffee zero but uh let's see the most uh they said broth brew broth brew okay yeah okay
here we go strong answer there no good answer good answer good answer good answer you ever
noticed how like sometimes where like the the family member will say something like that and
all the other family members will still be like there'll be like this pause where you know that
they don't really mean it,
but there'll be like,
we're supposed to say it right.
Man,
why did,
why did we invite you to the show?
Why didn't we get Sally instead of you?
There's always like a pause when you know that they don't really mean it.
All right.
So,
uh,
number five answer on the board for eight points.
Cat.
Oh gosh,
that's awesome. Number four answer on the board for nine points. Cat. Oh, gosh. That's awesome.
Number four answer on the board
for nine points.
Chicken.
Number three answer on the board
for 13 points.
Bacon.
Oh, what?
Did I go higher?
Oh, man, it's cheese, isn't it?
Number two answer on the board
for 25 points
milk bone no these people nobody likes milk bones number one answer on the board
beef for 43 points look at me that's two shows in a row. I've got number ones on all of them.
But these people don't have dogs.
It's not fair.
Everyone knows it's beef or cheese.
That's the biggies.
Well, beef was it.
Well, the real answer is whatever you're eating.
I mean, you said it.
I concede that question to you anyway.
That's the real answer.
What are you holding at this moment that could be consumed?
Notice how well Chad GPT did.
It got almost nothing.
So it was confidently wrong.
Yeah.
I read the very short amount of the several paragraphs that it wrote to me,
explaining to me why I shouldn't give coffee to a dog.
Yeah.
But it did recommend flavor to us like peanut butter or pumpkin.
If I'm trying to get a dog to eat something, you know, like medicine.
What were the reasons why the dog can't have the coffee there?
It's toxic.
Oh, it's okay.
It is toxic to a dog.
There is a product named Dog Coffee, which is not actual coffee, but it's a safe, herbal, caffeine-free drink for dogs that mimics coffee.
Yay.
Yeah. Huh. Well. Yeah. a safe herbal caffeine free drink for dogs that mimics coffee yeah yeah huh well yeah so uh alan
is on his winning streak of two that's right command like just destroying like just kicking
tail taking names and that's why that's why jayZ, you get three more questions. You ready? All right. Go.
All right.
So yeah.
So let's get back into it.
All right. So I was having a conversation with somebody at work the other day and it was interesting
and it had me, you know, it started percolating in the back of my brain.
So, you know, imagine that you have like many do these monoliths and they're
touching everything right like they're touching your your sql server database they're touching
your mongo database they're touching elastic search they're touching like everything and
and he was like you know hey we should split these things up so that you have a
service that talks to postgres then you have a service that talks to mongo and you have one talks sql server and you have one you know so sort of
breaking these things up by their technology and i got thinking about it and we've talked about this
before and maybe it's the fact that we we went through um what was it designing domain driven what domain driven design right yep it might be that
is something designing data-driven uh application technology stuff yeah it's all blur yeah it is it
really is um so i got to thinking about it and i don't know that i love the split up by technology
just you know as i was sitting there letting that thing just sort of kick around in the back of my brain,
I think that that's one thing that I really liked about domain-driven design was break up things by their use cases, right? So I think one of the examples that was given way back when was you're going to have databases,
right?
And that database might share stuff that has both inventory and customer service type stuff
in it, right?
That doesn't mean you should have a service that talks to your database and is like get inventory and get, you know, customer or whatever.
You should have services broken apart that are like, you know, ship something and then it knows how to reduce inventory or find out how much inventory is on hand for a customer.
Right. Like they're very specific use cases.
So in the back of my head, I was thinking when it was first discussed.
Yeah, sure. Let's break it up so that Postgres has its own drivers and it's used over here and, you know, whatever else is used over there.
But the more I got thinking about it, the more it should be broken up by,
what does the service need to do?
And if it needs to touch Postgres,
and it needs to touch Elastic,
and it needs to touch whatever else,
then those should be available to that service to do so,
because it knows how it needs to coordinate
those various pieces of information.
So, all right, go.
But the point, though, I think, was that in your Postgres example,
you would still have the things related to doing Postgres-related connections
and reads, writes, closures, whatever, in a separate API.
And now on top of that thing is the more specific,
like you said, sell, I think was one of your APIs, right?
Like that's a layer on top.
Because then that way, if you decide like,
oh, I want to swap out Postgres,
it's just that one thing that's changing out from under it.
And plus, you don't want all of your other
APIs reinventing the wheel for like how they're going to connect to Postgres or manage their
Postgres connections, right? You still want to, you still want to consolidate that logic within
your, uh, the scope of your application. So I think that's actually, you just brought something
to surface that I think is really important is a lot of times when you talk about API, I think it was used sort of interchangeably with service,
you know, and so it is two different things. So you should have an API for dealing with
Postgres, right? And then that API can be used by multiple services. So I think when we were
discussing it, it was more like,
hey, there should be a service for talking to Postgres and there should be a service for talking
to Elasticsearch. And I don't think, I think what you just said is better, right? Like an API in the
terms of, hey, there's this library that has a set of APIs that you could use to interact with
Postgres. So that's what you just said, as opposed to, hey, here's an API that has a set of APIs that you could use to interact with Postgres.
So that's what you just said,
as opposed to,
Hey,
here's an API that you can call,
you know,
well,
service type thing.
I guess that depends though,
too.
Like,
like,
um,
as part of your context,
like where does that data storage mechanism,
like who owns it,
who's responsible for it.
If it's part of your thing,
then maybe, you know, data storage mechanism, like who owns it, who's responsible for it. If it's part of your thing,
then maybe, you know, you can just break it off into a separate API that, you know, you can still call. But if it's external to you, then I think the point of like Uncle Bob's,
you know, clean architecture and even domain driven design, like those types of ideas, was that if you aren't in control of that thing,
if somebody else owns that data store, then you should put a service layer between you and it
so that now you only have that one thing that needs to change
if anytime there's updates to that other data store that's out of your control.
Okay.
So if we were to extrapolate that a little bit more, then are we saying then that you should have a service stood up for talking to
each data storage technology,
and then there should be a service behind that that knows how to coordinate
talking to all those services.
Is that kind of what we're saying?
So,
so for instance,
there's a service that talks to elastic.
There's a service that talks to SQL server.
Um,
and then you have another service set up that says,
Hey,
I need to place an order,
right?
So that means I need to tap into the SQL server service.
And then I need to tap into the Elasticsearch service. Is that what
we're saying? I'm not going that far. I'm saying that if as part of deploying your application,
you're also going to deploy Postgres, then you can just have an API that your code uses that
can connect directly to it, right? But if you don't own Postgres, if that's somebody else's, then my
take from those books that I referenced was that you should put a service between your code and
that thing as a layer of protection. Because if we flipped it, and let's say that it is your
Postgres instance, for example, but you don't want other teams making direct connections to your Postgres
instance. So you might offer them like, hey, here's the API that I will make available to you.
If you want to read or write to the data store, this is the way you do it. And maybe you don't
even tell them that behind the scenes, it's Postgres, because honestly, they shouldn't
know or care. They have no reason for it.
Yeah, I mean, I don't know.
I'm happy to have those be libraries for the various technologies,
but there's something, I don't know, I'm just so tired of services.
I'm so tired.
I give up.
I'm sorry about Kubernetes.
I'm sorry about ever signing up for this world.
I don't want any network.
No more internet. I'm going back in back in time
it definitely gets complicated right like wasn't there an article that just came out recently
about amazon was going back to monolithic type yeah um applications because microservices are
freaking hard well that that um in their specific case uh i read the article uh their
specific case that was kind of part of it but i think there was some performance gains to be had
like it had to do with uh video processing and they found that they were able to do it more
efficiently by kind of um doing the video at once rather than frame at a time um so in that
particular case you know i i think it was a little bit different, but there was a whole lot of discourse on various, you know, like hacker news or reddits or whatever, kind of talking about the focus more on the services.
And there was a lot of, you know, back and forth, a lot of people saying, you know, services, you should break stuff up as you can kind of scale independently.
Serverless is the future.
And there are a lot of people saying, let's go back to monoliths.
I hate this.
It's not efficient.
The conversation has been really, really, I don't know, interesting, I think.
And we've talked a little bit about before.
Like, you know, I think I'm still having another definition of like if it shares data stores,
it's not a microservice.
I was actually going to bring that up because you had made that comment the other day.
We were having a discussion about something.
And you're like, yeah, they're not really microservices anyways because they're using the same data storage behind the
behind the scenes but i don't know i mean yes when we went through that um hey it was some online
thing that we had found that was the microservice thing and they said basically every service that
you ship should have its own data source right or? Or data storage, which I like that.
And I think that that makes them able to actually truly scale independently, right?
Your data storage is going to be your bottleneck on most of this stuff.
But I don't know if that is a hard, fast, like only rule, right?
So the only reason I say is if you're using something like S3 with Amazon, technically it could probably scale more than what your microservice can.
Yeah, that's your weak point in your scaling, then yeah, maybe microservices don't make sense.
But if you have a data storage like a Hadoop or an S3 or something like that, then I don't think that that's necessarily a hard, fast blocker for a microservice for being able to scale things.
Yeah, I think a lot of it has to do with
schema too so you know obviously there's not as you know s3 is like it's the data store but it's
kind of a different beast but if you've got like two services sharing a postgres database and
sharing talked in the same tables so if you change a table schema you have to roll both out you know
things like that yeah those are the kind of dependencies like where you're both you know
tied to the same thing if you're both coupled to the same service and you're also coupled together transitively okay i like that so basically
you could break things if they don't so it may not be a scaling issue at that point it's just a
super tight coupling that if if somebody makes a change to that postgres database then you break
one of your microservices it wasn't ready ready for it. Right. Yeah. Well,
so then I'd argue it's one application.
So,
so I have,
there was a lot said and I have,
so I have two things that I wanted to respond to.
One was the,
the,
in relation to the article and,
and people going like,
Oh,
let's go back to monolith or,
you know,
microservice,
everything like it still to this day, just bugs me that
like, as a society, why have we not learned yet that there's no one answer for everything?
Like what worked for you isn't necessarily going to work for me or, you know, it's always,
it's always a mixture of everything. So I, I can't stand it when I hear answers that are like all or nothing for one thing, regardless of what it is.
It just irks me.
But then you're talking about this transitive dependency thing though, too. I mean, I feel like there's a thing of like, well,
you know, should, should, should both of those things though, in the example you gave of querying
the same table in Postgres, right? Should both of those things have that level of access to it?
Or is it the case that maybe the team that owns it should have really put up a service in front of it
to to prevent you from being able to get data or access to their data directly right and if they
didn't then you know i i don't know why that choice was made but like you know that that's
the question that comes to my mind is like should there have been as something in front of that like should you have i question like should you have
that level of access you have just because you have it and yes i see where i i understand what
you're saying about like this dependency has been made but should it be and that's where i question
that's interesting though because okay so let's say that you don't give somebody access directly to your table and instead you do it through a service.
You could still run into the same problem unless unless you did what we've talked about in the past where you version your APIs.
Right. So, yeah, I mean, there's there's all sorts of ways that that the team that owns that could prevent that.
Totally. But you could also probably say the same thing about the database.
I guess my point is, if you pointed everybody at a service and they're pointing at the table, right?
So you own the service, you own Postgres, and you own the service.
If you modify that table in a way that requires that you modify that service in some sort of way,
anybody that's using that service is still going to break.
No, no, no.
Because their inputs and outputs might not need to change.
Well, that's what I'm saying.
I'm saying in some sort of material way.
I'm saying that you actually had to change the thing, right?
Well, that's where you would version it, though.
And that's what I'm
saying. So if you created a V2 of the API and left the old V1 of the API, assuming that's even
legit, it may not even be possible, right? If you modified that table in a way, which, you know,
we could also argue that this isn't good database practice, but if you modified that table in a way
to where it wasn't backwards compatible anymore, then all bets are off, right, from the service on up everywhere.
Versus if you changing the
structure like ultimately breaks is backwards is no longer backwards compatible like then maybe
your service is too granular and it shouldn't be right like if it's if your service was sell
right then you don't know or care like what happened under, under the covers. But if
your service call is something like, uh, increment the orders table by one, you know what I'm saying?
Like, like it's too great. You've gotten, you've made, you've made either the inputs or the outputs,
like you've gotten too granular in your service level. If that's the, if, if that can introduce a breaking change like that. I mean, I can think of a really,
I don't want to call it stupid, but like a simple change, like this is a discussion for another
topic, but like when you're doing microservices, one really important thing you need to do is sort
of be able to tie them all together with some sort
of request, right? Which is something that if you've never done microservices before, you probably
hadn't thought about, you know, you just set them all up, they all run, and then you have no way
to ever link a transaction together, right? Like you have a request come from your UI,
it popped off 20 microservices, and now you have no idea how they all chain together.
And so a lot of times what you'll do is you'll have like a transaction ID that goes along for the ride with all of them.
Well, let's say that you hadn't thought about that up front, but now you need one,
right? That's one of those things to where you're going to have to change your underlying data
storage technologies to be able to support that. And at that point, I'm saying that
your service needs to know about it.
Your database needs to know about it.
That's sort of an unavoidable change.
But it can still be done in a way that's backwards compatible
where that parameter is just optional.
But would you want that?
I guess that's what I'm saying.
You want all new incoming things to have that transaction ID, right?
That's kind of what I'm getting at.
But then you wouldn't be able to trace anything.
So your whole point of trying to fix it is you need it to basically be a forced change on everybody.
And so that's kind of what –
I don't know.
I disagree with this contrived example as being like the canonical one.
I don't get that.
I still think that if your service is exposing that level of granularity about your underlying data storage,
then maybe your service is too granular.
It should be a little bit more high level than that.
You shouldn't have to know or care about the underlying things because
everything that does support the transactions IDs that you just talked about,
like all of those systems today,
they're not going to break if you don't do it.
Right.
Like existing,
existing ones,
like you can provide,
you can provide one or not.
If you don't provide one,
it'll generate one of its own.
Otherwise,
if you provide one, you know, it'll use yours, right? That's like, and that's why I have a problem
with that specific example. Well, no, that's also why I was saying this is a very,
this is a very specific type of example where I think it does have to trickle all the way through,
right? Because having to generate its own transaction ID doesn't help you
because now you can't tie together the single request
that made all these things make sense.
I totally understand the reason why you want it.
So I don't know.
I guess that kind of stuff,
I guess going back to the whole microservices
and having its own storage technology,
I totally agree with the fact that it creates a tight coupling
in many cases that, that make microservices not make a ton of sense at that point. Right? Like,
and I guess the, what people would probably be saying here is instead of having a, um, God,
I'm trying to think of a decent example. Let's say instead of having a customer
service microservice and then a, an inventory microservice and then a, um, accounting microservice
or whatever, instead of having all those, you just have one service that has all those things
baked in. And then that way, when you deploy, you're basically deploying the thing that has
all those APIs, right? And that's, that's really what we're talking about that's the difference between the two approaches is one sort of the not totally
monolith but basically an api right you have an api you deploy versus 20 different apis that you
deploy this is where like i kind of have this like this this problem with like, you know, when you talked about like having a data store per your your microservice, right?
You know, the immediate problem that people are going to start talking about is like, oh, well, now you have this problem of like, yeah, but then trying to like get data into your micro store from whatever
the other thing is, is going to become the bottleneck. Like that's going to become the
problem. Right. And you know, it's almost like you would, you would,
one of the things that we, that we've like, okay, so there's the Uber engineering blog,
right? Like the three of us, we've been big fans of it over the years, right? And one of the things that, one of the takeaways that, one of the many takeaways that
I got from some of their articles was like the, their willingness to say like, okay, here's their
data lake, but we're going to like spin off all these small little databases for like specific
needs. And you know, one team's needs aren't going to be the same as another team's needs and it's fine that they want to like i don't care that i have the same data
in that database that can also be found in this one that database over there is been indexed for
a very different need and so it's okay that it's duplicate data because it's indexed differently or
you know the use the usage patterns are different or whatever. Right. And so like, I liked that, um, kind of takeaway about it, you know? And so it kind of like made
me think that like, we really maybe should get into this mindset of like, instead of just all
trying to query the same thing as, as like whatever that data source is, you know, be it a Postgres or
Elastica or who cares, whatever, you know, SQL server, then it's almost like you could kind of
think of a technology, like a streaming technology, like a Kafka, for example, as your CDC type
operation, right? Like if, if, if it is the wall, right, if it is the
write ahead log, you know, and so like as orders, you, you gave an example of orders earlier,
right? So like as orders come through and there's a orders topic and you know, everything's coming
in, then, you know, whatever your need is for your microservice, you can have a consumer that reads
from that orders topic, does whatever it needs to do, but it doesn't change my need. And then as
far as like keeping the services independent of one another from a versioning perspective,
in the case specific to Kafka, you can have versioned, you for each message can have its own specific schema of how it was written.
So therefore, two old producers can write messages to that same topic in a different format.
And then the given consumers that use whatever version of the schema that they are using can still read that stuff. Right. I just,
well,
you know,
what's funny is what you just described is actually the way true
microservices are supposed to work.
Basically you have a queue,
all these microservices have consumers and producers to those queues.
And that's how they all are supposed to talk to their own data storage.
Right?
Like that is,
that is the quintessential microservices in a nutshell type
thing. That's my point. Like you, you, your consumer for your microservice subscribes to
that orders topic and Kafka writes it off to your Postgres database. Jay Z's will read from that
same Kafka topic, but right to elastic search. Cause he's doing something different, you know?
Yeah. I mean, it just feels like something different. You know, yeah.
I mean, it just feels like, I don't know, I guess my love of Kafka knows no bounds.
I love it too. I will say the one thing on microservices that drives me a little bit insane is I would
say that, you know, a lot of what I've done is pseudo microservices, meaning that it doesn't have its
own data store. When you have a true microservice architecture, like what you just talked about,
where you basically have a queue and then a bunch of separate services that have their own data
storage, um, traversing all that to find how things work and where things went wrong and all that is, is infuriatingly hard,
right?
Like it is very difficult to tie things together.
And when something didn't work,
what in the world happened,
right?
Like where was the disconnect?
What,
what was the problem?
Because you have,
you know,
potentially if you have 20 microservices,
you have 21 plus different stores to look at. And it's, it gets really hard. Well, this is the one thing where like I question,
like, you know, do you, this is one of the like age old questions that I've had for microservices.
Like, do you, do you break it at like, um, you know, within your team, does your team have like 20 microservices or
is your team the microservice? Right. You know what I'm saying? Right. Yeah. It's hard. I mean,
it really comes down to your needs. Right. And it's like you said earlier, there is no one
answer for everything. It's you kind of have to look at the pieces that matter to you
and figure out what you need to do with them individually, right? It's, it's not necessarily
at an application level. It's what features of your application might need this type of thing.
And then you look at it from there. And, uh, microservice, we've talked about that website,
microservice.io. They do recommend each team have only one service but
you know like i think the definition has kind of drifted since then so i don't know
yeah oh amazon promotes it too that's funny service per team pattern it's got a name
well then it shall be done yeah i'm just going to throw this one out here real quick since we
were talking about like all things ai and and and how only AI-related topics make the news now.
Since we're talking about databases and data stores.
So I saw that there is now Postgres ML.
Have you guys already heard of this?
No.
So there's a company behind it that's doing it.
But yeah, you can now use Postgres.
You can, within the database, train and deploy.
And you can create your models, train your models, do predictions, all within your database.
And it got me thinking.
I was like, wow, that's super smart because like the hardest thing about, you know, or one of the hardest
things about using any kind of machine learning is all the data manipulation and like just
shipping of large data sets.
And I'm like, oh, well, if it's already in your database, then guess what?
Like you can easily do any transformations you want on the data, get only specific bits of the data.
And yeah, so I thought it was super cool.
I don't really know much about it,
but that's why I thought I was curious
if you guys had heard about it.
But yeah, so I'll include a link to that in the notes.
That's pretty cool.
It's not surprising.
I want to say that SQL Server had some ML stuff
that they were shoving into it as well.
Like 2016?
Yeah.
Or 7?
I mean, if the data's already there, why wouldn't these companies try and make it to where you can mine it?
It's pretty awesome.
That was also my second thought on it.
Because at first I was like, oh, wow, that's so cool because the data's already there.
But then I was like, oh, yeah, well, SQL Server, I believe it was like, you know, cause in first I was like, Oh wow, it's so cool. Cause you know, the data is already there, you know,
but then I was like,
Oh yeah,
well SQL server,
I believe it was either 2016 or 17,
uh,
introduced R and then the following year they introduced Python into it.
And then, um,
elastic search has had,
uh,
like I think it was part of their X pack,
um,
subscription where you could do machine learning algorithms on top of your data from Elasticsearch.
So I was like, okay, this makes sense.
This is just another evolution, but now it's in Postgres, a widely available and open source database.
But this tool itself is not open source or free. Well, maybe it is open source, actually. It is open source database so but this tool itself is not you know open source or free
well maybe it is open source actually it is open source um it says you can run it in docker or you
can pay for their their thing to where it'll just run on their servers so you don't have to mess
with it um i found the uh the page for sql server so yeah they introduced r in 2016 and then 2017
and on up they had python and r yeah so right on the money i'll put a link
in the uh in the uh resources we like all right yeah so uh yeah let's get into it with alan's
favorite portion of the show it's the tip of the week yeah all right well i kind of gave my uh tip
earlier but just to kind of touch,
touch up and expand on a little bit.
I mentioned a music LM,
like music language model.
It's a tool from Google that lets you generate music with descriptive text.
So you can say like a heavy metal guitars with,
you know,
salsa,
go home,
drum beat,
you know,
with a trumpet playing melody.
I don't know.
My wife got access to it. We both requested access, but she got it and she won't let me play with it but she keeps like
showing me stuff that she's been playing and it's it's definitely um you know like when you generate
images with like dolly or something and like somehow people have like five eyes and like
you know two two thumbs or whatever and it's just like a little bit weird and a little bit off like
that's what it's been but uh for a lot of music that just works right out the gate you know, two, two thumbs or whatever. And it's just like a little bit weird and a little bit off. Like that's what it's been. But, uh, for a lot of music that just works right out the gate,
you know, like that's fine. But, uh, the thing is pretty cool. So if you wanted to kind of look
for some inspiration or something, you can get, uh, you can go sign up for that and try to
experiment. And they do have a bunch of, uh, links. I think I actually mentioned this page before.
Um, they have a bunch of, uh, links, audio clips of things that they generated with it. It's just that they're finally rolling it out like three days ago have a bunch of uh links audio clips of things that
they generated with it it's just that they're finally rolling it out like three days ago or
a couple days ago uh for people to be able to actually get in there and generate it too so
hopefully they'll approve my invite soon and i'll give that a shot and one last thing i wanted to
hit on um before i uh turn it over is that the website that is's hosted on is called AITestKitchen.com. Sorry, AITestKitchen.withGoogle.com.
It's a Google product.
And when I log in, I only see Music LM.
That's the only thing that's in there for me.
Maybe other people see stuff, you know.
But I think, based on the name,
that we're going to be seeing a few other experiments rolling out there soon.
So it's, you know, an exciting time.
And this is a good site to check out
and keep an eye on for new things coming out.
Very cool.
I wonder, like, I want to sign up.
I guess if you just go to withgoogle.com, it just takes you straight to Google.
So never mind.
Yeah.
All right, so here's my tip of the week.
I already shared this with you guys, but I'll share it with the others.
But I didn't know about this feature before.
But in DataGrip, if you have two queries that you've done against different tables or different databases or whatever,
and you want to just see, well, show me the data that's different between these two things.
There's a little button above your results in the top right that has two blue arrows that are going, they're crossing each other.
It looks like the Catch Me If You Can kind of logo, if you remember that movie.
That's the compare data button.
And if you click that button, it's going to ask you like, what's the other session that you want to compare to? And it will highlight the rows that have different data.
Any data that is in a rows that aren't highlighted or are the same, but it'll highlight the rows
that are different. And I was trying to find a link that from JetBrains that more, you know,
the better described, like all of the features and
capabilities. And I couldn't find one like specifically to that, because it looks like
this thing could do even more than what maybe I was thinking of where, uh, like you could compare
tables and, you know, uh, so I guess technically that would just be like a select star from it.
But at least in some of those things I was finding, I was like, well, I'm not sure if we're talking about the same things because in my
example, it doesn't have to be like, you could do some like really cool kind of queries with it.
Right. Um, and, and it'll do, it'll do those comparisons and it doesn't have to be like,
uh, you know, in my case, for example, I was going, I was querying against Mongo,
for example. So like like by the way if
you didn't know with data grip you can query it doesn't have to be your traditional sql type
database that you query world yeah data grip is actually quite powerful in that regard but um yeah
so compare data button uh right above your your results can be super handy that's awesome i just
learned about that because you showed it to us this week. It's pretty,
pretty incredible.
Yeah.
Like in my use case,
I was trying to migrate like one,
we had one way of doing things that was in like a scripted kind of way.
And I wanted to convert it to an API.
And,
but I wanted to verify that like,
Hey,
am I doing the same thing that we used to be doing?
And cause we found bugs in the old way during the migration.
So that's why I was trying to compare these results and stumbled across that button.
That's excellent.
All right, so I've got a couple.
Actually, I've got a few that came up while we were doing this recording here.
So the first one is a new feature that they just released in IntelliJ that I love.
So if you've been using Visual Studio Code for any amount of time, if you want to zoom in, like if you're doing a screen share or if you're recording so that you can show people things later.
In Visual Studio Code, it's real easy.
Like on a Mac, you do Command Plus to zoom in on the entire IDE, right?
Your code content, your file directory, everything.
And if you wanted to zoom out, it'd be like command minus on a Mac. I forget what it is.
It's probably control plus on, on windows. At any rate, IntelliJ always had the ability to
zoom in on your code window, but like holding down the command button on Mac and then scrolling
with your, your wheel on your mouse, same thing on windows. You could do control and then scroll, but it was only on the code window. And it used to drive me crazy because
people would be like, well, I can't see what's over there in your file, uh, listing or whatever.
Um, so IntelliJ now has the ability to zoom in on the entire IDE. So I couldn't find on their site
where they actually showed how to do it,
but I did find in their release notes on IntelliJ 2023-1,
all you have to do is go to the View menu in the toolbar,
go to Appearance, and then Zoom IDE,
and it'll allow you to zoom the entire thing in or out.
It's fantastic.
Very cool.
The next one, this also came up this week because it was
something that was driving me crazy. If you have a bunch of files open in Visual Studio Code,
a lot of times, you know, you're bouncing around between the same areas in those different files.
And if you somehow navigate away from that particular section of code, you got to go
try and find it again. And if it's in a bad coded file, like it's got 2000 lines, it's a pain to find it again. Well, one of the features I've
always loved about Visual Studio was their bookmarks. And you could quickly go through
the bookmarks, right? Like you could bookmark a line and then, you know, using some key combinations
in the IDE, you could just keep toggling back and forth between all of them going forward or backwards. Well, there is a plugin for visual studio code that allows you
to do the same thing. And I love this thing. Um, I've used it several times here recently,
so I'll have a link in the show notes to that. And then the last thing this came up because of Joe,
Hey, you want to give us your country store voice again?
Well, hey there, everybody.
All right. So that reminded me.
I just recently.
So I mentioned that I have Apple One subscription now, which is Apple Music and all kinds of other stuff.
Well, one of the things you get with that is Apple Arcade.
Well, one of the games that was recommended to me recently was Warped Kart Racers.
And it's actually really funny. and it's a lot of fun think of um sort of mario kart type stuff but you have the
people from king of the hill and uh i don't even know all the shows there's one like um alien show i can't think of i'm sure that you guys
probably know it but but like hank from king of the hill right i sell propane and like your voice
did that and i was like oh man this game's so much fun if you have apple arcade go download it because
he's talking the whole time and it's it's hilarious um whoever
you're racing with sort of has little one-off lines that they do so yeah if you're looking
for a time waster that's a good one oh i was expecting like eight more sorry no that was it
yeah yeah i finished that was only three wow are. Are you feeling okay? I don't know.
I'm doing okay.
It's early.
It's early.
I think we have another pandemic.
Yeah, it's early.
All right.
So subscribe to us on Stitchify, iTunesify, iTunes Stitcher, iTunes.
Too many carbs.
Too many carbs, man.
Too many carbs.
Yep.
Too many carbs. Too many carbs, man. Too many carbs. Yep. Too many carbs.
Be sure to leave us some carbs at www.codingblocks.net slash review.
Hey, and while you're up there with the carbs, check out our show notes, examples, discussions, and more.
And send your feedback, questions, and rants to our Slack channel at codingblocks.net slash slack.
And hey, we have a channel for generative AI.
Also, make sure to follow us on Twitter.
Oh my gosh.
Okay.
Sorry.
Uh, who cares about the rest of that stuff?
Um,
design pattern of Agiles,
uh,
Jim posted an amazing AI generated,
uh,
advertisement for a pizza place.
We're going to have that in the show notes.
Oh,
just,
just stop what you're doing.
Just go watch it.
Now I'm going to post it.
Oh,
that's amazing.
Cool.