1
00:00:00.000 --> 00:00:14.700
Hey everybody, welcome to another whiskey web and whatnot with myself Robert William
2
00:00:14.700 --> 00:00:21.120
Wagner and my co-host Charles William Carpenter the third with our guests today Dan
3
00:00:21.120 --> 00:00:28.660
Gebhardt from many many things. Ember, core team, emeritus I believe and Jason
4
00:00:28.660 --> 00:00:33.180
API and orbit and lots of stuff. The most important bit here is so it's
5
00:00:33.180 --> 00:00:37.520
Gebhardt it's not Gebhardt. Yeah you got it. Oh very good. So I said it right.
6
00:00:37.520 --> 00:00:45.420
That's the first test. Yeah okay. Nice. Yeah yeah thanks for joining us. If you
7
00:00:45.420 --> 00:00:50.340
want to give a quick intro into who you are what you do and just a few
8
00:00:50.340 --> 00:00:57.040
sentences and let's even know your. Sure thanks. Yeah I suppose most people
9
00:00:57.040 --> 00:01:01.600
listening to this will know me from some my open source work I've been working
10
00:01:01.600 --> 00:01:08.800
on the web since the late 90s so going way back and I really got started in
11
00:01:08.800 --> 00:01:15.120
open source about I would say 10 or 12 years ago so I've gotten to the point
12
00:01:15.120 --> 00:01:20.100
where I had almost too many things going. I was a part of the member core team
13
00:01:20.100 --> 00:01:27.020
where Ganjase and API and a pretty big project with orbit JS and I actually
14
00:01:27.020 --> 00:01:33.980
alumniized myself from the core team last year so I could give a little focus to
15
00:01:33.980 --> 00:01:40.140
to some of the other projects. I also do consulting mostly on web projects
16
00:01:40.140 --> 00:01:48.180
mostly using the tech that I help work on in open source so I have a small
17
00:01:48.180 --> 00:01:53.580
consultancy with my brother Larry and he tends to work on the back end I tend
18
00:01:53.580 --> 00:01:58.800
to work on the front end although we both are sort of false back devs so not
19
00:01:58.800 --> 00:02:05.980
unlike ship shape code but I also work a lot with tilde company co-founded by
20
00:02:05.980 --> 00:02:12.620
Leia and Yehuda cats and others and we often do our consulting through them so
21
00:02:12.620 --> 00:02:19.100
some of our clients will only know us through them. Pass out of the bag now with
22
00:02:19.100 --> 00:02:26.420
a K. There you go. So in terms of like back end technologies that you work with
23
00:02:26.420 --> 00:02:33.100
due to Ruby or is Yehuda pulling you into Rust or something else? Yeah we mostly
24
00:02:33.100 --> 00:02:40.260
use Ruby and you know primarily Rails. Larry's the lead maintainer of JSON API
25
00:02:40.260 --> 00:02:45.540
resources which is a pretty popular gem that makes it pretty straightforward to
26
00:02:45.540 --> 00:02:53.700
stand up a JSON API server to Rails so that that's been our main focus so we
27
00:02:53.700 --> 00:02:58.180
sort of have that JSON API contract at the middle and we tend to build on
28
00:02:58.180 --> 00:03:02.960
either side of it those are most of the projects we work on. Gotcha. So before we
29
00:03:02.960 --> 00:03:07.100
get too deep into all this tech though let's open some whiskey. Nice. That's why
30
00:03:07.100 --> 00:03:13.700
everyone's here really. So we have we heard you like scotch so we got something
31
00:03:13.700 --> 00:03:17.500
that's hopefully kind of scotchy but a little bit different so this is the
32
00:03:17.500 --> 00:03:25.580
Nika single malt Miyagi Kyo. I don't know how to pronounce that exactly. Sounds
33
00:03:25.580 --> 00:03:32.140
accurate to me. You get points for trying though that's good as I could do. It's
34
00:03:32.140 --> 00:03:37.820
been ages I've only had one I think one Japanese scotch before so this should
35
00:03:37.820 --> 00:03:42.620
be a good adventure. Nice. I think you're legally unable to call it that. Yeah.
36
00:03:42.620 --> 00:03:46.540
They can't be called scotch. There are no Japanese scotches. There are Japanese
37
00:03:46.540 --> 00:03:53.980
whiskies like an American champagne. Exactly. You can't do that. Okay. Well it's got a nice
38
00:03:53.980 --> 00:03:58.900
like kind of PD smell to it. Scotchy scotch scotch. Doesn't have a cork though.
39
00:03:58.900 --> 00:04:07.980
There's no pop. No. No pop. Scotchy scotch scotch. That's a big pour.
40
00:04:08.700 --> 00:04:16.700
Ready. I have had other Nicos. Yeah. It's a pretty popular Japanese brand I believe. Yeah.
41
00:04:16.700 --> 00:04:21.100
There's one that's like a blend called from the barrel. It's a good one I've had a
42
00:04:21.100 --> 00:04:26.140
couple of times and I've had their 12 and their 17 before. Oh in the coffee grain one.
43
00:04:26.140 --> 00:04:33.100
One's pretty good. So this is 100% malted barley. It's 90 proof and it says on the back that it
44
00:04:33.100 --> 00:04:40.140
uses less PT malt and is distilled in a hot still heated by indirect steam for those that know
45
00:04:40.140 --> 00:04:44.380
what any of that means. That looks like a lot of whiskey. Yeah. It's probably too much.
46
00:04:44.380 --> 00:04:49.740
Also it either looks like apple juice or pee. Yeah. Don't let that influence your thoughts though.
47
00:04:54.780 --> 00:04:58.940
With the smell was more PD but I actually get a little smoke on the finish.
48
00:04:58.940 --> 00:05:06.300
I was getting a little bit of lemon on the smell like acidic. Yeah. Yeah. It's very smooth.
49
00:05:06.300 --> 00:05:13.420
It's not aggressive in any way. It's very, I think it's very easy to drink. Yeah.
50
00:05:13.420 --> 00:05:20.700
Not too peaty, not too smokey but pretty balanced. Yeah. I would agree with that. It's got a little hug.
51
00:05:20.700 --> 00:05:25.180
Yeah. I would say it's a good middle of the road. A little bit of peat, a little bit of smoke,
52
00:05:25.180 --> 00:05:31.180
a little bit of sweetness. I think for someone who doesn't love a real PD scotch, this is pretty good.
53
00:05:31.180 --> 00:05:39.900
Definitely. Yeah. All right, Dan. So you are familiar with our rating system, cleverly following
54
00:05:39.900 --> 00:05:48.060
the octopus, eight tentacles. So one to eight, one being horrible throat out of the window,
55
00:05:48.060 --> 00:05:53.020
eight being, I will never drink anything else every chance I get on this one or anything in between.
56
00:05:53.660 --> 00:06:00.540
How do you feel? I think it's at least six and a half. Pretty good. Is it cruel to cut the tentacle?
57
00:06:00.540 --> 00:06:07.020
I don't know. We do have. Ouch. It's painful. People have. Does sound painful. Yeah. People do.
58
00:06:07.740 --> 00:06:13.740
You know, there's rules in so many areas in life like not having any rules around this feels good to me.
59
00:06:14.780 --> 00:06:21.100
Nice. Yeah. I need a place to rebel. Drobbing, I've been like trying to like categorize now,
60
00:06:21.100 --> 00:06:26.060
instead of being like out of all whiskeys, what would you think? So I would say between like
61
00:06:26.060 --> 00:06:31.180
Japanese whiskeys and scotchos that we've had thus far or just in life, I guess. I would put this
62
00:06:31.180 --> 00:06:35.500
at like a seven. I would definitely have this again. That was in the moon for something like that.
63
00:06:35.500 --> 00:06:41.100
Like you said, I think it's really well balanced, but it has flavor. It seems to kind of evolve every
64
00:06:41.100 --> 00:06:47.660
time I take a little sip. I think Robbie got into my head. So I am getting a little lemony kind of,
65
00:06:47.660 --> 00:06:56.700
yeah, I don't know, but getting a little lemony there. Very fresh. Yes. Yeah, I think having had like
66
00:06:56.700 --> 00:07:04.460
10 or less scotches and Japanese or scotch style, I guess, whiskeys in general, I would rate this
67
00:07:04.460 --> 00:07:13.260
in the top 15% of the ones I've had. So based on my tiny bit of experience and to this type of whisky,
68
00:07:13.260 --> 00:07:19.260
I'd give it I think a seven. Sounds good. I would buy that. It's a great summer whisky. I think
69
00:07:20.140 --> 00:07:26.620
doesn't overpower you. Yeah. I would go as far to say as like I agree with that and I would even have
70
00:07:26.620 --> 00:07:32.140
this over like an ice ball or large cube or something. And Robbie knows I'm not one to really
71
00:07:32.860 --> 00:07:38.220
change my whisky much, but yeah, given this, I could see with a little chill, at least with like
72
00:07:38.220 --> 00:07:43.580
some whisky stones to give it a little coolness. I think would be great. Yeah, definitely. Do you
73
00:07:43.580 --> 00:07:52.540
guys add any water to your whisky or do you drink it straight? So I used to be a little more
74
00:07:52.540 --> 00:07:59.740
diverse in that, like not normally, but if there's some really like high proof barrel proof stuff,
75
00:07:59.740 --> 00:08:05.820
you know, it's like 120 or something, I would do that a little bit first and kind of see like,
76
00:08:05.900 --> 00:08:10.860
all of this that opening up for me and like take a little edge off before I would go down the
77
00:08:11.580 --> 00:08:16.300
cube. But it is interesting when I try new things, when I used to do that, I would like,
78
00:08:16.300 --> 00:08:22.300
okay, you get a poor the first bit, you try just as is and then you add a little water, a few drops
79
00:08:22.300 --> 00:08:27.340
of water, change it up. Yeah, I tend to add a few drops. I used to do ice in mine all the time.
80
00:08:27.900 --> 00:08:33.180
I had a totally not legit glass and I would just do tons and tons of ice and check would always
81
00:08:33.180 --> 00:08:38.620
get upset at me for not doing it the correct way. So, you know, we have these somewhat legit
82
00:08:38.620 --> 00:08:45.100
glasses now, the the Glencarn or whatever it is. They are. Yeah, they're in New Orleans. They're
83
00:08:45.100 --> 00:08:50.540
basically like two layer Glencarns. So it's a Glencarn in the middle and then has the outside layer
84
00:08:50.540 --> 00:08:58.620
to like stop your hand from warming whisky, which is maybe excessive. Yeah, that's a good idea.
85
00:08:58.620 --> 00:09:05.500
Yeah, I have some coffee and tea mugs like that, why not whisky mugs that are dual layer like
86
00:09:05.500 --> 00:09:11.340
that, that makes a lot of sense. It's the same purpose as a stem on a glass, right? Yeah, absolutely.
87
00:09:12.140 --> 00:09:17.500
Well, the Glencarn shape is also supposed to change how you know is the whisky or something,
88
00:09:17.500 --> 00:09:22.140
but so I don't know, supposed to give you both things. Yeah, I think it does work when it's like
89
00:09:22.220 --> 00:09:28.060
really high proof. You get that like not as much alcohol to the nose. Yeah. So,
90
00:09:28.060 --> 00:09:32.940
New Orleans, if you're listening, we love your glasses. We think they're perfect for everyone.
91
00:09:32.940 --> 00:09:38.300
I would gladly have two more. We've been working on sponsorship for a while, but I don't think we're
92
00:09:38.300 --> 00:09:45.420
doing a very good job because this assumes that in our tight little world that a someone with power
93
00:09:45.500 --> 00:09:52.140
at New Orleans glasses could actually do something. Yeah. And have heard us. Yeah, you might have to
94
00:09:52.140 --> 00:09:58.940
play up the whisky and the whatnot and play down the web. Yeah, maybe you're spreading yourself
95
00:09:58.940 --> 00:10:04.140
a little thin for the general audience. Those three things, that's true. And you know,
96
00:10:04.140 --> 00:10:09.260
although I love it, I love the format. It's the good mix. Yeah, I think for the specific
97
00:10:09.260 --> 00:10:14.060
subset of people that listen to it, it's a great format, but yeah, there are some people I think
98
00:10:14.060 --> 00:10:17.820
that are only interested in one of the three. And then they are kind of like, I wish they'd not
99
00:10:17.820 --> 00:10:22.700
to listen to 15 minutes of talking about whiskey before we get to the rest or, you know, whatever,
100
00:10:22.700 --> 00:10:30.140
but it is what it is. We have fun with it. This is what we like. Yeah. You're the ones putting in
101
00:10:30.140 --> 00:10:37.260
in the work. We capture weeks. So we'll enjoy it. True. The hardest part is because of I'm on
102
00:10:37.260 --> 00:10:43.900
West Coast time and Robbie's on East Coast time. And so we do this at like two o'clock in the
103
00:10:43.900 --> 00:10:49.500
afternoon. And then I have some whiskey. And then it's like, do you want to do any more work today?
104
00:10:49.500 --> 00:10:57.820
I don't want to. That's the hardest part. Right, right. This is just just two o'clock for you,
105
00:10:57.820 --> 00:11:06.460
Chuck. Yeah. Oh, well, yeah. I'll power through it somehow. So yeah, I guess we test a little bit
106
00:11:06.460 --> 00:11:11.660
on some tech earlier, but let's dive a little bit deeper into some of this here. So just the first
107
00:11:11.660 --> 00:11:17.500
thing that we should talk about is, well, most of what we're going to talk about is orbit, I guess.
108
00:11:17.500 --> 00:11:25.980
And so what led you to create orbit? Hmm. It was a good seven or eight years ago when I first started
109
00:11:25.980 --> 00:11:33.500
orbit. And I was basically mapping out the data needs for an application eyes building and
110
00:11:34.380 --> 00:11:43.580
trying to make sense of all those requirements and trying to apply them to other packages like
111
00:11:43.580 --> 00:11:50.700
ember data. I was already in the ember world. And so I was trying to how I could say adapt
112
00:11:50.700 --> 00:11:58.940
ember data to my needs. And I really couldn't back then. And I don't think I could even now with
113
00:11:58.940 --> 00:12:05.500
the set of requirements I had, which was, you know, basically an offline first app that had an
114
00:12:05.500 --> 00:12:13.660
optimistic UI that needed, you know, to store data locally in the browser, obviously, and sync it
115
00:12:13.660 --> 00:12:21.580
up with a remote server, so work offline and and online. But also not just do that, but like
116
00:12:22.380 --> 00:12:28.540
only some of the data needed to be offline. Like there's some data that makes sense to be offline
117
00:12:28.540 --> 00:12:33.500
and other data that really only makes sense when it's when you're hitting a server and you're
118
00:12:33.500 --> 00:12:40.700
getting it all the time from straight from the source. So with all those requirements, I was trying
119
00:12:40.700 --> 00:12:45.900
to put together how I could, you know, rationalize these problems. And it's required for this app,
120
00:12:45.900 --> 00:12:52.540
I was building. And I started to deconstruct, you know, the whole data universe, essentially,
121
00:12:52.540 --> 00:13:01.500
all the aspects of a data library. And I kind of looked at it from first principles. And then,
122
00:13:01.500 --> 00:13:08.220
you know, orbit was the result of all that work. I just I started to have a pretty clear vision of
123
00:13:08.220 --> 00:13:15.180
what how I could tackle this set of problems and meet these requirements without trying to
124
00:13:15.260 --> 00:13:22.540
end another package way beyond what it could was designed to do in the first place.
125
00:13:23.260 --> 00:13:29.580
And what I came away with with orbit, I think, is something that is sometimes, you know,
126
00:13:29.580 --> 00:13:38.780
building for the hard case first also helps clarify the simple case. And I think that
127
00:13:39.740 --> 00:13:48.140
orbit really scales from the very simple to the very complex set of requirements because I had
128
00:13:48.140 --> 00:13:55.340
that really tricky application that I was trying to build, you know, back in 2014 that that had
129
00:13:55.340 --> 00:14:02.780
all these needs. While I was building something kind of from scratch, putting an Ember layer for
130
00:14:02.780 --> 00:14:09.340
reactivity over the top, which is what Ember orbit is, then I started to look at every piece of it
131
00:14:09.340 --> 00:14:18.860
and try to break it down into components. And it's a pretty composable data framework, I think,
132
00:14:18.860 --> 00:14:26.860
that lets you think about your sources of data independently of the way that data flows between
133
00:14:27.820 --> 00:14:35.020
them, but apply the same template to all your sources, treat them all the same query from them,
134
00:14:35.020 --> 00:14:41.740
the same update them the same with the same language. You track all the data in a uniform format,
135
00:14:41.740 --> 00:14:48.860
but allow for all these edges where data might be sent in JSON API format to the server,
136
00:14:49.740 --> 00:14:56.220
or it could support GraphQL, could be a simple rest, work with simple rest servers, it could work
137
00:14:56.220 --> 00:15:02.780
with sockets, but, you know, it also could work with index DB, and so the only way I could make
138
00:15:02.780 --> 00:15:09.980
sense of all this was to normalize how to interact with every source of data, and then the other
139
00:15:09.980 --> 00:15:16.780
piece is all the blue code, how do you get these sources to interact with each other, and that also
140
00:15:16.780 --> 00:15:22.700
made sense to like if they're talking in the same language, they can all listen to, you can set up
141
00:15:22.700 --> 00:15:28.620
listeners to the, you know, when they change, and then you can also, when a change happens,
142
00:15:28.620 --> 00:15:37.980
you can update them, and so that's kind of got focused on the sources, the normalized format,
143
00:15:37.980 --> 00:15:42.940
and the querying, and updates, and then, but also this blue code that'll have, you know, put them
144
00:15:42.940 --> 00:15:47.900
all together in a single app. So that's the composability layer that you kind of were touching on.
145
00:15:47.900 --> 00:15:52.780
So yeah, it's interesting, because you talk about a lot of like solving different parts of those
146
00:15:52.780 --> 00:15:59.420
puzzle, that puzzle separately, drawing them together in a composable way, depending on your
147
00:15:59.420 --> 00:16:06.060
architecture and needs, so like you mentioned react, or interacting with index DB, for example,
148
00:16:06.060 --> 00:16:12.060
like you could you utilize it as like an ORM for index DB? Yeah, absolutely, like one small part of
149
00:16:12.620 --> 00:16:18.860
that, you could use ORBIT to just query index DB, like DEXY, JS, or something, right, like,
150
00:16:18.860 --> 00:16:24.780
you know, some wrapper for index DB, you could just use the ORBIT source to query it, and you could,
151
00:16:24.780 --> 00:16:30.940
you know, query all records of a type from index DB and leave it to that ORBIT source to
152
00:16:31.820 --> 00:16:37.260
find those records, and then also update those records when you want them to, and so you could
153
00:16:37.260 --> 00:16:45.020
also use it just as a simple ORM for your rest server, or at the very simplest case, you could use
154
00:16:45.020 --> 00:16:53.900
it to manage data in memory, just a memory source, which is what a lot of single page apps are built
155
00:16:53.900 --> 00:17:02.620
with a cache, and so that cache needs to be managed somehow, and needs to be queried and updated,
156
00:17:02.700 --> 00:17:07.740
so you could just use that piece of the puzzle. Yeah, that's interesting, because if you're not
157
00:17:07.740 --> 00:17:14.380
concerned with like a database persistency outside of the user's browser, and if you wanted to like
158
00:17:14.380 --> 00:17:20.860
use it initially for like, say, a POC project or something, and so instead of mocking things,
159
00:17:20.860 --> 00:17:26.620
I can have real interactions that are stored, and then look at, oh, when my data source is available
160
00:17:26.860 --> 00:17:31.900
later on, now I'm going to introduce a syncing strategy, you know, things like that, so yeah,
161
00:17:31.900 --> 00:17:40.140
that's interesting, so having a plan and then you can composably like step through, adding or like
162
00:17:40.140 --> 00:17:45.580
using ORBIT as your data manager, and then that seems pretty interesting actually, I didn't
163
00:17:45.580 --> 00:17:51.340
realize that fast enough. Yeah, that's one of my favorite aspects of working with ORBIT is
164
00:17:51.340 --> 00:17:59.740
using it as simply as possible to just prototype and app really quickly, and I fear that, you know,
165
00:17:59.740 --> 00:18:05.580
because ORBIT has all these potential, you know, sources you can work with, and use cases that
166
00:18:05.580 --> 00:18:11.660
it can solve, people overlook the very simplest case, which becomes incredibly simple when you're
167
00:18:11.660 --> 00:18:18.220
just dealing with memory or a cache and memory, and it makes it very easy to build to prototype
168
00:18:18.220 --> 00:18:26.140
a POC and just provide a simple data layer in an app, even though, you know, it can do the more
169
00:18:26.140 --> 00:18:32.380
complicated things, it doesn't have to. Well, we started using InverData with Swatch, and then we had
170
00:18:32.380 --> 00:18:37.340
a problem where we needed to undo and redo things. Well, I'm kind of getting down the wrong path here,
171
00:18:37.340 --> 00:18:42.460
but it was really good to be able to release a thing that was just kind of indexed DB based,
172
00:18:42.460 --> 00:18:47.900
because we just wanted data locally to begin with, and we wanted to get that really good,
173
00:18:48.540 --> 00:18:53.580
and then like one of the best things about ORBIT, I think, is that I'm going to get the terminology
174
00:18:53.580 --> 00:18:58.860
wrong here, so you can correct me, but like the thought that each update or transaction or whatever
175
00:18:58.860 --> 00:19:03.740
is like, like you can replay them, they're always the same back and forth, like they're guaranteed to,
176
00:19:03.740 --> 00:19:08.460
oh yeah, they're immutable in history like that. Yeah, yeah, that's what worked for us.
177
00:19:08.460 --> 00:19:13.580
Yeah, you could think of it like Git, you know, where you have commits that you can play and
178
00:19:13.580 --> 00:19:19.260
replay, and in fact, a lot of the terminology for like the memory sources, which have an
179
00:19:19.260 --> 00:19:26.860
immutable cache that the root is based on Git, so you can do a like a rebase, a fork, a merge,
180
00:19:27.420 --> 00:19:33.980
and so you can track changes deterministically and create things like an undo, redo stack.
181
00:19:34.620 --> 00:19:43.420
You can also allow for like complex editing contexts where you fork this immutable data structure,
182
00:19:43.420 --> 00:19:49.100
which is really cheap, it doesn't involve any actual mutations to fork it, and then you're working
183
00:19:49.100 --> 00:19:54.780
in a branch like you would be in Git, and then you can either just throw that away, or you know,
184
00:19:54.780 --> 00:19:59.740
like say you do a bunch of complex edits, they're never going to touch the main branch anymore,
185
00:19:59.740 --> 00:20:05.580
until you decide to merge them back in, and so he gives you a lot of control over changes,
186
00:20:05.580 --> 00:20:11.740
and your data that's in memory, because it's built on those same sort of simple building blocks,
187
00:20:11.740 --> 00:20:19.660
like Git commits essentially. So would forking and merging be kind of a replacement for something
188
00:20:19.660 --> 00:20:24.300
like invert change sets, or something like that, where you could like fork make all the changes
189
00:20:24.300 --> 00:20:29.660
you want, and then if you decided you wanted to roll it back, you could just not merge it,
190
00:20:29.660 --> 00:20:33.980
or something like that. Yeah, right. You wouldn't have made any changes to the main branch,
191
00:20:33.980 --> 00:20:41.900
it's like being able to check out a new branch in Git and try and experiment, and then just
192
00:20:41.900 --> 00:20:49.740
throw that away if it doesn't work out. Meanwhile, you know, the main branch might accept updates
193
00:20:49.740 --> 00:20:56.940
from the server, might get updates from sockets and such, and be updated, and then you want
194
00:20:56.940 --> 00:21:03.580
to merge those changes back in, and you know, sometimes there could be a theory conflicts too,
195
00:21:03.580 --> 00:21:08.780
which you'd have to deal with. So there's all those complexities if you decide to work with it that
196
00:21:08.780 --> 00:21:15.900
way. Overall, I think just like working with Git, it provides a pretty clear mental model,
197
00:21:15.900 --> 00:21:24.140
at least, and doesn't try to oversimplify things that are inherently complex, like, you know,
198
00:21:24.140 --> 00:21:30.780
like data merge conflicts and such. Someone has to figure that out, and it can't always be the library.
199
00:21:30.780 --> 00:21:35.500
Yeah, for sure. There's a lot of weird stuff that could happen if you went offline, or someone
200
00:21:35.500 --> 00:21:40.300
else edited the same things you edited, or something like that before you tried to save it. So
201
00:21:40.860 --> 00:21:46.940
in that case, what happens in orbit, like how does it flag that there is a conflict?
202
00:21:46.940 --> 00:21:55.020
When you issue a merge, you could number one, you could check first to see if essentially the main
203
00:21:55.020 --> 00:22:03.180
branch or the main cache has progressed, has had any commits to it. I'll just speak and get
204
00:22:03.180 --> 00:22:09.900
terminology to simplify things for the listeners who aren't using orbit perhaps. But
205
00:22:10.300 --> 00:22:17.260
you could check the latest commit on main and see if it's changed since you forked, and if it
206
00:22:17.260 --> 00:22:23.580
hasn't, then you're in the clear. Now, if it has changed, then you can still merge, and it's
207
00:22:23.580 --> 00:22:30.940
going to try to apply those that merge. But of course, if you're just creating a conflict that
208
00:22:30.940 --> 00:22:37.660
merge might, well, could potentially fail, in which case you would have to decide what to do,
209
00:22:37.660 --> 00:22:44.140
and you'd get a message about what the conflict was, and so you could reasonably
210
00:22:44.140 --> 00:22:50.540
handle that conflict, hopefully. Gotcha. Yeah, we can get you so far, but just like with
211
00:22:50.540 --> 00:22:56.540
the get merges, we can't make all the decisions as a library. Yeah, you can't make some assumptions
212
00:22:56.540 --> 00:23:01.500
there, and like trying to over-enforce one direction or the other, obviously there'll be someone
213
00:23:01.740 --> 00:23:10.220
who's like, but I want it to be. I want it to be, you made me a, this is a bug. Yep, so I think
214
00:23:10.220 --> 00:23:14.700
the important thing is to give you the tools to reason about these hard problems, and if you don't
215
00:23:14.700 --> 00:23:19.340
really care, and you just want to do last-rate wins, you can still just merge and overwrite
216
00:23:19.340 --> 00:23:25.740
whatever has come in from the server, and maybe it's probably going to be as good as any data
217
00:23:25.740 --> 00:23:31.900
solution out there, but if you really want to get analytical, you can, and handle that conflict,
218
00:23:31.900 --> 00:23:37.180
so the conflict a little more sensitively. Yeah, I wonder what, if there's any other libraries
219
00:23:37.180 --> 00:23:41.980
that try to handle that, or like, I feel like some of this is pretty unique to Orbit,
220
00:23:41.980 --> 00:23:44.700
because like you said, other libraries try to just be like, yeah, last one just merge it,
221
00:23:44.700 --> 00:23:49.100
like it's cool. We'll just do the last change. Do either of you know anything about some of the
222
00:23:49.100 --> 00:23:53.660
other options, and how they handle things like this, like how Orbit compares to them?
223
00:23:53.660 --> 00:24:00.540
I don't know as to the basis of speaking publicly about it, to say like, I've done like an
224
00:24:00.540 --> 00:24:06.700
extensive comparing contrast, so I would be uncomfortable speaking about that. Like, there
225
00:24:06.700 --> 00:24:13.740
certainly are some more, some server libraries that are very much, that are JS based that
226
00:24:13.740 --> 00:24:20.300
purport to be a git database essentially, and I haven't released, put them through their
227
00:24:20.300 --> 00:24:26.300
paces so much, so I can't speak to them. Gotcha. Yeah, and are you incentivized to necessarily,
228
00:24:26.300 --> 00:24:32.380
right? Like, this is an open source project. It solves your issues, your expert on that,
229
00:24:32.380 --> 00:24:36.380
and it's not falling short for your needs, so you sort of like, when do you go out there,
230
00:24:36.380 --> 00:24:41.820
unless you're like trying to market it, and you want to see like, oh, this is still your alternative,
231
00:24:41.820 --> 00:24:45.980
this is why Orbit is better, but like, you're not really incentivized in that sense.
232
00:24:45.980 --> 00:24:51.340
It is interesting though, because I had perceived it some in different ways, and I've only worked
233
00:24:51.340 --> 00:24:57.020
with Orbit a little bit for our very specific use case, but I kind of saw it in like a way to like,
234
00:24:57.660 --> 00:25:03.820
okay, we're in an Ember app, and we're trying to be offline first to a degree, we're also trying
235
00:25:03.820 --> 00:25:09.980
to like, convert an application that was only local to utilize an exterior, so it was checking
236
00:25:09.980 --> 00:25:14.940
boxes for our specific use case too, but the composability aspect of it, and being able to like,
237
00:25:14.940 --> 00:25:21.020
step into it slowly is an interesting thing that I didn't realize as well, and I also understand
238
00:25:21.020 --> 00:25:27.900
it to be like, it plays the friendliest with Jason API, so that was fine for us, because we
239
00:25:27.900 --> 00:25:33.900
are in the Ember space, we're already like, conforming to that, but like, in terms of usage outside
240
00:25:33.900 --> 00:25:40.060
of Jason API, you said you could have you used it with other specs or no spec whatsoever,
241
00:25:40.780 --> 00:25:47.660
or Bratuel? Well, first of all, I would say, I appreciate your perspective on that, I'm glad
242
00:25:47.660 --> 00:25:53.660
that you were able to see it just at that client layer that you don't need to know about all the
243
00:25:54.620 --> 00:26:00.780
inner workings under the hood, so that's a good sign about getting some abstractions right,
244
00:26:00.780 --> 00:26:06.700
because you weren't even concerned about that like wiring things together, so that's great.
245
00:26:06.700 --> 00:26:13.100
There's composability within Orbit itself, it's made up of, you know, about 15 packages or so,
246
00:26:13.100 --> 00:26:21.340
and there are a number of them that are very low level that, well, they obviously, they build up
247
00:26:21.340 --> 00:26:29.260
in complexity and work together, and there is just at the sort of the top layer of the general
248
00:26:29.260 --> 00:26:35.660
Orbit libraries, this, you know, like, Orbit data, which provides a really general abstraction
249
00:26:35.820 --> 00:26:43.420
for working with data that is not Jason API specific at all, but to make Orbit truly useful to me,
250
00:26:43.420 --> 00:26:50.700
I had to, I built Orbit records on top of that, which is then used for all the standard sources,
251
00:26:51.340 --> 00:26:59.100
and so Orbit records has that notion of relationships and attributes that is kind of unique to
252
00:26:59.740 --> 00:27:07.420
Jason API. I've built some very simple things based on Orbit data. It is possible to build a
253
00:27:07.420 --> 00:27:15.020
GraphQL abstraction that would work on top of Orbit data, but I have not built that, but it's
254
00:27:15.020 --> 00:27:20.860
very appealing to me to see that built because the typings are all there, it could be, it could be
255
00:27:20.860 --> 00:27:28.220
possible to query that data layer with a GraphQL query, and it could serve the purpose of say,
256
00:27:28.460 --> 00:27:36.700
Apollo or something like that too, so it does have all those primitives in place, but I have focused
257
00:27:36.700 --> 00:27:44.460
on the Jason API, happy path for now, and other people, you know, use it with different libraries,
258
00:27:44.460 --> 00:27:51.420
but I think that's the bulk of the usage right now, and it's definitely been scratching my
259
00:27:51.420 --> 00:27:58.620
own itch, but obviously it's helped others like you all, and that's been my focus, but of course,
260
00:27:58.620 --> 00:28:05.420
given unlimited time and resources, I'd love to see through that, some of those other alternative
261
00:28:05.420 --> 00:28:10.460
realities, so. Yeah, I'd be interested to see, I don't really remember a ton, I don't know if you
262
00:28:10.460 --> 00:28:17.420
do check, but what RunSpired had talked a little bit about, it was like, they had a Jason API
263
00:28:17.420 --> 00:28:23.580
flavored GraphQL or something like that, I'd linked in where it was like sprinkle in IDs and
264
00:28:23.580 --> 00:28:28.940
attributes and things in the right spot, and all the sudden your GraphQL will just work in a
265
00:28:28.940 --> 00:28:36.060
Jason API based thing, so there's probably like a nice middle ground there where you could do some
266
00:28:36.060 --> 00:28:41.740
of that, maybe he would have thoughts on how we could help like get some more people into
267
00:28:42.380 --> 00:28:47.420
implement at least the middle ground to where like we can kind of use GraphQL or something like
268
00:28:47.420 --> 00:28:53.420
that. Yeah, I really like working with Chrissy that he always has some good perspectives, the library
269
00:28:53.420 --> 00:29:00.300
you're talking about, I believe is Ember M3, which is used by LinkedIn and was developed primarily
270
00:29:00.300 --> 00:29:08.940
by David Hamilton there, it works on top of Ember data, and it definitely is like a could be
271
00:29:08.940 --> 00:29:15.580
compatible with with Orbit at the right layer, it allows for a discoverable schema, which is the
272
00:29:15.580 --> 00:29:22.780
cool thing about it, I think is that it's you know, it doesn't attempt to prefront load any schema
273
00:29:22.780 --> 00:29:29.420
concerns, it goes out and discovers that schema and and deals with the data as it discovers the schema,
274
00:29:29.420 --> 00:29:35.980
so that sort of dynamic schema is certainly compatible with Orbit at the right layer.
275
00:29:35.980 --> 00:29:41.340
That's interesting, that kind of reminds me of Jason API schema, which was kind of a discoverable
276
00:29:41.340 --> 00:29:48.940
schema where you would like request that and then get what you could shape your response as kind of
277
00:29:48.940 --> 00:29:59.340
thing. Yeah, some people will associate like a description like an open API or JSON schema with
278
00:29:59.420 --> 00:30:07.980
their payload, so that the whole schema is laid out in the possible values and so they can validate
279
00:30:07.980 --> 00:30:13.340
their data at a particular endpoint, so that's that's certainly something that's been that's
280
00:30:13.340 --> 00:30:20.060
compatible with JSON API that works well with it, and there's no reason that a client library
281
00:30:20.060 --> 00:30:27.820
couldn't use that to discover this schema fully, and so it's all possible, all the hooks are there,
282
00:30:27.820 --> 00:30:34.460
and such, it's just there are some pragmatic realities about just how much dynamic stuff do you
283
00:30:34.460 --> 00:30:41.420
want in a client, especially if you're in a browser, just how much do you want to load in terms of
284
00:30:41.420 --> 00:30:49.100
the schema and the discoverability into your into your main thread and basically discover your
285
00:30:49.100 --> 00:30:57.900
data dynamically as you pull it down, it doesn't often provide like an optimized experience for a web app
286
00:30:57.900 --> 00:31:03.900
which has to pull down all of its libraries and you know it could get very heavy weight. Yeah, it's
287
00:31:03.900 --> 00:31:09.260
nuanced and say you're editing an entity or creating a new entity and you don't know what all the
288
00:31:09.260 --> 00:31:14.780
options are for that entity, the schema is useful then, right? You want to present and you could
289
00:31:14.780 --> 00:31:20.860
dynamically generate forms based on the schema available available in what's what are public fields
290
00:31:20.860 --> 00:31:26.700
and then pop that out. So yeah, I would agree there's like specific use cases around that. I will
291
00:31:26.700 --> 00:31:34.380
say be careful saying the word hooks, it's a trigger word or Robbie. Yeah, the one's been working
292
00:31:34.380 --> 00:31:40.780
and reacting, I don't think he really has, he just hates the concept of it. Yeah, so I like to see
293
00:31:40.780 --> 00:31:45.340
the things that react releases and says are cool and be like, why is this cool? Why don't we use
294
00:31:45.340 --> 00:31:50.620
classes instead of hooks and like like everything was nice, you could just set state easily like
295
00:31:50.620 --> 00:31:55.500
state equals this and now it's like, no, I want to say like I got to use this and affect this and do
296
00:31:55.500 --> 00:32:00.940
whatever. Just too complicated. I'm going to try to get Eric Elliott on so you guys can argue about
297
00:32:00.940 --> 00:32:04.860
it because I think that will be great. You know, he's been for years, everything's functional,
298
00:32:05.660 --> 00:32:10.140
you know, react is doing and right, reactive programming functions, functions, functions,
299
00:32:10.140 --> 00:32:15.980
classes are really, really bad as what he says. Since react is like really popular and
300
00:32:15.980 --> 00:32:22.460
probably 75% of web developers use it, I can say for certain I'm in the minority of saying all
301
00:32:22.460 --> 00:32:29.740
these things are not good. But I'm happy to debate it with anyone that wants to. Yeah, it's pretty
302
00:32:29.740 --> 00:32:38.460
much the 800 pound gorilla in the web development world. So it's and everything gets compared to it
303
00:32:38.460 --> 00:32:46.060
for right or wrong. So it does, it does make new concepts of reactivity rather difficult. Like
304
00:32:46.060 --> 00:32:53.580
I really do think that glimmer tracking and auto tracking is a very simple paradigm for
305
00:32:53.580 --> 00:33:00.940
reactivity and quite nice to work with. Our star beam now. And star beam is pretty exciting too.
306
00:33:00.940 --> 00:33:07.260
I mean, and that really cool thing about that is that it brings that concept of reactivity
307
00:33:07.260 --> 00:33:15.820
of auto tracking reactivity into every framework that wants to support it. So it does allow for
308
00:33:15.820 --> 00:33:22.220
that level of build for this type of reactivity once and then access it everywhere. You know,
309
00:33:22.220 --> 00:33:28.540
whether it's felt or amber or react. And it's a great, a great experiment. I hope it succeeds.
310
00:33:28.540 --> 00:33:35.820
I hope it gets some traction. So it's pretty cool. I think it's the frameworks have too long been
311
00:33:35.820 --> 00:33:43.980
siloed and that we are now seeing some really interesting cross framework solutions out there.
312
00:33:43.980 --> 00:33:52.220
You know, whether you're talking about star beam or even something like remix or astro,
313
00:33:52.220 --> 00:33:58.780
you know, which are not actually maybe they're primarily focused on on react because they are,
314
00:33:58.780 --> 00:34:03.260
you know, of course, that's that's the most popular, but they are explicitly pluggable with that
315
00:34:03.260 --> 00:34:09.820
reactivity layer. And I think that's really cool. And I always tried to build orbit from the start
316
00:34:09.900 --> 00:34:15.580
as a framework agnostic layer and and Ember sits as that reactivity layer. Ember orbit sits as
317
00:34:15.580 --> 00:34:21.900
that reactivity layer that just sits on top and it also works with with react and view and other
318
00:34:21.900 --> 00:34:29.100
libraries too. So because that decision to to be framework agnostic first was made now it's got
319
00:34:29.100 --> 00:34:35.340
that compatibility everywhere. So I'm happy about that. Yeah, some future proofing and I think it's
320
00:34:35.340 --> 00:34:44.780
good to BYOV on some things when many other libraries haven't really completely figured it out
321
00:34:44.780 --> 00:34:48.940
and that, you know, we should make the distinction there in the view library versus the framework
322
00:34:48.940 --> 00:34:53.740
thing where, you know, remix you write a whole app in redwood you write a whole app in Ember,
323
00:34:53.740 --> 00:34:59.260
you can write, you know, your whole app in react you bring your friends which friends who knows.
324
00:34:59.260 --> 00:35:05.500
Is what I like about next is that it's giving you some guardrails there of like we don't need all
325
00:35:05.500 --> 00:35:09.020
your friends. You can bring a couple friends, but we've got there's a guest list. Yeah, there's a
326
00:35:09.020 --> 00:35:15.180
guest list. We've got a group here. Right. Right. So I was just going to say like Robbie and I,
327
00:35:15.180 --> 00:35:22.060
we're talking a little bit Ember and orbit is our how we know you what we talk about. Do you do
328
00:35:22.060 --> 00:35:31.580
anything else? Oh, I do a lot. I mean, I've got it aligned so that I'm using them in my all those
329
00:35:31.580 --> 00:35:38.620
open source projects in my day job. So to speak my day contract and there's a nice, you know,
330
00:35:38.620 --> 00:35:44.620
synchronicity between my work life and my open source projects and so that's good. But I, I do
331
00:35:45.420 --> 00:35:53.580
love to get away from from the computer. So I do I do height a lot. I I have an old colonial house
332
00:35:53.580 --> 00:35:59.500
that I'm working I've been working on for ages and continue to improve. I live in New England
333
00:35:59.500 --> 00:36:06.060
here in New Southern New Hampshire. So I'm putting a slate roof over part of it. So that's been a
334
00:36:06.060 --> 00:36:13.500
fun little project. So restoring a roof that used to be slate that was was taken off and now I'm
335
00:36:13.500 --> 00:36:21.180
putting it back on. Why not? Yeah, slate is hard. Very easy to break. Literally. Yeah. Yeah,
336
00:36:21.180 --> 00:36:27.500
it's both hard and brittle. Yeah. But once you get it up there, right? And it can last for
337
00:36:27.500 --> 00:36:35.740
a hundred years or more. So yeah. So I enjoy like woodworking and doing doing projects and also I
338
00:36:35.740 --> 00:36:44.860
have a couple boys in college now, which is kind of wild for me. So we just got an empty nest
339
00:36:44.860 --> 00:36:50.700
my wife and I just have an empty nest this year for the first time and it's been nice having
340
00:36:50.700 --> 00:36:58.380
them home for the summer. So that's nice. And I have a great dog who just turned I think he's
341
00:36:58.380 --> 00:37:05.980
just turned 10, 10 years old and I've been working with a fun client for a while now that does
342
00:37:06.860 --> 00:37:16.220
a dog DNA or pet DNA analysis. And so that's been been really fun. Another like little synergy across
343
00:37:16.220 --> 00:37:22.380
my pets and my my home life and my my work life is there. So you got to test your dog out?
344
00:37:22.380 --> 00:37:28.860
Absolutely. Yeah. But I knew what he was in advance. It was more a confirmation of the test than
345
00:37:28.860 --> 00:37:36.860
of him, but nice. But he is a mix and he's an interesting mix. So it was good. So theta told you
346
00:37:36.860 --> 00:37:41.260
Poodle and he's a golden retriever. You'd have been like, I know better. I see no fluff.
347
00:37:43.020 --> 00:37:47.900
That's right. All my confidence would have been shaken in the scientists. You know,
348
00:37:47.900 --> 00:37:52.060
have to fix the machine learning there or something. I wonder how that works because like,
349
00:37:52.060 --> 00:37:57.980
you know, who decides what 100% Poodle is or whatever, right? Like there's slight variations.
350
00:37:57.980 --> 00:38:04.060
Oh, for sure. In that DNA, I would think so that's a hard problem. Yeah. You're going to find out
351
00:38:04.060 --> 00:38:09.980
Robbie that your dogs are only 70% French bulldog. That's it. Only 70. Well, one of them is way
352
00:38:09.980 --> 00:38:15.020
to tall. There's no way he's 100% French bulldog. He's got really long legs and they don't have that.
353
00:38:15.020 --> 00:38:23.020
So I think he's mixed with something refund. One of the interesting aspects of breeding is that
354
00:38:23.020 --> 00:38:28.620
even when you go to get a purebred dog, you're not, you know, they're to keep the gene pool healthy
355
00:38:28.620 --> 00:38:36.540
and such they need to always inner mix other breeds and such that maybe were originally used to
356
00:38:36.540 --> 00:38:42.540
form that breed. And so you need to keep that gene pool fresh. And so you might get a little bit.
357
00:38:43.100 --> 00:38:51.180
You're not getting 100% French bulldog, whatever that means. You're always getting a mix. And so
358
00:38:51.740 --> 00:38:57.820
there is a little bit of a fudge factor. And certainly there's a huge sample set of data there
359
00:38:57.820 --> 00:39:04.460
that goes into determining how each breed is classified. Yeah, definitely. So what kind of dog do
360
00:39:04.460 --> 00:39:09.660
you have? I used to say it's a mix, but what's it a mix of? He's a shepherd mix. He's a Belgian
361
00:39:09.660 --> 00:39:17.420
turviren and an Australian shepherd. So he's a big fluffy guy who keeps guard over all of us.
362
00:39:18.700 --> 00:39:28.620
Nice dog. I like human sized dogs. Yeah, he's not a not a lap dog. Yeah, human sized dogs,
363
00:39:28.620 --> 00:39:34.140
though, make me a little bit worried sometimes. Like one of our dogs is really aggressive. And if I
364
00:39:34.140 --> 00:39:40.780
had a human size really aggressive dog, it would be all over. Like you can't control that. Yeah,
365
00:39:40.780 --> 00:39:45.980
but ironically, I find it to be the case, like the larger the dog, the lazier and more passive they
366
00:39:45.980 --> 00:39:53.580
are. Like they just like, they're like, I could eat you depends in my experience. Yeah. And the
367
00:39:54.300 --> 00:40:00.860
frequency of small dog to aggressive is it just seems like more often that weaner dogs. They're
368
00:40:00.860 --> 00:40:11.180
all mean. Chihuahua's all jerks. Yep. So get smaller. We're stock. I don't know. True. Yeah, that's
369
00:40:11.180 --> 00:40:18.220
my opinion. Yeah, there's a reason there's a term ankle bite or right? I mean, it's good thing
370
00:40:18.220 --> 00:40:23.900
they don't get over the ankle. We definitely have some of those in the neighborhood that will go
371
00:40:24.380 --> 00:40:30.860
after our dog. And he's he just wants to just wants to play. But yeah, they have other ideas.
372
00:40:30.860 --> 00:40:34.860
Right. All right, Dan, you met many projects. Favorite power tool.
373
00:40:37.180 --> 00:40:45.260
Favorite power tool. Crosscut miter saw. Boom. Oh, yes. There you go. That's nice stuff. I don't
374
00:40:45.260 --> 00:40:50.540
have that one of those. I'm a carpenter on him. Have one. Not by trade just by name. Yeah, mostly
375
00:40:50.540 --> 00:40:56.940
by name. I do a workbench with like pegboards up. And then there's a lot of I take a lot of
376
00:40:56.940 --> 00:41:02.700
satisfaction in seeing how tools are organized on the pegboard. But like using them. And they sit
377
00:41:02.700 --> 00:41:07.980
there. Yeah, you know, I get to fix little stuff here in there with big projects. I'm replacing
378
00:41:07.980 --> 00:41:13.980
like kids play house porch. I haven't had to do a lot lately. Good with that. Yeah, it's also
379
00:41:13.980 --> 00:41:20.460
nice to not just do work and not do work in your free time, right? So to actually relax a little
380
00:41:20.460 --> 00:41:27.180
bit. So oh, yeah, my kids are young. So oh, yeah, how old are your kids are three and five?
381
00:41:27.180 --> 00:41:32.780
So almost six. So relax in my free time. It's like that he needs a project to relax.
382
00:41:34.140 --> 00:41:37.260
Yeah, something that needs concentration. So you can't bother me.
383
00:41:40.140 --> 00:41:45.740
And Robbie, you're you're new to being a father yourself, right? Yeah, we've have a three
384
00:41:45.740 --> 00:41:52.140
month old. So he was sleeping through the night for like two weeks and is now not again. So that's
385
00:41:52.140 --> 00:42:02.540
fun. He always keep you on your toes. Yeah, luckily, they're not instantly mobile. And
386
00:42:02.540 --> 00:42:09.260
they're you sort of all sort of get used to each other together and take things in stages and
387
00:42:09.260 --> 00:42:14.860
such. Even if I know some of those are a little painful. Yeah, I always think about how crazy it
388
00:42:14.860 --> 00:42:19.340
is that like humans are so helpless when they're babies. But you're that is a good point. If
389
00:42:19.340 --> 00:42:24.140
they were really mobile and could run around but had the same mental capacity that they have,
390
00:42:24.140 --> 00:42:39.660
that would be bad news. Yeah, yeah. So yeah, you said you're in New Jersey, right? New Hampshire.
391
00:42:39.660 --> 00:42:45.020
New Hampshire. Yeah, one of the news. You've been nowhere new. Yeah. Yeah, I don't really know a lot
392
00:42:45.020 --> 00:42:50.700
about New Jersey or New Hampshire. So tell us about New Hampshire. Like what's what's the area
393
00:42:50.700 --> 00:42:56.780
you're in? Either like just pick one. Yeah, I used to visit my grandparents on Long Beach Island
394
00:42:56.780 --> 00:43:03.340
in New Jersey every summer for like a month. And I had just a great, great time there on the Jersey
395
00:43:03.420 --> 00:43:11.260
Shore. So it was not not at all the the Jersey Shore of popular TV show. Yeah. Yeah.
396
00:43:12.140 --> 00:43:18.460
Yes. Yeah. Chuck's pumping is fast. That's right. T-shirt time. T-shirt time. I lost a bet once and
397
00:43:18.460 --> 00:43:26.220
I had to watch the first season. So there you go. So I have some New Jersey roots and some fond memories.
398
00:43:26.220 --> 00:43:32.060
But yeah, New Hampshire is a little bit chiller. And definitely there's a little more space.
399
00:43:32.060 --> 00:43:38.140
I think New Jersey might be like the most densely populated state. And New Hampshire's definitely not.
400
00:43:39.420 --> 00:43:43.500
There's a little elbow room. There are a lot of parks, a lot of state parks and such.
401
00:43:44.540 --> 00:43:50.460
I work at home. So you know, almost all all my clients are remote. So I actually don't need to
402
00:43:50.460 --> 00:43:57.660
travel too much. So but I'm only like an hour and 15 north of Boston. So I can get down to
403
00:43:57.740 --> 00:44:04.540
the big city or an airport very easily. So it's a nice balance. I really, really enjoy it here.
404
00:44:04.540 --> 00:44:10.380
And it's great to just be able to get out in nature every day. Like and walk my dog off lead
405
00:44:10.380 --> 00:44:18.940
and stuff. And you know, without really worrying about the crowding or issues like that. But I
406
00:44:18.940 --> 00:44:25.340
get it is it's a bit of a privilege to be working at home. I guess a lot more people have discovered
407
00:44:25.340 --> 00:44:31.180
that privilege over the last few years. But yeah, it used to be a lot more people commuting from
408
00:44:31.180 --> 00:44:37.180
here. Say down to Boston. And I never really wanted to do that on the on the daily. Yeah, options
409
00:44:37.180 --> 00:44:43.660
are nice. Forced commute isn't so much. But that's nice. I used to go to Boston all the time
410
00:44:43.660 --> 00:44:48.940
because I worked for a company there called Aquea. And so a few times a year go to Boston. And then
411
00:44:48.940 --> 00:44:55.740
I had teams. I used to be an engineering manager for them. So I had teams in Toronto too. So it's
412
00:44:55.740 --> 00:44:59.740
like Toronto, Boston all the time. Just not in the winter. What do you do in the winter?
413
00:45:01.980 --> 00:45:09.820
Well, we do like snorkeling and such and cross country skiing and just hiking and such. I kind
414
00:45:09.820 --> 00:45:15.820
of like the seasons grew up in the northeast. So I feel at home with the season. So I don't mind
415
00:45:15.820 --> 00:45:21.180
the cold. I just mind when winter starts to drag on a little bit if I can get away and march
416
00:45:21.180 --> 00:45:27.500
or something. Life is good. Do you have a snow blower? I share one with a neighbor. So just curious.
417
00:45:31.420 --> 00:45:35.500
Now we're getting really personal here. Yeah, I was going to say, what was that movie where it was
418
00:45:35.500 --> 00:45:42.140
like? Yeah, mother was a snow blower. I don't know. No, but that sounds like a fun movie.
419
00:45:42.940 --> 00:45:48.220
Yeah, I'll Google it. Figure out later. Post it on your Twitter. We talked to West Boss a little
420
00:45:48.220 --> 00:45:52.860
bit about tractors and he has a snow blower attachment on his and stuff. I'm just into that stuff
421
00:45:52.860 --> 00:45:59.340
because we moved out to the country. So we have 10 acres of land now and have to mow all the time
422
00:45:59.340 --> 00:46:07.740
and like it's way different than how life was before. Oh wow. Yeah, 10 acres. That's a serious
423
00:46:07.740 --> 00:46:13.980
commitment. I hope you you have some of it as as wooded radar. No, you don't have to mow all 10
424
00:46:13.980 --> 00:46:21.020
acres deal. Some of it is like big fields that I don't mow, but like a few times a year. But yeah,
425
00:46:21.020 --> 00:46:29.020
it all is does have to be mowed at one point. Okay, okay. So you've got some hay bales and such. Yeah,
426
00:46:29.020 --> 00:46:34.780
essentially. Yeah. What is it? Maybe I'm wrong. There was that movie Manchester by the sea. Really
427
00:46:34.780 --> 00:46:41.660
sad Casey Affleck movie. Was that and that's a New Hampshire, right? Manchester and I don't know.
428
00:46:41.660 --> 00:46:47.580
I mean, there is a Manchester New Hampshire, but Manchester by the sea is that I actually have not
429
00:46:47.580 --> 00:46:55.580
seen that movie. So I don't know. I mean, Casey Affleck is like a Boston guy also. That's a good
430
00:46:55.580 --> 00:47:01.420
question. I guess I could look it up, but have you seen it a little while ago? Yeah, it's good,
431
00:47:01.420 --> 00:47:07.660
but I didn't take it in from a geographical perspective. So and then just kind of triggered that
432
00:47:07.660 --> 00:47:12.540
and me like, Oh, yeah, there was that. And he's from that kind of area. I think that was New Hampshire.
433
00:47:12.540 --> 00:47:18.220
I could be wrong. I could totally be off and making it up. It's possible. I do that. Okay,
434
00:47:18.220 --> 00:47:24.300
so I mean, but it was America. Yeah, not not England. Yeah, no, that's the better Manchester though.
435
00:47:24.300 --> 00:47:32.220
I mean, I don't know if you noticed my hat, but the United one. Yeah. So I like that one.
436
00:47:32.220 --> 00:47:38.460
I've been there. I'm a fan. So related. I've been Caitlin and I watched the first two seasons of
437
00:47:38.460 --> 00:47:45.180
Ted Lasso. So I have watched a little bit of soccer related things now. Yeah, you're you're
438
00:47:45.180 --> 00:47:51.660
basically a fan. Yeah, we'll go to a DC United game when I'm back next time. I'm down. Nice.
439
00:47:51.660 --> 00:47:57.580
I think anything is better than going to like golf. Like that would just be too slow. Like
440
00:47:57.580 --> 00:48:01.020
as long as there's a little bit of action, I'm cool with it. Yeah, there's plenty of action.
441
00:48:01.020 --> 00:48:06.300
And they have a nice field that I've not been to. So I used to live in DC. And basically,
442
00:48:06.300 --> 00:48:11.900
they were building that stadium and it was like near I was living in the Navy art. So it was like
443
00:48:11.900 --> 00:48:18.300
not far from my house at all. And it opened that. So I think we moved, I don't know, in April and
444
00:48:18.300 --> 00:48:23.820
it opened when the season started in like August or something. I don't know. Yeah, it was like so
445
00:48:23.820 --> 00:48:29.740
close. So I've not been spice say I would like to go to Audi field. Chuck is looking for an excuse
446
00:48:29.740 --> 00:48:36.940
Robbie always excuses to get into things. Hey, come fix the internet in the office and we'll go.
447
00:48:37.820 --> 00:48:42.380
Perfect excuses to get into things excuses to get out of things. It's all an excuse.
448
00:48:42.620 --> 00:48:49.820
Yeah. So we all need. All right, we're about at time here. Was there anything we missed Dan
449
00:48:49.820 --> 00:48:53.900
that you would like to bring up? Anything you'd like to plug? Anything like that?
450
00:48:53.900 --> 00:48:59.900
I would say that although Jason API itself probably seems fairly dormant. We're actually on the
451
00:48:59.900 --> 00:49:07.020
verge of a pretty exciting new release of version 11 and it adds some new capabilities and
452
00:49:07.420 --> 00:49:13.980
adds a whole bunch of extensibility. So I'm excited to get that out. So basically it provides
453
00:49:13.980 --> 00:49:21.420
a negotiation mechanism for extensions and profiles. So ways to extend the spec or say how you're
454
00:49:21.420 --> 00:49:27.820
using the spec in a particular way. So in a more opinionated way. So there actually is news on
455
00:49:27.820 --> 00:49:33.580
that front finally after after working through it over over the years. So that's the thing I'm
456
00:49:33.580 --> 00:49:41.180
currently focused on most open source. I'm excited about that. And yeah, that's I'll leave it at
457
00:49:41.180 --> 00:49:46.060
that. Awesome. All right. Cool. Yeah, so check out Jason API if you haven't recently.
458
00:49:46.060 --> 00:49:51.020
New cool stuff coming. Thanks for being on Dan. Everyone that was listening. If you liked it,
459
00:49:51.020 --> 00:49:53.820
please subscribe and we'll catch you guys next time.
460
00:49:54.460 --> 00:50:03.180
Thanks for listening to Whiskey Web in wet. This podcast is brought to you by Ship Shape and
461
00:50:03.180 --> 00:50:08.940
produced by podcast Royale. If you like this episode, consider sharing it with a friend or two
462
00:50:08.940 --> 00:50:15.020
and leave us a rating. Maybe a review as long as it's good. You can subscribe to future episodes on
463
00:50:15.020 --> 00:50:21.580
Apple Spotify or wherever you get your podcasts. For more info about Ship Shape and the show,
464
00:50:21.580 --> 00:50:24.940
check out our website at shipshaped.io.