Speaker 1: Welcome to Adventures in Angler, the largest and most popular
podcasts in the world about web development with Angler. This
show is brought to you by Void and top Endavs.
Unvoid provides high quality design and software development services on
a client friendly business model. Unlike all other agencies, Unvoid
allows clients to only pay after the work is delivered
and approved. Visit unvoid dot com to learn more and
reach out. If you know a company that needs more
professionals to help with design and software development, that's u
n vod dot com and top and Davs helps you
stay up to date with cutting edge technologies like JavaScript, Ruby, Elixir,
and AI. Visit topd davs dot com to join their
AIDV book camp, weekly community meetups and access expert tutorials.
Lucas Paganini, founder of on Void and host of this podcast,
thank you for tuning in. Let's jump into the episode.
Speaker 2: Hello and how do you Welcome to another Adventures in Angler.
My name is Alyssa Nichel and with us today on
the panel we have the wonderful.
Speaker 3: Chris Ford and also Brooks Forced.
Speaker 4: Hello, we'll welcome. We'll work on your on your British introduction.
Speaker 3: The counterbalance there it was beautiful.
Speaker 4: That's what I was going for.
Speaker 3: Oh my goodness.
Speaker 2: So today our guest of honor is Brad McAllister, Brad.
Speaker 3: What is up?
Speaker 5: Howdy? Hell are you? That's my uh, that's my my counterbalance.
Speaker 3: Brad is from Oklahoma.
Speaker 5: Right, Oklahoma?
Speaker 4: Yes?
Speaker 3: And what part are you?
Speaker 5: And again northeastern Oklahoma. Northeast it's green country, even though
it's not very green. It is called green, hetrick, but
it's not very I mean it's greener than the rest
of Oklahoma, which.
Speaker 3: With one match could go up in a failed blaze.
But we won't go there.
Speaker 4: True, and a couple of Oklahoma's and a mac I don't
want to feel. I don't want to be the ignorant
one right in America that much.
Speaker 6: I don't know either. Tick planes over it occasionally.
Speaker 3: It's the hat on Texas right, like it's just right there.
Speaker 4: Occupied the north.
Speaker 6: Of I know it's North Texas.
Speaker 5: It's the best part of North Texas.
Speaker 2: Brad tell us. For people who don't know you, who
you are, where you're from, et cetera.
Speaker 6: Went over where he's from.
Speaker 3: No, I meant like in the tech community.
Speaker 5: But like I told you, I'm from Oklahoma. All right.
I am a second career dev. Essentially, I was an
IT guy doing just server and desktop support and stuff
for years and years and years, and was very unhappy
with that and really wanted to start being more creative.
So I got into development on my own time and
gradually was able to move into it full time and
basically been doing front end the entire time, started getting
into back end of stuff. Not terribly proficient at it yet,
but I can make things happen. And yeah, so I've
been working with Angular since I think pre one point zero.
Speaker 2: So so you were with the Angular JS.
Speaker 5: Oh yeah group of people I had. I mean, yeah,
so I guess technically I did Angular JS and then
I learned Angular later. So since they're not at all
the same thing.
Speaker 3: So are you a certain company? Are you content?
Speaker 5: Good question? Good question? Yeah, I forgot that. Yeah, software
engineering lead for a product called smart Shopper. A company
name is Sapphire Digital and we do healthcare healthcare transparency software.
So that's fun. So our appasol Angular and it's actually
dot net core on the back end and running on Linux,
which is fun. And we were kind of on the
bleeding of that for us at least three years ago
when we started running dot ne Core and Lennox with
an angular front end and all that kind of stuff.
Tell you how big is your team? My team is
for including me, so that's not super big. But we
get slipped on.
Speaker 3: No, I love it.
Speaker 2: I that was the size of my team before this.
But we had two back end and two front end.
And I can't believe you're like going full stack now.
I feel a little betrayed, but I'll forgive you.
Speaker 5: I'm only going full stack because I probably should. I
still don't enjoy it.
Speaker 3: Your heart, you know, is going to dot net then I.
Speaker 5: Can oh no, no, no, no, no no. We were
a dot Net shop on this side of the team
long before me, so we just had to keep with that.
It's funny because the other side of our shop is Ruby.
Speaker 3: Oh my gosh, how do you.
Speaker 5: Ruby on rails? So we have Ruby on rails for
one back in, and dot net Core and dot net
Standard for a different two different back ends, and then
all angular on the front end.
Speaker 2: Ruby on Rails was the first startup that I worked for,
and that was kind of how I got introduced to
like the way back should be. So it's always weird
for me to experience the other side. So that's a
really interesting mix for technology stack.
Speaker 3: It is.
Speaker 5: I really tried to get into Ruby and Rails when
it first came out, but I didn't have a Mac.
I only had a Windows machine, and so I got
this book that was brand new, and I was trying
to do stuff in A. The book was wrong in places. B,
it wasn't working on Windows, and I got frustrated through away.
So that was much ray into Rails. True story, very.
Speaker 4: True Windows development. Yes, just that interest. Is it running?
Is it like one application that's running on these two
different back ends? No, No, they're different things. Yeah. Yeah.
The application I'm working on at the moment is it
actually is like half of the back end is in
Java and the other half is in c sharp. We've
basically got two offices on different sides of the country,
and like in my office it's all c sharp and
in the other office is Java. But it's like one
united front end which is running Angular.
Speaker 2: So basically this front end app is talking to both
back ends.
Speaker 4: Yeah, I mean it's micro services, right, so it doesn't
really from the front end point of view, it doesn't
really have to which one is. It just means that
when the doves in my office have to do changes
to the to the back end from the other office there,
they all just basically get very upset because they don't
want to look at Java. And I believe it's it's
vice from the other office as well.
Speaker 5: Yeah, so our two apps. One app calls a rails
back in from the front end from Angular, and then
that rails back in will sometimes call the dot Net
Standard APIs to get information and pass through to Angular.
And then smart Chopper is Angular on the front end
dot Net Core API for it on the back end.
That also then calls that same dot Net API that's
dot it four or six or something. And yeah, so
it's kind of interesting. So the one old school dot
Net thing that they are trying to give, I say,
old school, that's going to sound terrible. Yeah, I mean,
I'm sorry, it's not. They're trying to convert it very hard.
It is kind of the brains of a lot of
the stuff that we do.
Speaker 2: I think those things are considered old school in comparison
to JavaScript, right, like just with how new javas well.
Speaker 5: It depends depends on the month.
Speaker 4: In Transcript is actually considerably older than anyone realizes though
as well? Is it isn't it like twenty plus years old?
Speaker 5: Yeah, it's like twenty something years old.
Speaker 3: I did not know that.
Speaker 4: Yeah.
Speaker 3: See, wait, how old is the browser?
Speaker 4: Which one?
Speaker 3: Just like just like the browser?
Speaker 4: Oh, just browsers being a thing.
Speaker 3: Yeah.
Speaker 4: Well, I remember using Netscape Navigator when I was about thirteen,
which is kind of when we started to get the
Internet from the UK. When was that like nineteen ninety five,
ninety six?
Speaker 5: Yeah, I was gonna say mid nineties, Yeah, mid nineties.
Mosaic was the precursor to Netscape, and I think Mosaic
was the first. I think it was the first actual
graphical kind of browser Mosaic was. Yeah. Okay, so Mosaic
turned in an Tscape if I remember right. But it's
been a long time, and I'm not a historian on
the fact, I just thinking back.
Speaker 4: I have I have a fun fact. I'm sorry I
heard this on a podcast. Maybe it wasn't this one,
because otherwise I'm just recycling the info. The company Mozilla
is named because the founders wanted to build a browser
that was a Mosaic. Killers in Mosaic the browser, they
wanted to build a replacement legit. Sure.
Speaker 3: Yeah, oh I love that. That's beautiful.
Speaker 5: So maybe but I thought I thought Netscape developed or
developed or evolved into fire far Villa stuff. I think, well, Firefox. Yeah,
so I thought Mozilla Mosaica. I don't know. I thought
it was all the same company. Maybe I'm wrong.
Speaker 4: I'm sure somebody will fact check me in and tweeter.
Speaker 5: They will tweet us, they will add us you guys
are wrong.
Speaker 3: You know they will.
Speaker 5: Don't was wrong on the internet?
Speaker 2: Yeah, Oh my goodness. So yes, topic of the day.
We had a huge I don't even know bunny bunnyhole.
Speaker 3: Rabbit trail, rabbit trail. Yeah, there we go. But yeah,
what are we talking about today?
Speaker 5: We are talking about angular elements and NX and storybook
and that kind of stuff.
Speaker 3: Awesome, awesome.
Speaker 5: The little react shaken in there.
Speaker 3: So that main application that you're using, is it using storybook?
Speaker 5: It is not, But I am working towards transitioning it
into an NX monor repo that has another app that
is a smaller app that we've been using to experiment
with this entire concepts without the element's part, so we
don't need to ship out elements anywhere. But using this
whole setup makes it easy where you can create your
own elements for your app and pull them in really
easily through the mono repo thing, and NX makes that
super simple. And then you can also add in another
project that then would build the elements that you could
then publish out somewhere else and it doesn't really affect
your actual project.
Speaker 2: So for people who've never even heard of storybook, because
I think I was there like ground floor, I was like,
oh wow, this is awesome, but I know there's a
ton of people who've never heard of it or used it.
Speaker 3: Can you give a brief introduction?
Speaker 5: I can do my best. I was actually going to
look up what a storybook because every time I'm asked,
I'm like, well, it's the look see it does this.
So essentially what I have boiled it down to for
me is it is a really quick and easy way
to develop components for your app in a sandbox where
you get fast feedback time. You can kind of keep
them isolated so that you're forced to create good, reusable
components that aren't necessarily getting adverse effects by the app
or any of that kind of stuff. The cool part
about it is with the feedback thing. You don't have
to enable hot module reloading in your Angular app necessarily,
and you don't have to wait for your whole angler
after refresh every time you're working on a component because
Storybook uses HMR, so when you make a change in
your component, it just takes very little time to refresh
and you see your changes immediately. Can set up knobs,
which are little tweaker things you can use to tweak it.
Those are typically, at least for Angular stuff, they're typically
inputs on your component. So anything that would be an
input on your component, you can set it up to
be a knob, and that can be any number of things,
a booleon, a select box for different options, text fields,
things like that. So makes it real easy to see.
Like a button component. We've been making a button component
that is incredibly complicated but incredibly simple to implement. So
the component code is really complicated because we're accounting for
all kinds of different options and ways to do a
button because designers are like, well, on this thing, I
need this button to say this and have this icon
and be this size and do this, and the disabled
state is this, and the theme is this, but on
this one is completely different. So you end up as
we have, with all these different buttons all over the app,
and none of them work the same and none of
them look the same. So trying to consolidate those into
a cohesive thing and a consistent thing, but still enable
the flexibility being able to do the things that the
designers want, or that ux once where we went with
Storybook to show us this easily with the knobs and
they can go in. They can they can check it out,
they can add all these things and the inputs and
the knobs easily see disabled states versus not instead of
having to say, hey, how do I get this today?
Disable that kind of stuff. So it has lots of
interesting plugins so you can do like mobile views, which
are nice instead of using the Firefox not the Firefox,
the Chrome or Firefox dev tools to squeeze the whole
thing down to mobile. It's got one built in so
that you can still have the whole Storybook app surrounding
your viewport and see the different mobile stuff. It has
accessibility stuff you can add, which is really nice to
see what your colors are doing and other things.
Speaker 4: So it's cool.
Speaker 5: It's got a lot of plugins.
Speaker 2: Walking through using it, so you open in Storybook and
I want to create like a button or like you
were saying, like create a component. What does that look
like and how does it feel to like? Then take
that and integrate it with the app or are you
integrating it with the app while you're using Storybook.
Speaker 4: Yes.
Speaker 5: So the cool thing about using Storybook is once you
haven't installed in your app, it has some setup files
in there that you can change at it if you
want to or not if you don't. Once it's all
set up, then you have a stories file and that
lives in side the same folder with your component. So
for your button component, you would have button component dot stories,
dot ts or whatever JS and it's just JavaScript. You
put objects in there to describe your stories. Different states.
Can set up as many stories as you want. For
a button, you could have a disabled story. So on
your left you would see, you know, like a little
hierarchy nab menu thing under your button component that would say,
you know, button no icon, button with an icon, button
that's disabled, button that is bigger than the other buttons,
buttons that's square buttons, that's whatever, and then you set
each one of those up. Is a JAVA is basically
a little configure object in storybook in the stories file,
and they're just stories that are set up in there,
and you specify all the things you want and none
of the things you don't want, and it works.
Speaker 4: How do you get your button then over to your app?
Or is storybin separate or is it a dependency for
your main application or it is?
Speaker 5: Yeah, it's no, it's one hundred percent separate, providing you're
using it in your component that's in the app. So
if you had a separate thing, which you could do,
then you would then have to do the copy paste thing.
But that's where NX the Mono repo comes in. The
beauty of that is you have your app at the
top under apps, and you have your libs, and your
storybook lives in the libs section, and you do have
to do some setup for the Mono repo to have
one storybook instance to be able to see all those
those libs, but it's it's pretty easy. It's just where
you point paths to and the code just lives there
and it's the same code that you're pulling into your app.
It's the same button component. There's no copy and paste.
You could have your your either your Angular app or
React app or whatever running and you know, and you
serve have it running and have Storybook up, and you
would see the change in both apps as you make it.
It just Storybook would refresh a lot faster.
Speaker 2: So you're saying you have the same components serving to
these React and Angular apps.
Speaker 5: Well, now if they're reacting, there to be conclusive, but
it would be no, because Angular without elements can't fit
in React. So that's where you would have to go
through the whole Angular element staying and build it and
then throw it in there and stuff. But as far
as purely an Angular app, you can have your app
running and your component in Storybook running, and then you
can edit your components and see the changes on both screens,
so you can see in a isolated way how it's
doing a storybook. And if you really wanted to see
what it's going to look like in the app, then
you can book that up and see the changes too.
Speaker 6: And are the components written in Angular or whatever framework
you want?
Speaker 5: Yeah? Or I believe Storybook supports Angular and React, and
I think View and I think some others. I haven't
really looked at it.
Speaker 6: I saw a big list that not those just a
list of what you can bring components into or if
that's what you can write them.
Speaker 5: In, that's what you can write and storybook will recognize it.
So yeah, react few angular ember myth roll?
Speaker 3: What why are you getting this list from.
Speaker 5: Storybook?
Speaker 3: No? No, l I see no? Sorry? Who loves elms?
Speaker 5: I haven't even heard of some of these? What is REX?
Speaker 3: I don't know?
Speaker 5: It's quite a yeah me throll is kind of a
meteor kind of thing, wouldn't it, I thought? Or getting
them confused?
Speaker 3: Don't you think you go straight to HTML?
Speaker 2: Shut the front door. Sorry, it's dumb thing to be
excited about, but I love it. It's very versatile. Wait,
so okay, you design button and you're like, this is
the button to end all buttons, and it's like plugged
into like this nx Mono repo which is then connected
to your Angular app. Is there if you're like, now
I have this like static website and I need that
exact same button in HTML. Is it just like a
toggle on storybook that you're like export as this thing?
Or are you writing code along with like the storybook canvas?
Speaker 3: Like? How does how does that work?
Speaker 5: So? How does it work to create a button that
is usable in just a generic HTML site.
Speaker 2: Yeah, is it just as easy as like, oh I
want to now export it as a chammel or is
there a bunch of things.
Speaker 3: That you need to do.
Speaker 5: You don't really export it. I mean, it's just your
it's your components. So wherever you're writing right in that component,
it would not change how you would do it with
or without Storybook. So it just lives wherever it lives.
And there's a stories file in there. If you're using storybook,
that then Storybook could look at and run run all
the stories and all this stuff. If you don't have that,
it's no different than what you would do today. So
with or without the stories file is the only real difference.
Speaker 4: I guess because it's because it's in an x you
you literally where you're using it in your main application.
You just like import my magic button from like app
lib slash storybook.
Speaker 5: So exactly, yeah, exactly, So yeah, it's it's the only
difference is the story's file and then the setup for storybooks,
so that Storybook knows how to run itself. But the
literally the only difference in your app is the stories file.
Speaker 2: Okay, see how the storybook made me think? It was
like maybe like sketch where you're like actually drawing things
or something with storybook, So okay, but you're actually you're
writing the code for your components, right, Oh yeah, totally.
Speaker 5: It's just a wrapper around it so that you can
see in real time, which sounds stupid because angular interact
they I'll do that anyway, but it gives you a
means of just isolating that component and really taking the
time to develop that component that then could be pulled
out and used at any spot in your app consistently
with the inputs instead of oh and this one, we
need to add this little class here because of whatever reason,
and now it's deviated from the rest of it. And
so it kind of helps you not do that or
plan for it. It's okay to do that if you
plan for it any note exists, but if somebody goes
in and just hack something, then when you go to
do something else, it's like, why doesn't work like this
because it's supposed to work like that. And yeah, so
this is just a helpful thing to not have to
do that, and a helpful thing to help, you know,
for designers to go in and see what the interactive
result is their design.
Speaker 2: Yeah, it sounds like if you want to have a
usable components that are actually like isolated to them solves.
It's a huge tool in getting to.
Speaker 5: That with Oh absolutely, and I've loved it, And.
Speaker 2: It sounds like NX is also really helpful with reusable
components very much.
Speaker 5: So I think Victor Savkin said, like, I forget the
right number, but ninety nine percent of your year code
should live in in libs and not in the app,
So it makes it really interesting. Actually it's a it's
a paradigm shift for some people. It took us our
team a while to get over it, over the hump
of really learning how it's constructed and how to put
it together, because they're like, well, what about this, Well,
shouldn't it live here? I'm like, well no, I don't
think so, it's supposed to be here, so let's figure
out how to do it same, you know, like routes
and all that kind of stuff. Things that don't immediately
seem like components are still libs in NX, and you
got to figure out how to pull them in as
a lib instead of just living up in that app folder.
Speaker 2: That is a parent shift what lives Because you're saying
ninety nine percent. What's the one percent that's outside of a.
Speaker 5: Yeah, that and the app, the whole app component with
the routing basically and then you point in the routing
with lazy loading, your point to the libs folders to
get your stuff. And NX makes it easy because they
give you paths. So it's like at my cool project slash,
you know, get my button or whatever. So it makes
it really easy. You don't have to do absolute paths
or even relative paths that were traditionally. Now it's scoped,
I guess is the right word in n PM terms.
Speaker 2: So just doing just using an X in this way
disable the ability to like turn off you encapsulation. It
sounds like it would if kind of furthering this idea
of these styles belong to this component only, and so
in there's some times when I'm like, yep, I'm going
to turn off you encapsulation for this component so that
it actually CSS cascades and works the way it's supposed to.
Like I'm assuming if you've got it set up this way,
that's kind of it's it's going against that new parim.
Speaker 4: You still have a global cs file though, like we
use an X where I work and just just going
back to your point about the paradigm shift of what
it took me ages to properly wrap my head around
how work. And we find that, like onboarding new devs
is a little bit slower because there's so much there's
there's this added layer of complexity. But I do actually
really like it. But but to a Lesson's point, you know,
we we we do have this big, big old s
CSS file which is which is like the global styles.
Speaker 3: The global giants.
Speaker 4: Yeah, yeah, you know you have one. So you can
still do that even though you've got your because it's
only really the components that are living out in these
other lips that your app is still being pulled together
into a single place. So when you're actually rendering it
in the browser, you know, your global styles are still
going to filter down if you put the right class
on and things like that.
Speaker 5: Yeah, you can do that. We went another way, what
did you do? We are using angular material, so no,
no CSS, it's just a text. No, we are using
angular material. So we are taking advantage of the theming
and pulling in taking great advantage of the SaaS and
the angular material, theming and passing in themes and palettes
and stuff into our components for client theming for different things,
and so there's really all of our styles live inside
the components.
Speaker 2: We even created a what I was going to ask
you it is chematic, So that would that would like
generate your components with like the imports that you have
to have or I didn't know that.
Speaker 5: Is an excellent idea.
Speaker 6: No, hold on one minute.
Speaker 2: Well it just sounded like, okay, every component is going
to need these things in order because you're passing in
like the themes, and so I was like, oh, okay,
so I see where you're going.
Speaker 5: That would be good. They're all a little different like something, Yeah,
we could do it. There's not a lot of over
our carryover between things, just like a mixed setting up
a default mix in that then you still have to
fill out the inside and that kind of stuff. So
but I need to actually, that is an excellent idea.
I need to go through and look at what is
consistent between them and say, hey, we could do this.
So thank you for that idea. Didn't even think about it.
Speaker 6: I'm on a project with similar setup. We're using stencil
instead of storybook, but NX and you know, we have
everything on libs I'm running into issues where when I
bring in the wonderful STENCYL components, when I test the
Angular app, I have to mock the components that I
built in Stencil or the Angular app because it starts,
you know, it doesn't recognize the Stencil components are brought
in properly. Have you run into like have have you
run into anything like that? Or it's got to be
a setup issue. We're doing something wrong, But I haven't
spent Are you running unit tests on your Angular apps
with these storybook components there?
Speaker 5: We are not? I mean we do have all right,
so that's yes and no. So in our NX when
we haven't started unit testing yet because we've just been
doing little components, and I'm probably going to skip the
unit test and go straight to Cyprus so that we
can test the end result because they're not They're all
basically dumb components, so it doesn't matter. They're showing you
what you put in is what you get out, just
in a different format. So doing eede whatever Cyprus type
things make more sense to me in that respect.
Speaker 4: Now, I think hold that for the components, it does.
Speaker 5: Yeah, our existing app, yes we're doing unit testing, but
we haven't really had any issues other than tweaking the
tests based on the new components. So what we're doing
and during the transition period is we're using Storybook and
our nex monitorypode to develop new components that we're putting
in to go back and take old components, start building
them out in there to make them consistent, and then
we basically copy and paste and port them over to
our old app for now until we get the whole
old app, which is using a combination of Angulo material,
THEMING now Gulp to run stuff to build up all
these different themes that we started with three years ago,
so we're trying to get rid of that and a
lot of different variables like SaaS variables in different places
which we're going through trying to rip all of that
stuff out move it over to THEMING so then we
could take the whole app, drop it into NX, and
then start replacing those components. We've poured it over with
the ones directly from the libs folder, so there is
some different so it's between them when support them over
like we get it over there, like oh this doesn't work,
or we need to tweak this, we need to do that,
or we do this completely wrong and so we fix it.
Speaker 2: There the reusable factor that you find differences between them.
Speaker 5: Yeah, it's the reasonable factor or the conflicts between the
way we're doing it now with the theming and the
running the SaaS mix ins and then the old var
variables being in there and stuff. So we're just having
to tweak things like padding is wrong on this or
whatever because something's conflicting NG deeps or overriding things. So
we're trying to get all those out of there as well.
But it's working. It's painful, it's not easy, but it's working,
and eventually we'll be able to pull it in there
and replace them all and it'll be one big, happy family.
Speaker 3: How do you put you into the rewrite? Halfway there?
Speaker 4: Yeah?
Speaker 5: I think so. I think we're close to halfway there
on getting the theming stuff set up correctly in our
existing app so that then we can pull it over
into NX and then go from there. So I think
we're about halfway there actually, So yeah, And it may
be a terrible idea, I don't know, but this is
this is the direction and I've chosen and this is
how we're going. So I may find that this was
a big mistake.
Speaker 2: You know, I feel like if you do decide it
was a big mistake, you're going to still be in
a better spot because of it. You know, things will
be consistent and you'll be it'll be like self encapsulated.
So if you're like, we've got to throw this out,
it's going to be like that much easier to get
to the next step.
Speaker 3: So I think it.
Speaker 5: Will be because everything will be encapsulated. And it's funny
because you asked me if I've been doing much React,
and I've done a little bit, But throughout this process
I've almost taken a re from my little bit of knowledge,
I've almost taken a react y kind of approach to
how we're doing this. So even though it's an angular,
it's very I've seen a lot of similarities between React
components and our Angular components. Imizing, yeah, componentizing everything. So
even though you have an input, you know, a typical
material input, angular material input, then you need to add
if that input needs to act differently, theme wise or
whatever based on where it is in the app. Then
you make a component that is essentially just to wrapper
for something that's already a component, but instead of rewriting
all the things all the time. You're using that component
and feeding it like maybe two options at best, and
then it's just kind of an isolated component that does
what you want it to do. And it's a component
that you can reuse with those two options yeah, yes
or no, on or off, true or false whatever. And
to me, that seems to be lining up a lot
with what I see and react like a button or
a spinner or whatever. And I don't know, maybe I'm
totally wrong, but that's the parallel I'll be drawing.
Speaker 6: No, I think you're right, but you're still putting your
HTML in a separate file.
Speaker 3: Right, I love Yes, I love you Brooks.
Speaker 5: I appreciate that.
Speaker 4: Then you're find good.
Speaker 5: Yeah, I know. It's like, hey, single file components.
Speaker 4: I'm like, why you never did that with angler though, Like,
if it's a small component, I don't see any problem
with using that, with using the template string.
Speaker 6: In looking for a new host, Brad, because Chris.
Speaker 3: You actually can't do it anymore.
Speaker 4: So yeah, you're available.
Speaker 5: Let us know, all right, I will you know, I'll
my people, get touch with your people.
Speaker 4: You wait to my picks.
Speaker 5: Now he's going to pick any other podcast but this one.
Speaker 4: I'm going to pick ten things I hate about you.
I've never seen that, actually, but I'm aware it's a thing.
It felt like an appropriate thing to say.
Speaker 3: Goodness, hey, I've actually is it flick?
Speaker 4: Yeah, I haven't seen y.
Speaker 5: Do you typically watch chick flicks or no?
Speaker 3: I find them roll.
Speaker 4: A right great from pitch Perfect, Right God Love, pitch Perfect,
pitch Perfect, pitch Perfect, the a cappella one where they
where they sing the whole time, you know, No.
Speaker 2: I just want to sing thinking of high school musical,
which is not what you're talking about, so.
Speaker 4: Absolutely not. You don't even know what I'm talking about anyway. Sorry,
I'm in this conversation.
Speaker 2: I'm a big like sci fi fantasy like nerds, so
whenever it comes to like normal like even actors, I'm
like I said, like, I was doing this tour in
London and the tour guide was like talking to me
and my sister and was like drop like name dropping
right and left like with the tour, and we were
both just like blank faced because it's just I can't
like like he was like these are really popular people,
and we're like we believe you, like so, but yeah,
I actually wanted to ask Brad before we get two
picks about NNGD and what happened and how that went.
Speaker 5: Oh, that was awesome. That was actually amazing. That was well.
First of all, Ryan said, hey, if we get you know,
accepted to Berlin, do you want to go. I'm like, well, yeah,
you know, to NGD. I'm like, yeah, we'll figure it out,
we'll make it happen. And so we did and we
got there and just from the beginning it was just
very well run. It was their first year and it
was an amazing venue. It was right, yeah, twenty nineteen August,
the end of August, like twenty nine thirtieth something like that,
and it was an amazing venue, amazing people, the food
was amazing. Everything was just great. And it was their first.
Speaker 3: And the beer, how is the beer? Bread?
Speaker 5: It's German beer, which I'm not a huge fan of
German beer, but.
Speaker 3: Was it good?
Speaker 4: I break my heart.
Speaker 5: I don't know, it's good.
Speaker 3: It's good.
Speaker 5: No, no, no, no, no, no, I haven't finished. I have
not finished the story yet. It was an amazing thing
because what happened was this is great. I was looking
for craft beer bars because I'm I'm a beer nerd.
And I'll yes, ninety eight percent hops that's fine. And
found this really cool bar called Protocol, and so we
went over there one evening and they had tons of
beer from everywhere including America, and it was all Kraft beer.
And I was looking at the big list of bottles
and I saw one from Tulsa, from my hometown.
Speaker 3: Got the front door.
Speaker 5: No, because these people, there's a really so anyone out
there that's listening that is a beer nerd other American.
Soelearra is in Tulsa and they're on the list of
world known beer brewery things. They were voted best to
brewery in twenty sixteen, I think in the country or
the world. And there was bottles of stuff that from there,
and I was like, oh my god. So I said
you really have this?
Speaker 4: Yeah.
Speaker 5: I was like, okay, we want one. So I opened
up with people.
Speaker 4: You did not all get beer from him.
Speaker 5: I drink a lot of beer. I didn't say that
was my only beer.
Speaker 3: You have the iconic beer in a boot.
Speaker 5: It wasn't. Yeah, it wasn't in a boot. We did
eat it the pollen Our restaurant. So I did have
a lot of Pollener beer, so, which is German.
Speaker 2: It wasn't amazing, like it was great. I can only
have a beer in Berlin? What what are they from
Brad's list?
Speaker 4: The one from Tulsa.
Speaker 5: Yeah, there's a lot of good craft beer in Europe
as well, and they had those and I tried them
and they were good. One beer in Berlin, I would say, yeah,
what's it called berlin Er, the cheap one. It's like
a green bottle with the red cap and it's like
the bud light of Germany. So yeah, I mean I
love it. If you're there, you might as well do.
Speaker 3: That, Okay.
Speaker 2: I every time I'm out abroad, I always do the wines.
I'm a wine girl, and I try all the cabernets
i can because there's actually like a list of my
favorites that we can't even get imported here.
Speaker 3: Like it's just.
Speaker 2: Wow, I don't understand it's wine, Like, yes, I get
that it's a higher alcohol content, but they just I
contacted like the actual winery and they were like, no,
they won't allow us to ship it to you, and
I was like, this is ridiculous. So anyways, I digress.
When you travel, you got to try some cabernets because
they've got some good ones that aren't allowed in the States.
Speaker 5: So that's crazy. It's really crazy because we get all
kinds of stuff from everywhere. Why can't we get everything
from everywhere?
Speaker 4: Well, it's the alcohol content that you're not allowed in
wine in America.
Speaker 2: That was Do you know the alcohol content that we're
not allowed? No, he was because Zach was the one
who was reaching out to the wineries and they're like,
it's some regulation about alcohol content allowed in wine. So
I don't know the exact one, but that is the
reason why.
Speaker 4: So I got some wine in my wine. Right, it's
like fourteen and a half percent. Good lord, I know,
I know, right, save those for a special indication.
Speaker 5: I've got beers that are fourteen percent now that I
can't do.
Speaker 3: I know.
Speaker 2: That's where I was like, really, there's other alcohols that
are higher, but I'll I'll let it go.
Speaker 5: Yeah, so.
Speaker 3: If they have it again, you're like, it's definitely a much.
Speaker 5: Oh yeah, totally got to go. Oh totally.
Speaker 4: Yeah. It was awesome.
Speaker 5: I mean it was and I told Robin that later.
I was just thinking, once we got into this whole
COVID thing, I was like, man, you feel so much
more appreciative of all the stuff you could do and
used to be able to do. So I just I
DMed him. I'm like, dude, I just want to say
thanks again for bringing us over because that was an
amazing conference. It's amazing trip in now that we realize
what we lost. I guess it even makes me cry.
So yes, it was. It was awesome. Not enough nice
things to say about it.
Speaker 3: Very cool.
Speaker 2: I definitely I did not make the first one, but
as soon as this is all over, I'm definitely going
to apply because I did not know. I hadn't heard
from others that it was that epic, So thanks for that.
Speaker 5: I enjoyed it. I mean it was. It was really great.
So I don't know if everyone feels that way, but oh.
Speaker 3: No, you're speaking for everyone, Brad, Okay, cool.
Speaker 5: Yeah, we all enjoyed it, every one of us. It
was the most amazing thing. No one made dissent.
Speaker 2: So see, do we have anything else before we hit
up some pics? Is there anything else about NX or
storybook or d n G D or other things that
you want to talk about before we do pics?
Speaker 5: Not from me? Any questions that I can try to answer,
I will take your silence, says no, like over.
Speaker 3: There looking at Brooks like you got Brooks? You got?
I love It's like whatever like your beard?
Speaker 2: Seriously, yeah you all can't see it, but Brad has
this beard.
Speaker 3: What is there a name for that style?
Speaker 5: It's a go tea. It's just a really long go tea.
Speaker 3: I think once you I don't know the breastline. It's no,
I mean.
Speaker 4: Goats beard, isn't it?
Speaker 6: Like it does look like your goat's beard, but a
cool one with all due respect.
Speaker 5: That's not respect taken.
Speaker 4: You have the beard of a goat. And then and
then we take out a glove and slap each other
around the face of it.
Speaker 5: Yes, awesome, very python of you. I love it.
Speaker 6: Do you know goats have square pupils.
Speaker 3: Yeah, that's why they're like often demonized because.
Speaker 5: They don't really.
Speaker 6: Thumbs.
Speaker 3: You live in Oklahoma?
Speaker 4: How do you not fair?
Speaker 5: I live in the city Perham.
Speaker 2: Okay, my statement stands, and I was born true.
Speaker 5: I have seen a goat, and my dog, Rumor, has
a pet goat who likes to hang out with all
the dogs. But I've never stared into the goats, so
I never looked into its eyes. I saw men who
stare at goats. I'm not looking at those eyes.
Speaker 4: At LESSA won't know that film because it doesn't have
a spaceship in it.
Speaker 3: Oh my gosh.
Speaker 2: There's a lot of movies I don't know and it's
not spaceship related. I'm just not very well versed in
that area. You found my weakness.
Speaker 4: Okay, Yeah, what you need is to watch a good
dose of pitch perfect.
Speaker 3: No, I need to.
Speaker 2: I need to join a movie club or like just
by like tl DR list like that way. Anytimes one
references I'm like, yeah, with the blah blah person, you know,
like cheat my way through.
Speaker 4: It should IMDb the cliffs those the thing's IMDb.
Speaker 5: It does have the plot in there, doesn't it. Yeah,
you can see the plot synopsis and everything there.
Speaker 2: You Okay, So my pick is going to be related
to Fall is coming on and every fall. It's family
family tradition that we watch all the Harry Potter movies.
Do any of you three have a tradition like that
with movies or shows?
Speaker 6: I guess, but watch Alpha Christmas because it's hysterical, So.
Speaker 5: We watch Christmas Vacation, Oh on repeat.
Speaker 3: Don't they stress you out?
Speaker 5: Brad Hot Christmas Vacation. It's hilarious.
Speaker 4: That National Lampoon, Yes, what it's called yet I've not
seen it. Actually, I like, Wow. The one I I
always like to see at Christmas is Scrooged. It's them
Bill Murray. Have you've seen that one?
Speaker 3: Yeah?
Speaker 4: That good? Love that one. It's classic classic eighties Bill Murray.
Speaker 5: Do you remember the cab driver from that?
Speaker 4: Yes?
Speaker 5: So do you know that he is? He's the dude
that did the feeling Hot, Hot Hot song in the
eighties really late eighties. I think, yeah, it's players Like
I just recently put that together, like the gay look's familiar,
Like it's remarkable.
Speaker 4: I'm like, I do know that the fairy in that
is the lady who played the Granny Adams in the
Adams Family movie from the nineties, who then later turned
up in what's it called Kimmy Schmidt on Netflix?
Speaker 5: Oh, Carol Kine?
Speaker 4: Yeah, maybe, yes, we love you with name dropping.
Speaker 5: It's just I mean I texted her yesterday and what
she was doing. Yeah, so yeah, no, I just we
love her. She's awesome. She was also in The Princess Bride.
She was the old lady you know, have fun storm
in the Castle with Billy Crystal.
Speaker 3: So yeah, yeah, the chocolate coating makes it go down easier.
That one.
Speaker 5: Yeah, that one. She was also in Transylvania six five thousand.
She's very recognizable.
Speaker 4: So I just have remarkable recall.
Speaker 3: Yeah, do you have what like a close to identic memory?
Speaker 5: Like no, not at all hilarious because I can remember
movie quotes and I can remember things like this, but
I cannot remember much anything out Like what did I
do yesterday? I don't even know. Like I have to
read something. I read a number, I'm trying to type
it in on another screen. I got crap. I have
to go back to the other screen to get the
next three numbers back to them.
Speaker 6: You know, can't they make those like four numbers, not
the six numbers that they got. It's the dual authentication,
it's really yeah, grinding my gears lately.
Speaker 5: Well, there was something I heard where you could split
them up into threes, and then it's easier to remember
each set than having like a six together or even
four together. I think four is the cutoff of things
you can remember, but grouped, even in threes, you can
remember more of.
Speaker 6: Them more You can remember two groups of threes.
Speaker 4: Yeah, yeah, I hate those.
Speaker 6: Things dual lot. I know they're good, don't get me wrong.
Speaker 5: I hate security, but it's just annoying this episode here,
it's insecure.
Speaker 3: You think you think yours is annoying.
Speaker 2: We have a Twitch account with our dead Advocate team
and it goes to my boss's phone. So if I
ever need to sign in, I have to I have
to slack her and ask her to check her text
messages for the authentication.
Speaker 6: Wow, paceful to tap into the enterprise markets? What has
start choking?
Speaker 3: Yeah, that'll be.
Speaker 4: When I was in my last my last place I
was working, we had a similar thing where we had
to do authentication and it sent the thing to a
mobile phone, but that it was going to the mobile
phone of a developer in Bangalore, which is in India,
just something like six and a half hours ahead of
the UK.
Speaker 3: I was going to say, that's not that's not helpful.
Speaker 4: Also, this, this, this poor woman as well, was just
because like on my team, I can't remember what it was,
but we were trying to get access to something and
like everyone from my team was just like authenticate, authenticate, authenticate.
This this poor woman must have woken up to like
eight million text messages.
Speaker 2: Oh my gosh, oh my goodness, Hey Brooks, speaking of beards,
I want you to do that pick because.
Speaker 3: I like that.
Speaker 6: Oh yeah, So we were talking about beard and shaving
before and I decided I was going to pick safety Razor,
which is safer than a straight blade, but just uses
one blade and you can use either side of it.
It's kind of like a tee looking thing, and the
blades are super cheap. When I started, I got like
a multi pack on Amazon, which is totally some dude
just like bought a bunch of big packs and like
threw him in a ziploc bag and gave them to
me for like five bucks. And then but like a
huge pack is like like of like two thousand blades.
It's like fifteen dollars or something on Amazon. So it's
really cheap and you can use a new blade whenever
you want it. Yeah, that's my pick, Safety Raisers. Oh
and speaking of the Adams Family, watched The Adams Family
remake the New One from like a year ago. It's
very funny and my three year old daughter loves it,
which is kind of morbid.
Speaker 2: You know.
Speaker 6: It's got like guiltines and stuff. In it and she
is into it. Who so yeah, definitely a great movie.
Those are my picks, Chris, it's your turn as designated. Wait,
I think we did it wrong?
Speaker 4: Did I was? I would just beating. I'm surprised you
haven't been able to see the rage.
Speaker 3: I have a segue for Christmas because I don't know Christmas.
Speaker 4: That's true speak speaking of bids, Chris, But yours for
anyone who's not on guard of Dragon a bearded drag.
Everyone he just picked.
Speaker 3: Don't have a bed again, Brad, we have? We're one
handle is down?
Speaker 4: So where am I? Why is this always me? Anyway?
I have picks right, and I am all planned out beautifully.
But I loved the segment of this episode where we
just talked about beer and wine, two things that are
very close to my heart. So I've swapped out my picks.
I'm going to pick, and first of all, I'm going
to pick my favorite craft beer company, which is a
brewery called brew Dog that are based in Aberdeen, which
is in Scotland. I don't know if you've ever had
any brew Dog. I'm a particularly fond of one they
do called punk Ipa, which I think was their first
and it's a really really nice craft beer. Also that
they're a great company because at the start of the
COVID crisis, they completely converted their primary brewery to producing
antibacteri or handgel, which they called punk hand sanitizer, and
they just gave it out for free to the local hospitals.
So that was a particularly good thing to do. So
that's a brew dog is my first pick. And my
second pick, I'm going to pick this wine subscription thing
that I particularly like. It's called Naked Wines. It's not
like that, but what I particularly like about them, and
I think they are branched out into the States as
well for anyone on that side of the pond is
who's interested. But you pay like twenty pounds a month
or whatever, and it goes into your can, and they
use that money to fund independent wineries because there's a
big problem in the wine industry where supermarkets will will
basically buy up all of the wine, give you a pittance,
give the wine makers the pittance for it, and then
hugely mark it up. And whereas here you're you're buying
your wine directly from the wine makers all over the world,
and I don't know, you maybe that's where I get
my wines. That's on the wine that's like fourteen and
a half percent. So maybe check out this that's Naked Wines.
That's that's great. And also I'll just add as a
as a little side note, I'm particularly looking forward to
when we have our spin off show where we just
talk about wines, because I'm well up for that wine draft.
Speaker 2: I like just went to Naked Wines and I served
their quiz. It says, you buy a one hundred dollars
NAPA cab, what's the value of the juice inside the bottle?
And the two options are twenty or sixty.
Speaker 4: That's the thing, this is, this is right kind of quiz.
Speaker 2: I hate California wine. I'm sorry anyone who lives in California,
but I hate it. I literally anytime I go to
like a nice restaurant, I look through and I go,
do you have anything that from NAPA?
Speaker 5: Like?
Speaker 2: No, No, okay, cool? So this quiz is just cragging
me up. Naked Wines, yeah us not Naked Wines dot com.
Speaker 5: What about Oklahoma wine? Do you like Oklahoma wine? We
have one or two?
Speaker 3: Tell me like the name. I was like, if you
have a favorite, I need to know.
Speaker 5: No, I don't have a favorite. I've never even head.
Speaker 3: When he was talking about brew Dog, have you had it?
Speaker 5: Oh yeah, yeah, No, I wasn't shaking, oh, shaking up,
nodding my head. Yes, I wasn't shaking my head. Brue
Dog's great. I love Rudog.
Speaker 3: Actually they're interchangeable, true, yeah.
Speaker 4: Different things.
Speaker 5: No, that was one of the places we went in
Berlin actually went to Brudog. Oh yeah, yeah, and it's
it's awesome. It was like, yeah, it wasn't the actual brewery,
it was just the brew Dog pub, but it was great.
And there's actually one in Columbus, Ohio that has a
hotel I think with it in like the brewery, I think.
So that's what I heard.
Speaker 4: No drinking and driving.
Speaker 5: Hey, it's a good plan really yeah yeah, So all right,
so my picks, Right, I'm going to pick a couple
of things. One, I'm going to pick Kraft beer because
I'm a nerd and I like craft Oh my question,
what is craft beer? Craft beer is expensive beer.
Speaker 4: Le's just get signs off. Yeah.
Speaker 5: Craft beer is hand crafted, artisanal beer that is not
mainstream yet. I guess so, like I didn't drink beer
until craft beer came around, because I don't really like
Pilsner's and laggers and that kind of stuff, and it's
mostly the yeast of the aftertaste, so like bud Light
or Budweiser or Miller or any that kind of stuff.
Just it's not because it's not cool, it's just because
I didn't like the taste. And then when we started
getting these big stouts and big IPAs and looking back
at old recipes, like I had a pre prohibition lagger
from think Rendhause in Phoenix and it was amazing, and
it's a lagger that was amazing, and I usually don't
like those, So I think at some point we got
into the whole specific kind of yeast, and then Kraft
Beer has broken out of that and started a whole
new some good, some bad idea like oh.
Speaker 3: Thank you for that. I love that.
Speaker 5: I mean that was me so craft beer. And then
my second pick, because I want to is doing things
that you should have done twenty years ago. Like I
was a musician and I got into playing guitar and
I thought I was going to be a musician for
a living, and that didn't work out a lot of
different reasons. One I didn't work hard enough. That's probably
the biggest one. So it was all a romantic dream
with no action behind it. But I also liked EDM
and techno and that kind of stuff way back when,
and because I was always playing acoustic guitar, I always
got in my head to just stick with that and
not actually branch out and not try anything. Don't buy
a keyboard, none of that stuff. And so I just
ordered for my birthday a mini controller and stuff because
I'm going to start playing with electronic music now and
I should have done it in the nineties.
Speaker 3: What's a mini controller.
Speaker 5: It's a keyboard that controls software on your computer to
make the sounds, so software, synthesizers and stuff, so you
have a lot more options.
Speaker 3: Do you haven't played like a normal keyboard or you
just like dive in head first.
Speaker 5: I took piano lessons when I was a kid, and
I hated it, and I've only took them for less
than a year. So I can pluck around on it,
but I can't play with two hands and I can't
none of that stuff, so it'll be fun.
Speaker 3: I anticipate tweets of things you've created.
Speaker 4: Great.
Speaker 5: Do you do you have a SoundCloud. Yes, no, not yet,
but I will have a SoundCloud.
Speaker 3: Well, Brad, this has been we're at the top.
Speaker 2: Of the hour.
Speaker 4: But this is where you do. Not you're gonna pick.
You're going to pick doing code it live on Wednesdays
at two pm Central. Maybe Okay, So.
Speaker 3: Done that pick too many times? Apparently, Okay, now.
Speaker 4: I have I was being genuine and I want Yeah, well,
I mean.
Speaker 3: It's true, it's the tea. It comes off as snobbish.
Speaker 2: Absolutely, I have So I use one password for everything,
even things that I shouldn't use it for, Like I
have card in there that has like my favorite wines,
my favorite Cubic Bezier, my driver's license number right, like,
it has everything in there about me because I have
a really bad memory. So my favorite wine I just
looked it up that I had in London, can't get
it in the States is Goldberg Spygelt from Austria twenty fourteen.
Speaker 3: So darlings, if you can get your hands on that jewel,
that is my pick for today.
Speaker 5: So Chris, that was a subtle hint to find some
and ship it.
Speaker 4: Yep.
Speaker 3: It's totally like an illegal manner.
Speaker 4: Of course, of course, just in like a huge shipping
container that's just full of like stuffed animals or something.
And inside the middle of one there's a bear.
Speaker 6: That you have.
Speaker 3: You got to find the really heavy bear.
Speaker 4: Yeah, and side of that bear is a case of wine.
Speaker 5: Why is this bear square? Yeah, ask questions, Brad, just
give me the bear, put the bunny down.
Speaker 3: Oh but now, seriously, thank you for the show man,
this was Thank.
Speaker 5: You for having me on. This has been great because
when I first started getting into Angular and everything, and
back when I was talking about doing you know, learning
dev well, once Angler came around, but I still wasn't
doing it as my full time job. I was listening
to this show like over and over and over and
over to all the episodes. So it's really kind of
cool to be on it now. Thank you.
Speaker 2: Also, I just want to put out the invitation because
I will be moving back to Tulsa very very soon
in the wintertime. And so if you love Angular and
you also love beer or wine, you should DM me
or DM Brad and we can all three get together
and hang out because I'll be back in Tea town.
Speaker 5: Oh yeah, awesome. Oh and if you do need another panelist,
I'm always willing to be available.
Speaker 3: Chris, did you hear that.
Speaker 4: We can have another panelist? Right? Believe it is.
Speaker 5: I'm not trying to kick Chris out.
Speaker 4: You don't have to try, you know, cham the cheeryo guy.
You can't get rid of the cheerio guy.
Speaker 5: He is.
Speaker 3: Brad. We might take you up on it, because you
have made the show lively and fun and we love you.
Speaker 5: Thanks well, thank you, thanks for having me