14 videos 📅 2024-05-06 08:00:00 America/Creston
39:11
2024-05-06 08:57:50
3:11:28
2024-05-06 10:30:19
24:39
2024-05-07 07:20:20
19:49
2024-05-07 08:03:25
1:14:35
2024-05-07 08:35:13
15:41
2024-05-07 10:06:25
38:33
2024-05-07 10:37:03
2:48
2024-05-07 11:19:01
59:37
2024-05-07 11:33:56
6:10
2024-05-07 14:55:25
39:40
2024-05-07 15:02:44
9:45
2024-05-08 06:44:21
29:27
2024-05-08 08:09:24
2:51:40
2024-05-08 12:09:24

Visit the Apache Nifi - GROUP 1 course recordings page

                WEBVTT

00:00:00.000 --> 00:00:07.560
was use cases and kind of going over some of those use cases those types of

00:00:07.560 --> 00:00:18.040
things I know minify is it can be a pain to work with and it comes in two

00:00:18.040 --> 00:00:25.580
different flavors so you have minify C++ and minify Java and so the

00:00:25.580 --> 00:00:29.980
primary differences and I'm bringing up some supporting slides for that

00:00:31.260 --> 00:00:40.020
but the the major differences in you know minify Java and minify C++ is

00:00:40.600 --> 00:00:47.840
basically minify Java is not my engine stripped of the UI and a couple of other

00:00:47.840 --> 00:00:56.400
components and but what that gives you is is what that really does is it

00:00:56.400 --> 00:01:02.020
gives you the capability to run most of your processors that you currently have

00:01:02.020 --> 00:01:08.140
or your custom developed processors on that machine so say I had a Raspberry

00:01:08.140 --> 00:01:16.940
Pi for instance and you know I had a bunch of custom processors I had that I

00:01:16.940 --> 00:01:22.740
have in my main instance I have you know some of those types things that's

00:01:24.380 --> 00:01:31.040
minify Java to deploy again you're going to deal with you know a lot of that Java

00:01:31.040 --> 00:01:37.740
JVM overhead as well as you know it's just not as fast as C++ and more

00:01:37.740 --> 00:01:47.520
low-level language so you know the minify C++ you can see you know that

00:01:47.520 --> 00:01:53.760
it's very very limited on the processors you get to use so you know

00:01:53.760 --> 00:02:01.200
luckily this list has expanded but if you notice there's not a lot of some

00:02:01.200 --> 00:02:08.700
of the other processors we don't have 300 processors here minify C++ is you

00:02:08.700 --> 00:02:15.600
know if you can get by with the processors listed here then you can

00:02:15.600 --> 00:02:22.240
you know utilize minify C++ all these processes are written in C++ as well

00:02:22.820 --> 00:02:28.280
you can write your own C++ processors I think there was a at least someone on

00:02:28.280 --> 00:02:38.460
the call that had C++ experience you know so when determining minify you

00:02:38.460 --> 00:02:42.520
know you know you need to take a look at what are some of your system

00:02:43.120 --> 00:02:49.140
what you know what kind of processors you want to use you know those types of

00:02:49.140 --> 00:02:54.860
things when determining you know which version of minify you want to use I

00:02:54.860 --> 00:03:01.680
would try to use not by C++ when possible you know just because of its

00:03:01.680 --> 00:03:07.160
lower overhead it is quicker it processes data better you know it's

00:03:07.160 --> 00:03:13.720
all around a better product but unfortunately you know they just added

00:03:13.720 --> 00:03:20.800
some Kafka support I think yeah it's in Kafka Kafka is used quite a bit in

00:03:20.800 --> 00:03:27.480
my circles and so you know we will use minify to consume or to produce

00:03:28.060 --> 00:03:35.240
data that goes onto a Kafka topic and those types of things again the

00:03:36.280 --> 00:03:42.200
version and we're about to actually hands-on walk through and installing

00:03:42.200 --> 00:03:48.720
some of this but the job version it can take almost every processor that you

00:03:49.420 --> 00:03:54.440
know your custom develop processors now if you develop a custom processor that

00:03:54.440 --> 00:04:01.660
has a dependency on the minify UI or some of those components that does not

00:04:01.660 --> 00:04:07.940
exist within the you know that would that doesn't exist in minify then you

00:04:07.940 --> 00:04:12.340
would not be able to use that processor it's rare that I run into a

00:04:12.340 --> 00:04:18.280
processor that has a total dependency on NAFA for example most of the time

00:04:18.280 --> 00:04:25.580
they're pretty agnostic and can run you know just about anything again

00:04:25.580 --> 00:04:33.600
you know it's small it's lightweight but it's also you know tedious to get

00:04:33.600 --> 00:04:39.320
going we're gonna try to get it going now and you know the configuration is

00:04:39.320 --> 00:04:49.900
not easy in those types of things so we are now going to bring up our

00:04:50.160 --> 00:04:55.860
desktop environment we should all have minify

00:05:02.080 --> 00:05:12.480
downloaded not that one all right so you should have a folder called minify

00:05:12.480 --> 00:05:20.280
one two five dot zero there's been let's go ahead and extract it

00:05:33.880 --> 00:05:41.080
yeah and you know it's pretty critical here we're not going to I don't want

00:05:41.080 --> 00:05:47.020
you to run it yet I don't want you to to kick anything off just because you

00:05:47.020 --> 00:05:53.780
know minify can let's kind of go through the the directory structure when

00:05:54.580 --> 00:05:59.640
you're installing and starting NAFA or minify you know you you have several

00:05:59.640 --> 00:06:04.740
options so let's look in the bin directory in the bin directory

00:06:04.740 --> 00:06:13.220
we do have application like minify and and bat files and those types of things

00:06:13.220 --> 00:06:20.600
Windows support is becoming more and more popular with minify I've seen

00:06:20.600 --> 00:06:29.260
minify used on government systems to act as the agent to do log aggregation

00:06:29.260 --> 00:06:37.100
WMI collection you know some of the cyber security aspects you know so you

00:06:37.100 --> 00:06:42.180
know if you if you see it in the wild you know you will potentially you know

00:06:42.180 --> 00:06:49.500
you'll see it there so in this you know you have a bat file to delete

00:06:49.500 --> 00:06:55.540
the service you can install a service I think I heard mentioned either

00:06:55.540 --> 00:07:00.000
originally or in the last couple days you're looking at potential like a raspberry

00:07:00.000 --> 00:07:07.720
pie you know that type of a device yeah I know there's seventh group for

00:07:07.720 --> 00:07:13.280
instance that's out of Tampa they're using Java minify on Windows laptops

00:07:13.280 --> 00:07:20.500
that are deployed a little outside the talk and you know in rerouting data

00:07:20.500 --> 00:07:27.560
back to the talk to a main non-fi instance and those types of things so you

00:07:27.560 --> 00:07:33.980
know depending on your use case you may want to you know use the Windows

00:07:33.980 --> 00:07:38.120
version I'd recommend you know if you can the Linux version just because

00:07:38.120 --> 00:07:42.820
it's easier to deal with it's widely supported you can use the C++ if you

00:07:42.820 --> 00:07:48.000
don't need custom processors and those types of things so it will then

00:07:48.000 --> 00:07:53.140
some of the directory structure you know we've got our been inside been you

00:07:53.140 --> 00:07:59.260
know we have we can do a dump of minify to see all the processes and in flows

00:07:59.260 --> 00:08:05.340
running that type of stuff we can do a delete you can delete the service

00:08:05.340 --> 00:08:12.740
after you installed it so if you have a you know if you have a service

00:08:13.480 --> 00:08:20.340
and you want to remove it you can you know do that we're you know we're not

00:08:20.340 --> 00:08:24.820
going to install it as a service you know for some of this hands-on but

00:08:24.820 --> 00:08:30.660
more of you know just looking at minify and getting it up and running those

00:08:30.660 --> 00:08:37.720
types of things minify C++ there's if you look around on the web you can

00:08:37.720 --> 00:08:45.800
Windows installer packages so you know you'll be able to install minify just

00:08:45.800 --> 00:08:50.320
like you would a regular Windows application which is really really cool

00:08:50.320 --> 00:09:00.000
so I know Cloudera supports that and and those types of things so if you

00:09:00.000 --> 00:09:08.540
need for that so install service you can define your your environment

00:09:08.540 --> 00:09:14.000
variables those types of things we can actually look at this

00:09:34.240 --> 00:09:37.040
one second

00:09:52.060 --> 00:09:56.000
we get a better editor than notepad

00:10:07.700 --> 00:10:15.180
Okay. So, anyway, so Webminify, you know, you can edit the bat files, you can manipulate

00:10:15.180 --> 00:10:20.760
those if you're working on a Windows environment, you can go in and set your environments, you

00:10:20.760 --> 00:10:26.040
can get a status, you know, just like you had with, and we touched on it only for

00:10:26.040 --> 00:10:35.640
a few minutes, but if you had the the actual nafi.bat file that ran the main nafi, it would,

00:10:36.440 --> 00:10:42.080
you know, it would, you can change username, you can change a few things there. Minify

00:10:42.080 --> 00:10:49.660
also has a toolkit, you know, so just like working with nafi, you can use a toolkit

00:10:49.660 --> 00:11:05.440
to work with minify as well. Okay, perfect. And if you look in the actual bat files,

00:11:05.520 --> 00:11:10.300
you can actually, you know, change where the PIDs are running, where your log directory is,

00:11:10.580 --> 00:11:18.200
those types of things. So, for you sysadmins out there, you know, you could set your home

00:11:18.760 --> 00:11:26.980
your job home, you can change all these and really get it customized to your location or

00:11:26.980 --> 00:11:33.680
your environment. The thing with minify again, there's no UI, there's no point and click,

00:11:33.840 --> 00:11:41.920
there's no ease of use when it comes to minify. So, you know, if you want to install

00:11:41.920 --> 00:11:49.280
this and get it up and running, please expect to hand jam a bunch of things in and, you know,

00:11:49.300 --> 00:11:56.220
deal with the hardest part with minify is actually getting it connected to a secure nafi. So,

00:11:56.240 --> 00:12:01.280
you know, getting the key store, trust store, those types of things set up. But if you're an

00:12:01.280 --> 00:12:06.140
admin, you know, definitely take a look at, in running this on Windows, definitely take a look

00:12:06.140 --> 00:12:18.920
at the bat files for this. The conf directory is really key with minify, you know, just like,

00:12:18.920 --> 00:12:26.780
you know, we could change, you know, nafi and do all kinds of things. You know, one of the

00:12:26.780 --> 00:12:34.260
things that we can do with minify is it has a configuration. We'll open that.

00:12:38.200 --> 00:12:44.560
And so, within this configuration, you know, it's, you have your flow controller name,

00:12:45.160 --> 00:12:52.480
any kind of comments, core properties, you know, file repository and how long it should be kept,

00:12:52.700 --> 00:12:58.240
you know, some of the swap characteristics. So, as you go through and start fine tuning

00:12:58.240 --> 00:13:04.480
some of these minify flows, you know, take that into consideration, you know, it's going

00:13:04.480 --> 00:13:11.920
to maintain a local repository, but, you know, even the default, you know, is 10 meg,

00:13:11.940 --> 00:13:19.520
for instance, and the max flow files is 100. You know, so you may, depending on how much

00:13:19.520 --> 00:13:26.740
data you are ingesting into nafi, you may have a need to, you know, you may have a need

00:13:26.740 --> 00:13:33.080
to expand upon that. If you do, you know, just take into consideration your content

00:13:33.080 --> 00:13:41.360
repository, your provenance repository, and those types of things. Your security, you know,

00:13:41.440 --> 00:13:46.640
some of your security properties will go in here, you know, your key store, your key store type,

00:13:46.880 --> 00:13:54.120
those types of things. You know, again, if you go through, in theory, even an invoked

00:13:54.120 --> 00:14:00.620
HTTP, you're going to need a key store and a trust store. A lot of times I see people just

00:14:00.620 --> 00:14:07.740
use the built-in key store and trust store that Java ships with. So, you know, I don't,

00:14:07.860 --> 00:14:14.000
if you change the password, which a lot of people forget about, you know, you should be

00:14:14.000 --> 00:14:20.600
decently secure to do that. But, you know, just kind of keep that in mind.

00:14:21.800 --> 00:14:26.580
Processor or processor groups, here's where you're going to feed those unique IDs,

00:14:27.300 --> 00:14:33.760
you know, for those, any kind of funnels and those types of things. There's a lot of

00:14:33.760 --> 00:14:41.300
configuration. One of the nice things, though, that they have released is the C2

00:14:41.300 --> 00:14:49.480
aspect of minifop. And so, let me see if I can pull up an architecture drawing of that,

00:14:49.480 --> 00:15:00.820
because I think it's pretty relevant here. All right. So, you know, what I'm saying is

00:15:00.820 --> 00:15:07.300
minify now has a C2 aspect that you can download. So, it's command and control.

00:15:07.820 --> 00:15:16.560
You know, minify runs a single data flow very well. And, you know, you may have a need

00:15:16.560 --> 00:15:28.300
for minify to communicate back to NAFA, you know, be able to get its new data flows and also,

00:15:28.300 --> 00:15:36.080
you know, get new configuration, those types of things. You know, so if you have a C2

00:15:36.080 --> 00:15:43.460
instance set up, that C2 instance is going to communicate back to NAFA. It can, you know,

00:15:43.460 --> 00:15:49.220
pull from the registry. And that's the reason that we went over registry. There's a lot of

00:15:49.220 --> 00:15:55.060
important aspects of that when you're talking minify and those services. So, it can actually

00:15:55.060 --> 00:16:02.520
pull that flow, push it out, update those flows, and manage it. Now, there's not a

00:16:02.520 --> 00:16:09.540
good UI to do this. And so, you're looking at, you know, some scripting. You're looking at,

00:16:10.460 --> 00:16:16.600
you know, potentially developing your own custom application and those types of things. So,

00:16:16.620 --> 00:16:24.140
just keep that in mind when you're using minify. You may grow a little frustrated at the,

00:16:24.140 --> 00:16:28.240
you know, the capabilities are there, but the configuration and easy use is not.

00:16:29.260 --> 00:16:32.980
The nice thing, though, is, you know, once you get it configured and up and running,

00:16:32.980 --> 00:16:40.240
you can make it as part of that CICD process. And if you're using Ansible or similar,

00:16:40.800 --> 00:16:47.620
you can deploy, you know, minify with ease. So, you know, when it comes to the architecture,

00:16:48.140 --> 00:16:54.260
one of the things that we usually see is minify, you know, I've seen two or three hundred

00:16:55.140 --> 00:17:01.600
minify instances reporting into one node, you know, reporting into a C2, for instance,

00:17:01.600 --> 00:17:08.460
and the C2 talking back to NAFA. You do not have to have C2. You can actually have directly

00:17:08.460 --> 00:17:15.520
from minify to NAFA, depending on, you know, how would you use C2 if you are,

00:17:15.520 --> 00:17:22.960
you know, changing data flows frequently, if you're trying to, you know, partition or assign

00:17:23.940 --> 00:17:30.480
nodes to different services and even capabilities. So, you know, kind of keep that in mind

00:17:31.180 --> 00:17:39.080
when you're building things out. You know, you may or may not need C2. Are you all running minify

00:17:39.080 --> 00:17:45.240
now? I know, Ben, you mentioned it, but I don't know if you were running it.

00:17:52.640 --> 00:17:59.880
Okay. Yeah, no worries, no worries. Okay, perfect. And then also,

00:18:02.320 --> 00:18:10.100
when we create a flow and put it into NAFA or minify, we are going to export that out,

00:18:10.140 --> 00:18:15.220
put it into NAFA, and I'll walk you through that. But, you know, that's how you would see

00:18:15.240 --> 00:18:23.880
a flow to minify. It's going to go into the configuration directory and, you know,

00:18:23.900 --> 00:18:31.100
run that designated flow. We will touch on that more as we go into it. Docs, you know,

00:18:31.360 --> 00:18:37.980
the sysadmin guide is there. You can, you know, kind of go through this as well,

00:18:37.980 --> 00:18:46.600
if you want to. There is a lot of information in this. I'm actually working off of the same

00:18:46.600 --> 00:18:54.300
one, but like an online version. You know, so, you know, if you want to save on space,

00:18:54.380 --> 00:19:02.100
if you don't need that, you know, just keep that in mind. There's not a lot of minify

00:19:02.100 --> 00:19:11.680
docker support yet. There is a couple of images I've seen that uses minify, but,

00:19:11.720 --> 00:19:16.260
you know, just keep that in mind as well that you may have to build your own docker container

00:19:17.740 --> 00:19:24.360
and write your docker compose. And if you move to a Kubernetes environment, you know,

00:19:24.460 --> 00:19:29.980
being able to control that. I do know that is, you know, there is minify in docker,

00:19:29.980 --> 00:19:36.900
minify in Kubernetes. I think the biggest problem I've seen across the board is just

00:19:36.900 --> 00:19:43.020
getting it to connect due to some of the hand jamming of security that needs to happen.

00:19:43.980 --> 00:19:47.500
Once you get that, you know, kind of fixed, you can again put that as part

00:19:47.500 --> 00:19:55.980
of your CICD process and, you know, it will definitely alleviate some of that hand jamming.

00:19:56.940 --> 00:20:02.420
So, some of the other capabilities within the configuration and those types of things is,

00:20:02.420 --> 00:20:07.680
you know, when many minify agents are running on the edge, you know, it's not possible to

00:20:07.680 --> 00:20:13.360
manually stop and edit, you know, the flow that you put in and then restart those.

00:20:14.660 --> 00:20:18.340
You know, there's a new component called the config change coordinator.

00:20:19.420 --> 00:20:22.780
And, you know, its ingestors were designed to automatically redeploy

00:20:23.340 --> 00:20:32.700
in response to a configuration update. And so, you know, if you have a C2,

00:20:33.640 --> 00:20:40.060
it can communicate out that configuration update or when minify checks in, you know,

00:20:40.060 --> 00:20:45.200
you will see that. And unfortunately, it's not something I can just point and click and show

00:20:45.200 --> 00:20:51.300
you. You know, that is, you know, it's a feature of minify that it does that.

00:20:51.500 --> 00:20:58.820
There's in the configuration, you know, how to do that. But, you know, that's, you know,

00:20:58.940 --> 00:21:05.660
how that's done. So, you know, keep that in mind. The config change ingester are the

00:21:05.660 --> 00:21:11.600
means by which an agent is notified of any potential new configuration. There's only currently

00:21:11.600 --> 00:21:19.600
three. That's like a file change ingester, rest change ingester, and a pull HTTP change ingester.

00:21:21.400 --> 00:21:28.800
You know, again, you're limited very much in some of the capabilities. So, if those,

00:21:29.600 --> 00:21:35.040
you know, requirements, you know, meet your use case, then please, you know, have at it.

00:21:36.820 --> 00:21:41.120
After a new configuration has been pulled and received, the ingesters use a

00:21:41.120 --> 00:21:46.240
differentiator in order to determine if the currently running config is different than the new

00:21:46.240 --> 00:21:51.600
config. You know, when the differentiator is used, it's configured for each ingester.

00:21:52.280 --> 00:21:57.960
There's only one differentiator in minify that you can use, and it's called the whole config

00:21:58.660 --> 00:22:04.700
differentiator. And all it does is compare the entire new config with the current running one.

00:22:05.500 --> 00:22:13.660
It does look byte per byte. And if a new config is determined to be new, the minify agent will

00:22:13.660 --> 00:22:22.080
attempt to automatically restart and pick up, you know, the configuration. So, for you,

00:22:22.080 --> 00:22:30.220
sysadmins, the bootstrap first saves the old config, you know, into a swap file. And so,

00:22:30.220 --> 00:22:37.940
the bootstrap monitors the agent as it restarts. If it fails to run properly when it restarts,

00:22:38.460 --> 00:22:46.160
it can revert back to an old config. So, you know, kind of, if you have a Tesla or,

00:22:46.260 --> 00:22:52.060
you know, I'm familiar with Android phones, you know, if an update doesn't succeed,

00:22:52.400 --> 00:22:58.740
it has a rollback capability. You know, I'm familiar with my wife's Tesla. It's the same

00:22:58.740 --> 00:23:06.900
with hers. You know, if an update doesn't succeed, it can roll those back, and that way,

00:23:06.940 --> 00:23:13.140
you know, at least your minify is up and running. So, you know, just for FYI.

00:23:14.960 --> 00:23:20.400
Data left in connections when the agent attempts to restart will either be mapped

00:23:20.400 --> 00:23:26.400
to a connection with the same ID as in the new config or orphaned and deleted. So,

00:23:26.400 --> 00:23:34.220
you know, kind of goes back to the question about the authorizers and those types of things.

00:23:34.860 --> 00:23:41.800
NAFA likes to use these unique IDs, these new UIDs. And when you're building a NAFA flow

00:23:41.800 --> 00:23:47.840
into a minify flow, and we'll go into some of this as well, you know, you've got to

00:23:47.840 --> 00:23:55.660
capture those group IDs. That's one of the bigger issues I see, is people will create a

00:23:55.660 --> 00:24:02.900
new flow, and when you do that, it's going to create a new UID for the connection. And so,

00:24:03.080 --> 00:24:10.520
any data that you were originally processing, if it doesn't finish and it's mid-flight,

00:24:11.340 --> 00:24:17.280
it's going to look for that new, it's going to look for that UID connection, and if it

00:24:17.280 --> 00:24:23.620
doesn't find it, it will just delete itself. So, you know, keep that in mind, you know,

00:24:23.620 --> 00:24:32.400
when you're building this out, mostly in you guys' type of environment. And I'm just imagining your

00:24:32.400 --> 00:24:39.240
environment based upon working with South Group last year and building out some capabilities that

00:24:39.240 --> 00:24:47.360
they wanted to build out and those types of things. The configuration for a one deploy is

00:24:47.360 --> 00:24:50.720
done in the bootstrap.conf, which you can also

00:25:07.760 --> 00:25:16.280
define here in the bootstrap configuration file. You know, the bootstrap.conf

00:25:16.280 --> 00:25:22.240
primarily revolve around the config change and gestures. The configuration of the bootstrap

00:25:22.240 --> 00:25:31.120
is done using the NaPy monitor notify and gestures key, which you will see

00:25:34.020 --> 00:25:41.340
a lot in this section. So, for your sysadmin, you can start seeing, you know, the

00:25:41.340 --> 00:25:45.380
file change notifier configuration I talked about, the rest change notifier configuration,

00:25:45.380 --> 00:25:50.660
HTTP, you know, and those types of things. This is where you would configure that.

00:25:51.980 --> 00:25:58.700
You can, since this is the Java version, you know, you can configure the JVM memory settings.

00:25:59.540 --> 00:26:06.040
It is very low out of the box, only 256 meg of memory, but you've got to also take

00:26:06.040 --> 00:26:14.520
into consideration that, you know, this is usually used on an edge device, you know,

00:26:14.580 --> 00:26:22.600
those types of things. You know, the C++ version is more efficient. If you're using a Raspberry Pi

00:26:23.140 --> 00:26:31.140
and Raspbian OS, the support for Minify++ is actually really, really good.

00:26:31.660 --> 00:26:38.140
Minify actually supports, you know, some of the Raspberry Pi capabilities.

00:26:39.020 --> 00:26:42.100
Let me pull that for you just so you can, because I know it was mentioned.

00:26:45.440 --> 00:26:54.440
Let me see if it's on this page. Yeah. So, if you're using the C++, there is built in some

00:26:54.440 --> 00:27:08.580
Raspberry Pi capabilities, you know, OpenCV is there, a USB camera, there's sensors. So,

00:27:08.580 --> 00:27:15.240
if you enable the sensors on the C++ version of Minify, you can read from the, you know,

00:27:15.560 --> 00:27:25.640
Raspberry Pi sensors. There's a lot of these that are built, the C++ versions of the processor,

00:27:26.720 --> 00:27:32.720
you know, is built for Raspberry Pi. It'll run on others, but it's, you know, specifically

00:27:32.720 --> 00:27:39.660
targeted after that. You know, you can use GPS. If you have a GPS module on your Raspberry

00:27:39.660 --> 00:27:46.680
Pi, you know, you have a GPS hat, it can pull that information, you know, those types of things.

00:27:47.900 --> 00:27:54.520
Capture, you know, PCAP, you know, things from, there's a, you know, I know of a lot of folks

00:27:54.520 --> 00:28:02.600
using this to capture PCAP data, you know, even on the edge, to filter and sort and

00:28:02.600 --> 00:28:07.820
analyze that network traffic. So, you know, just keep that in mind, you know, when you're

00:28:08.100 --> 00:28:13.500
using your version, that it's there, it's available in those types of things.

00:28:15.160 --> 00:28:22.820
Again, we're looking at the Java version, so you can, you have remote debugging. There is some,

00:28:24.200 --> 00:28:30.360
you know, for cluster mode to work properly, you know, some of the things that you need to do,

00:28:31.300 --> 00:28:36.980
you know, if you have some older, you know, system settings and things like that.

00:28:38.580 --> 00:28:44.680
This is, it's set to headless mode by default, you know, and those types of things. I was talking

00:28:44.680 --> 00:28:52.540
about some of the C2 capabilities. If you have a C2 server, you can go in and configure it.

00:28:52.700 --> 00:28:59.040
Again, if you are using a lot of edge devices where you're running Minify,

00:28:59.460 --> 00:29:05.480
I would highly recommend a C2 instance, just because once you get your Minify running with

00:29:05.480 --> 00:29:14.560
security, you know, you can feed that C2 the data flow that you want to run, and it will

00:29:14.560 --> 00:29:20.840
automatically download that data flow, run it, and, you know, and it'll just look for a new one

00:29:20.840 --> 00:29:27.980
periodically. So, you can set the heartbeat and all the information about C2 here. Again,

00:29:29.080 --> 00:29:35.080
I'm thinking about one of my senior engineers I was working with just a couple weeks ago. He

00:29:35.080 --> 00:29:42.240
was having a problem with C2 because there's not a lot of support for it online. You know,

00:29:42.340 --> 00:29:48.620
so a lot of the settings and configuration that you look at is, you know, trial and error,

00:29:48.760 --> 00:29:53.520
you know, you're just going to have to play around with it. But, you know, it does work,

00:29:53.560 --> 00:30:05.060
and you can get it up and running. Everything that we use to communicate to the C2, to

00:30:05.060 --> 00:30:13.900
you know, it's an SSL connection if need be and things like that. Now, when it comes to

00:30:13.900 --> 00:30:21.560
some of the fine grained security details of Minify, you're not going to see the same

00:30:21.560 --> 00:30:28.860
types of policies that Minify has. You know, just because it is a, you know, basically an

00:30:28.860 --> 00:30:34.920
agent of Minify, its primary purpose is to either, you know, get file, collect data,

00:30:35.100 --> 00:30:43.300
read a sensor, you know, you name it, do some quick operations. You may want to execute a,

00:30:43.300 --> 00:30:48.860
you know, a model, an AIML type model and those types of things. I do know,

00:30:50.500 --> 00:30:59.260
like Seventh Group uses it to capture images and run, you know, image classification models

00:30:59.260 --> 00:31:08.500
on edge and instead of sending up a, you know, 2, 3, 4-meg JPEG, they can just send the

00:31:08.500 --> 00:31:14.020
analytics from the, you know, the output of the analytics. You know, so that's something to

00:31:14.070 --> 00:31:31.730
keep in mind as well. Extensions is just like the extensions directory on NAFA.

00:31:33.530 --> 00:31:39.270
Actually, we did not go into that, but, you know, we talked about it I think on the first day.

00:31:40.410 --> 00:31:43.870
Your extensions is just, you know, just like you would in NAFA. This is where you're going

00:31:43.870 --> 00:31:49.710
to load, you know, your custom processor or something else like that. You don't want to

00:31:49.710 --> 00:31:55.890
restart your Minify agent. You just want to get it loaded and deployed. So, you know,

00:31:55.970 --> 00:32:02.570
use the extensions directory when you can. And, of course, there's the lib directory.

00:32:04.230 --> 00:32:09.850
If you see it, you know, we still have NARS, you know, listed here just like we would in

00:32:09.850 --> 00:32:18.050
NAFA. Not as many, you know, you would see within the NAFA, but, you know, you can,

00:32:18.370 --> 00:32:23.370
you know, depending on how you want to handle this, you can copy a NAR from,

00:32:27.610 --> 00:32:38.030
I'm going to go in and show you. So, you're able to copy the, like, one of the NARS from

00:32:41.690 --> 00:32:56.530
NAFA. Let's see, let's, there's already Kafka, there's solar. Like, we'll take the solar one,

00:32:56.530 --> 00:33:03.550
for instance. You know, if I had a Minify flow that was, you know, picking data up,

00:33:04.310 --> 00:33:12.990
sending that to solar. Solar is a search industry based off of Lucene,

00:33:13.010 --> 00:33:20.530
another Apache level project. I would include the solar NAR as part of my, you know, deployment.

00:33:21.550 --> 00:33:26.530
You know, so keep that in mind. You know, when you have your CSV process set up,

00:33:26.810 --> 00:33:30.710
if you do have custom processors, and it sounds like you may or you will,

00:33:31.860 --> 00:33:38.440
you know, you can have those built, and then when you build and deploy your Minify,

00:33:38.940 --> 00:33:48.240
you can use that processor on your Minify, you know, install. If you are, if you have that

00:33:48.240 --> 00:33:54.880
processor part of your flow file, and, you know, we have to design our flow file, you know,

00:33:54.880 --> 00:34:01.980
data flow itself, we have to design those within NAFA. And so once you, you know,

00:34:02.100 --> 00:34:08.240
get your data flow designed in NAFA, and you save, and we're about to do that right now,

00:34:09.040 --> 00:34:16.660
and once you save that flow, if that processor does not exist in Minify,

00:34:17.380 --> 00:34:23.380
it will reject that flow and not run. So, you know, just keep that in mind, you know,

00:34:23.380 --> 00:34:31.480
if you develop custom processors, or if you're using processors that are not part of the

00:34:31.480 --> 00:34:42.600
Minify distro. Again, you know, we know, you know, the C++ version, you have a very detailed

00:34:42.600 --> 00:34:53.420
list with Minify, and then also the, again, it's a very extensive list.

00:35:04.620 --> 00:35:13.700
So, if you, you know, these processors are not packaged with Minify, but it's able to use the

00:35:13.700 --> 00:35:23.280
following processors out of the box. You know, so execute SQL, we were using that, we were

00:35:23.280 --> 00:35:29.560
using, you know, some of these other processors in our data files, data flows that we built.

00:35:30.200 --> 00:35:37.280
So just keep that in mind. This list is available, but it's not readily available.

00:35:38.100 --> 00:35:43.920
And so what I'm going to do is put that as part of a presentation I send out afterwards,

00:35:44.220 --> 00:35:51.780
you know, just as a tip and trick that, you know, kind of reference this list based upon,

00:35:51.780 --> 00:35:59.860
you know, what your data flow may be. I think, you know, we would use a put file and a get file.

00:36:00.780 --> 00:36:05.760
You know, in our data flow, usually you would, like, you know, in a Minify instance,

00:36:06.220 --> 00:36:12.980
this is pretty new where they've, you know, kind of separated this out. There's a lot of,

00:36:13.540 --> 00:36:20.100
of, you know, there's a lot of thought in the future of Minify where you can

00:36:21.380 --> 00:36:27.500
just use NaPy and just deploy it as NaPy because it's actually the same engine underneath.

00:36:27.940 --> 00:36:34.600
So do expect some changes to this coming up soon. And that's because, you know,

00:36:34.600 --> 00:36:41.020
I just have the insider knowledge that these things are coming. So, but I'll send this list

00:36:41.020 --> 00:36:46.520
out. I'll send out, you know, a few things about it, but keep it in mind as well.

00:36:48.160 --> 00:36:54.140
Okay. So Minify is able to use the standard SSL contact service out of the box as well.

00:36:56.400 --> 00:37:01.740
If, you know, so keep that in mind. If you want to create a data flow with a processor

00:37:01.740 --> 00:37:08.000
not shipped with Minify, you know, the way you do that is set up your data flow,

00:37:08.000 --> 00:37:13.940
copy the NAR into the lib directory and then restart your Minify instance. And so, you know,

00:37:13.980 --> 00:37:18.640
just if you're at this, you know, you would have to, I think some of these

00:37:19.440 --> 00:37:25.680
NARs are packaged and bundled together. So if we look at NaPy, there is a NaPy.

00:37:42.340 --> 00:37:46.040
I'll have to go back and look and see where it's at. But there's a NaPy bundle NAR,

00:37:46.860 --> 00:37:55.680
and that is a bundle of some of these standard processors. And so, you know, with that being

00:37:55.680 --> 00:38:02.160
said, you may, you know, there is a JD bundle, but that's not it. So you may have to

00:38:03.320 --> 00:38:09.000
include the bundle of processors, even though you may not use the others.

00:38:09.860 --> 00:38:15.380
One of the ways around that is, is again, go back to the source code, get the specific

00:38:15.380 --> 00:38:21.080
processor. We looked at the Git file source code and, you know, go from there. You know,

00:38:21.080 --> 00:38:28.100
once you get the Git file, you can compile it. You can use it in your main NaPy instance

00:38:28.100 --> 00:38:34.220
and then turn around and ship that with Minify. As a matter of fact, as long as it's the same,

00:38:34.220 --> 00:38:43.000
you know, processor, what I would do is build a Git file processor that's specifically used

00:38:43.000 --> 00:38:50.700
for NaPy that you just extracted from the NAR bundle and, you know, use the Git file

00:38:50.700 --> 00:38:56.460
that's built into NaPy. So that way, you know, when you update NaPy, you can,

00:38:57.300 --> 00:39:03.780
you know, just update the bundle and everything else. And then you can specify the processors

00:39:04.380 --> 00:39:11.140
that get loaded on the Minify. Also, it would not include processors you're not going to use.

00:39:11.960 --> 00:39:17.340
Do remember every time you start NaPy, it's loading all of these processors up.

00:39:18.140 --> 00:39:25.900
It's not necessarily consuming a lot of resources, but any time you add a processor to the,

00:39:25.900 --> 00:39:30.980
to Minify, it's got to load it. It's got storage resources and other resources,

00:39:31.660 --> 00:39:36.440
you know, that's there. Okay.

00:39:47.580 --> 00:39:55.960
Within the Minify directory, you have the, you know, the actual Minify application.

00:40:03.900 --> 00:40:17.320
With that application, you can pass it like a dash H to see all of the help files, the

00:40:17.940 --> 00:40:25.060
you know, you can monitor your status. You can, you know, get health and bulletin

00:40:25.060 --> 00:40:33.440
and those types of things. Check the connection of links. You know, sometimes you may have a

00:40:33.440 --> 00:40:39.080
link, you know, not acting correctly, those types of things. You may have a remote process

00:40:39.080 --> 00:40:46.120
group. And so you can check those types of things. In my, there's not a lot of,

00:40:46.120 --> 00:40:55.900
like I said, there's some of this documentation online for Minify, but in my email I sent out to

00:40:55.900 --> 00:41:04.240
everyone, I'll include some of this. A lot of the documentation is not part of, you know,

00:41:04.360 --> 00:41:09.720
your standard NaPy distro where, you know, it's actually laid out really nice and things

00:41:09.720 --> 00:41:18.580
like that. They'll send you to a GitHub repo and you need to read the reading. So again,

00:41:18.680 --> 00:41:26.780
it goes back to what I was saying, is Minify is great. It works well. It can be a pain to set

00:41:26.780 --> 00:41:32.500
up. It can be a pain to manage, you know, initially, but once you get some over some of

00:41:32.500 --> 00:41:37.120
those hurdles, I think you'll really, you know, you can potentially really enjoy

00:41:37.120 --> 00:41:42.520
Minify as an agent because, you know, you have the ability to execute those data flows on the

00:41:42.520 --> 00:41:52.320
system. Okay. Some of the other things about Minify real quickly, you know, it runs on

00:41:52.320 --> 00:42:07.100
Linux. It runs Red Hat. Ubuntu is supported. Dimian is supported. Raspberry Pi OS is

00:42:07.100 --> 00:42:14.160
more and more supported and that's what we are going to use just to create a data flow and get

00:42:14.160 --> 00:42:24.420
it started. You know, it can be, again, a little tricky. So if everyone can, let's go ahead and

00:42:24.420 --> 00:42:35.260
launch your NaPy instance and bring it up and let's start creating a new, we're going to just

00:42:35.260 --> 00:42:43.420
I'm talking very simple. And so if we can, let's see here. I don't want to use

00:42:43.420 --> 00:43:13.400
it. So let's grab, oh, generate flow file. No, that's part of there. So bring up your

00:43:14.400 --> 00:43:21.640
process is to get this going. You know, it's probably going to error out just because,

00:43:22.800 --> 00:43:27.020
you know, your Minify will need, you know, if you create your own custom flow,

00:43:27.200 --> 00:43:32.100
it's going to need the processors, those types of things. But, you know, we can get started.

00:43:32.980 --> 00:43:35.140
Let's see here. Let's create a quick flow.

00:43:37.940 --> 00:43:46.660
So, okay, go to process group and let's say this is our Minify flow.

00:43:51.200 --> 00:44:01.620
Add it. Okay. Give everybody a second to get, you know, logged back in and back onto the,

00:44:02.800 --> 00:44:18.880
back into the canvas. Okay. So let's just use the log attribute. So what we're going to do is

00:44:18.880 --> 00:44:27.160
first we need a way to capture everything coming in from NaPy. So let's use like an all log

00:44:27.480 --> 00:44:38.020
attribute. And that's a little different than your log message. So what it is doing is,

00:44:38.240 --> 00:44:44.560
is we, you know, how this gets set up is Minify connects to NaPy. Minify, you know,

00:44:44.680 --> 00:44:51.100
Minify can connect to other external services as well. So, you know, if you, you do not

00:44:51.100 --> 00:44:59.440
necessarily need a, you know, a dedicated, I mean, you do need a dedicated NaPy instance,

00:44:59.640 --> 00:45:05.600
but you can have Minify deploy a flow that checks into your NaPy, but it will reach out

00:45:05.600 --> 00:45:13.540
and connect to another service running locally or say you have a service that's only available

00:45:13.540 --> 00:45:18.780
on the edge. And so you may have Minify reach out to that service, pull the data in,

00:45:18.780 --> 00:45:25.620
and then send it to NaPy. Okay. So, you know, the first thing we're going to do is have a

00:45:25.620 --> 00:45:32.660
log attribute processor. And then we are going to bring in an input port.

00:45:34.660 --> 00:45:38.700
So we are going to receive this from a remote site to site connection.

00:45:39.360 --> 00:45:48.020
This is what we get into with Minify. We'll output to a port and, you know,

00:45:48.020 --> 00:45:54.400
we are going to receive it. So name your port from Minify.

00:46:03.040 --> 00:46:12.600
And then when you are, I'm just naming mine, go into the create connection and settings.

00:46:14.320 --> 00:46:22.600
And, you know, now you have a connection on your site to site, you know, from Minify. So

00:46:23.380 --> 00:46:29.940
what would happen, and I doubt we get time to get all of this fully up and running,

00:46:30.300 --> 00:46:36.640
but what's going to happen is Minify needs a place to send, you know, its data,

00:46:36.720 --> 00:46:42.980
it needs a connection. So, you know, what we are doing is we are going to listen,

00:46:43.700 --> 00:46:48.480
you know, this is our input port. So we're going to listen for all those site to site

00:46:48.480 --> 00:46:55.060
connections from Minify. And when it comes in, we're going to log the attribute.

00:46:56.360 --> 00:47:02.800
You know, this is, you know, we don't have to log the attribute. We can bring whatever data

00:47:02.800 --> 00:47:08.760
is Minify sending us and, you know, send it to another data flow, for instance,

00:47:08.780 --> 00:47:13.820
send it to another processor group, for instance. There's a lot of capabilities here

00:47:13.820 --> 00:47:18.080
on what you're able to do, what you're able to configure, those types of things.

00:47:18.480 --> 00:47:27.120
So, you know, create your input port. Do a log attribute. If you want, you know, you can

00:47:28.160 --> 00:47:31.600
just do another log message.

00:47:37.900 --> 00:47:43.320
Add that to your canvas and add that success.

00:47:45.000 --> 00:47:57.960
Okay. And I'm going to auto terminate my log message so that way it clears.

00:48:03.720 --> 00:48:11.740
Okay. So everyone should have something similar. Perfect. Good, Pedro.

00:48:13.480 --> 00:48:21.160
Brett, you might have missed it. You want to have an input port dragged down

00:48:21.700 --> 00:48:24.760
and you want to do remote site connection site to site.

00:48:27.860 --> 00:48:30.880
There you go. Perfect.

00:48:33.980 --> 00:48:40.440
Give you just another minute to create this. But again, this flow is to receive data from

00:48:40.440 --> 00:48:47.800
Minify. So this flow is not going to go out. You know, this isn't a flow that Minify is

00:48:47.800 --> 00:48:54.620
going to run. This is our flow to catch whatever Minify sends out through its site

00:48:54.620 --> 00:49:02.720
to site capabilities and, you know, receive that file. I have a log attribute because,

00:49:02.720 --> 00:49:06.600
you know, it's going to, you know, Minify is going to send me attributes and data.

00:49:07.400 --> 00:49:14.280
So, you know, just have a log attribute, have a message, and it should be a valid flow.

00:49:14.440 --> 00:49:22.140
Okay. Good deal. Oh, some of you are getting fancy very quickly. Okay. So now that we,

00:49:22.140 --> 00:49:26.720
you know, that's our receiver, right? You know, that's receiving the Minify. That's

00:49:26.720 --> 00:49:34.720
what the data coming in. Now it's time for us to build on what we plan to deploy to

00:49:34.720 --> 00:49:40.640
Minify. So to do that, I want to go back and what I'm going to do is create a new

00:49:40.640 --> 00:49:50.120
processor group. And I'm going to call this my Minify deployed flow. You can name it

00:49:50.120 --> 00:49:54.500
wherever you want to name it. But, you know, just so I know the difference between

00:49:55.180 --> 00:50:02.620
the Minify flow I just created, you know, I can create that flow.

00:50:03.580 --> 00:50:12.000
Go into that processor group. Okay. And then once you're in, let's bring down our

00:50:12.000 --> 00:50:28.220
processors and we are going to generate flow files. Generate flow file. There we go.

00:50:30.090 --> 00:50:39.730
Generate flow file is used quite a bit. Pedro almost mentioned this earlier on

00:50:39.730 --> 00:50:47.350
your question about the web services. Generate flow file sometimes is used to

00:50:47.350 --> 00:50:56.290
kick off a flow. So, you know, if you have an invoked HTTP, generate flow file is

00:50:56.290 --> 00:51:03.230
nice where you can set a timer up, some other rules in the generate flow file,

00:51:03.570 --> 00:51:11.190
generate a message, it kicks off the invoked HTTP and that's what kind of drives the

00:51:11.190 --> 00:51:17.070
rest of that flow. But for Minify, let's just use the generate flow file

00:51:17.070 --> 00:51:28.610
processor. We are going to basically generate a zero byte file. I'm going to

00:51:28.610 --> 00:51:43.990
set it to text. And it's going to send hello world. Apply. Now, again,

00:51:43.990 --> 00:51:53.930
we are, this is the flow that will be deployed to Minify. So, you know, this

00:51:53.930 --> 00:51:59.110
flow is not to, you know, don't get it confused with making it valid within

00:51:59.110 --> 00:52:07.250
NAFA. It needs to be valid for the Minify install. So, I know that can get a

00:52:07.250 --> 00:52:11.490
little confusing, but, you know, just keep that in mind when you're developing

00:52:11.490 --> 00:52:17.150
your flow that, you know, depending on file locations and those types of things,

00:52:17.150 --> 00:52:22.570
you may use a git file or something similar. And, you know, that file

00:52:22.570 --> 00:52:28.470
location is not available because it's not, you know, configured on the, you

00:52:28.470 --> 00:52:33.730
know, the remote service. And then once we have that, we are going to now

00:52:35.130 --> 00:52:39.310
bring down, so we did an input port. So, let's do an output.

00:52:40.430 --> 00:52:44.990
Let's do site to site. And this is to NAFA.

00:52:54.190 --> 00:52:59.690
Drag your success over and go from there.

00:53:02.010 --> 00:53:09.870
The, let's see here. No, no. I apologize. Actually, delete that connection.

00:53:10.710 --> 00:53:18.830
We want to actually add a remote process group. And it's a, so that's

00:53:18.830 --> 00:53:23.730
the way when Minify sends it to the NAFA, it's sending it to that remote

00:53:23.730 --> 00:53:32.630
process group. You can, you want to put in your instance that you're running

00:53:32.630 --> 00:53:42.650
right now. So, HTTPS 127.0.0.1 colon 8443. And don't forget NAFA.

00:53:46.190 --> 00:53:51.590
So, when setting up NAFA, you know, we'll talk about this. You know,

00:53:51.590 --> 00:53:57.750
when setting up these connections, you can, you know, if you set this,

00:53:57.750 --> 00:54:02.470
you know, transport protocol to raw, you're going to need to work off of

00:54:02.470 --> 00:54:10.190
your own port. And if you look right here, because I get this question

00:54:10.190 --> 00:54:14.610
quite a bit. If you look at your NAFA

00:54:18.610 --> 00:54:19.490
configuration,

00:54:36.490 --> 00:54:44.770
in the NAFA configuration, you have, I think it's port 10,000 is the,

00:54:45.350 --> 00:54:47.290
um,

00:54:49.130 --> 00:54:51.290
there's a web port.

00:55:25.010 --> 00:55:33.070
The remote input port, remote input host. So, you know, when you are

00:55:33.070 --> 00:55:41.350
configuring your flow, you can choose raw or HTTP. If you use HTTP,

00:55:41.350 --> 00:55:47.710
which is the one I recommend, HTTP is going to communicate with your NAFA

00:55:48.310 --> 00:55:54.330
over the URL that you're logged into. So, it's going to create that secure

00:55:54.330 --> 00:56:04.470
connection back to your NAFA instance. And that's how it's going to listen

00:56:04.470 --> 00:56:11.430
and not identify as going to push its data. Now, a lot of people that are

00:56:11.430 --> 00:56:16.730
processing lots of data on the edge, you may not want all of that data

00:56:16.730 --> 00:56:23.250
going to the main NAFA HTTP port. The reason being is, is that

00:56:23.250 --> 00:56:27.310
Jetty server running underneath, it's serving up the webpage and the

00:56:27.310 --> 00:56:33.110
API and everything else can get overloaded. And so, it could cause

00:56:33.110 --> 00:56:38.910
your browser to become a little unresponsive. And so, you might not

00:56:38.910 --> 00:56:46.070
be, you know, you might turn a flow on, say 100 edge nodes, you turn

00:56:46.070 --> 00:56:50.790
that flow on. And, you know, once you turn it on, it's going to start

00:56:50.790 --> 00:56:57.230
bogging down your system. It's going to, you know, you can get

00:56:57.230 --> 00:57:02.270
into your UI, those types of things. I've seen that happen. The best

00:57:02.270 --> 00:57:07.070
way to mitigate that is just, you know, managing your resources. You

00:57:07.070 --> 00:57:13.050
know, but if you want to send it to a raw, you know, NAFA port,

00:57:13.290 --> 00:57:19.430
that is okay as well. The beauty of that is, you know, you can

00:57:19.430 --> 00:57:23.870
configure that port. You can, you know, do some load balancing.

00:57:24.210 --> 00:57:27.890
You put Nginx in front of this and, you know, do some really

00:57:27.890 --> 00:57:31.570
advanced load balancing and those types of things. I recommend the

00:57:31.570 --> 00:57:36.490
HTTP port though. It's just a little bit easier to deal with. You

00:57:36.490 --> 00:57:41.870
know, it operates on the same port in IP that you have in NAFA running.

00:57:42.270 --> 00:57:46.530
So, if you can imagine, you don't have to open another, you know,

00:57:46.810 --> 00:57:52.090
another hole in your firewall to allow access. You know, so keep

00:57:52.090 --> 00:57:57.750
that in mind. I always recommend HTTP. You can put some proxy

00:57:57.750 --> 00:58:02.330
information in, those types of things. But, you know, that's usually

00:58:02.330 --> 00:58:03.350
what I like to do.

00:58:07.850 --> 00:58:11.770
And then take your generate flow file, you know,

00:58:11.790 --> 00:58:13.090
connect to your port.

00:58:14.790 --> 00:58:16.850
It does not have any knowledge of inputs.

00:58:18.610 --> 00:58:20.590
Let me see what's going on with my other one.

00:58:30.910 --> 00:58:31.490
Hmm.

00:58:38.810 --> 00:58:42.870
Did you all receive the same error that it didn't have an input port?

00:58:44.630 --> 00:58:48.330
Yes, I got it. Okay. Thank you.

00:58:53.030 --> 00:58:56.030
Oh, I think it's because it's trying to connect.

00:58:56.670 --> 00:59:00.770
But again, I haven't set up the trust store, the key store,

00:59:01.190 --> 00:59:04.350
and all of that, you know, on minify,

00:59:05.370 --> 00:59:09.610
which is, you know, a little outside the scope of

00:59:09.610 --> 00:59:12.850
configuring NAFA. So anyway, so what you would do

00:59:12.850 --> 00:59:18.210
is set up your flow file and get that configured. And you're going

00:59:18.210 --> 00:59:23.410
to have this go to an output, that remote process group.

00:59:24.010 --> 00:59:28.330
Once that remote process group is there, you want to make sure you include

00:59:29.990 --> 00:59:36.230
your, you know, the URL, the HTTP. Do remember, you've got a UUID here.

00:59:36.510 --> 00:59:41.970
So if you need to, you know, do those types of things,

00:59:42.870 --> 00:59:46.730
you may have to define that in your CI CD process, you know, some of

00:59:46.730 --> 00:59:50.050
those types of things. So, you know, just keep that in mind.

00:59:51.490 --> 00:59:52.990
Um, let's see here.

00:59:54.430 --> 00:59:57.430
But actually, it should still connect.

01:00:00.630 --> 01:00:04.670
See if I can solve this, let's see here. I do have an input.

01:00:13.810 --> 01:00:14.330
Hmm.

01:00:19.370 --> 01:00:21.570
We have now two of them, so it should.

01:00:38.090 --> 01:00:40.590
It doesn't match any of them.

01:00:42.150 --> 01:00:45.590
I think we'll connect to due to SSL.

01:00:46.670 --> 01:00:52.850
Um, so anyways, you know, the issue I'm having here is the,

01:00:52.930 --> 01:00:57.170
looks like the SSL, you know, it's not allowing it to connect to the

01:00:57.170 --> 01:01:00.290
self because of SSL. It can't match the names.

01:01:00.850 --> 01:01:06.650
But when setting this up, you're going to create your flow file here.

01:01:07.330 --> 01:01:13.010
And then once you have your flow file, you know, define that we are

01:01:13.010 --> 01:01:15.890
going to export that out and run it in Minifile.

01:01:16.770 --> 01:01:19.650
So let me see if I can.

01:01:24.450 --> 01:01:27.630
This just worked earlier yesterday when I was testing it.

01:01:31.110 --> 01:01:38.170
One second, let's see. What am I blowing up? Put port in here.

01:01:50.290 --> 01:01:53.230
Yeah, but that's not going to do it because

01:01:54.270 --> 01:01:57.070
there's no definition of where it needs to go.

01:02:03.450 --> 01:02:06.510
I'll have to take a look and see why the

01:02:06.510 --> 01:02:09.310
configuration is blocking me when it was just working

01:02:09.310 --> 01:02:14.050
last night. But basically, you're going to,

01:02:14.130 --> 01:02:16.930
this is where you're going to build your Minifile flow.

01:02:17.570 --> 01:02:21.470
You're going to, you know, this is where you do your operation. So you,

01:02:21.510 --> 01:02:24.690
you know, right now we're just doing a generate flow file.

01:02:24.810 --> 01:02:27.950
And then we're just generating a hello world

01:02:27.950 --> 01:02:31.650
and sending it to the remote Minifile group.

01:02:32.830 --> 01:02:35.750
And so, you know, you would configure that here.

01:02:42.830 --> 01:02:48.310
So anyway, so I'll diagnose this and see what's going on here.

01:02:48.350 --> 01:02:50.830
But I think you get the principle behind it.

01:02:51.790 --> 01:02:56.570
So if we were on Minifile itself in deploying this to Minifile,

01:02:56.570 --> 01:03:01.090
we would take and do a generate flow file. We can chain together

01:03:01.090 --> 01:03:06.030
other processors, you know, say we were doing an Invoke HTTP

01:03:07.170 --> 01:03:13.190
because we are going to grab a local, you know, a local file

01:03:13.190 --> 01:03:17.850
that's running on the web server. You can build out your flow as much

01:03:17.850 --> 01:03:22.630
as you want or as little as you want. But at the end of that flow file,

01:03:22.630 --> 01:03:27.690
you're going to send that to a, to a remote process group.

01:03:28.110 --> 01:03:32.510
And so, you know, that remote process group gets defined here.

01:03:32.890 --> 01:03:35.510
You know, you want to make sure you have your,

01:03:36.810 --> 01:03:39.030
you know, your property set correctly.

01:03:42.030 --> 01:03:43.210
Good, lower latency.

01:03:46.370 --> 01:03:48.670
Is anyone else's latency getting bad on this?

01:03:48.670 --> 01:03:51.230
There we go.

01:04:06.550 --> 01:04:12.150
Oh, there we go.

01:04:12.950 --> 01:04:14.870
You know, just, just, you know, to reiterate,

01:04:15.130 --> 01:04:16.910
when you're configuring a remote process group,

01:04:16.910 --> 01:04:20.650
you're going to need to put, you know, your,

01:04:21.130 --> 01:04:25.610
you know, your NaFi instance that you're going to communicate with.

01:04:26.350 --> 01:04:29.970
You're going to need to set up the, you know, the matching certificates.

01:04:30.010 --> 01:04:32.030
So the certificates that you use for NaFi

01:04:32.690 --> 01:04:36.730
is going to have to be installed for your Minifile install as well.

01:04:37.130 --> 01:04:39.970
You know, for that, for this to work properly,

01:04:40.410 --> 01:04:42.490
it needs to make that, you know, that connection.

01:04:42.490 --> 01:04:46.890
Again, that's where you go into the Minifile key store or trust store

01:04:47.910 --> 01:04:50.410
and set those appropriately.

01:04:52.410 --> 01:04:55.810
I don't know why I configured this like yesterday

01:04:55.810 --> 01:04:58.410
to double check that it worked, and for some reason it didn't.

01:04:59.670 --> 01:05:01.830
But we get the idea.

01:05:02.070 --> 01:05:04.970
So once you create your Minifile flow,

01:05:06.850 --> 01:05:09.610
you can leave the group and,

01:05:10.430 --> 01:05:14.830
and then what we need to do now is actually,

01:05:15.710 --> 01:05:17.350
you know, get that flow.

01:05:18.310 --> 01:05:21.990
So we've, you know, created our data flow.

01:05:22.250 --> 01:05:24.110
Now we need to export this out.

01:05:24.110 --> 01:05:25.310
So if we say,

01:05:38.270 --> 01:05:41.070
if you right click on that and say,

01:05:42.170 --> 01:05:45.890
download flow definition with external services,

01:05:46.710 --> 01:05:50.690
you should be presented with a JSON document.

01:06:03.030 --> 01:06:05.070
And I'll bring it up so you can see what it looks like.

01:06:19.430 --> 01:06:19.830
Okay.

01:06:21.550 --> 01:06:23.610
Again, right, it's messy.

01:06:24.110 --> 01:06:27.890
So once you download your flow

01:06:28.910 --> 01:06:30.530
with those external services,

01:06:30.970 --> 01:06:33.950
this is the flow that you are going to use

01:06:34.750 --> 01:06:36.870
to feed your Minifile instance,

01:06:38.010 --> 01:06:40.050
that initial, you know, that initial flow.

01:06:40.410 --> 01:06:43.790
If you have previously set up a,

01:06:45.710 --> 01:06:49.070
if you have previously set up a C2 instance,

01:06:49.530 --> 01:06:51.970
you would actually go into Minifile

01:06:51.970 --> 01:06:56.010
and I configure Minifile to communicate

01:06:56.010 --> 01:06:58.370
with the C2 instance and the properties.

01:06:58.810 --> 01:07:01.170
And then you can pass the,

01:07:02.170 --> 01:07:05.510
you know, you can actually pass Minifile command

01:07:05.510 --> 01:07:08.770
that tells it what initial data flow to get

01:07:09.330 --> 01:07:12.110
because C2 is going to serve that up.

01:07:12.450 --> 01:07:14.250
But for this scenario,

01:07:14.630 --> 01:07:16.370
we're using Minifile to,

01:07:17.070 --> 01:07:20.010
you know, we're using Minifile to create our flow

01:07:20.010 --> 01:07:21.690
like you would do no matter what.

01:07:21.970 --> 01:07:24.210
While we can save that flow,

01:07:25.010 --> 01:07:27.730
you know, for this way of running Minifile,

01:07:27.890 --> 01:07:29.890
we can export that flow as JSON.

01:07:30.330 --> 01:07:33.230
Make sure you don't export it as like a CSV

01:07:34.510 --> 01:07:37.530
or not a CSV, but an XML template

01:07:37.530 --> 01:07:39.350
or any of those other formats.

01:07:39.730 --> 01:07:42.490
It is expecting a JSON document.

01:07:43.230 --> 01:07:45.250
And so once we have that running,

01:07:46.150 --> 01:07:46.770
we need to,

01:07:51.970 --> 01:07:56.490
so once you have that, we can actually copy that file,

01:07:57.290 --> 01:07:58.290
go into Minifile,

01:08:01.590 --> 01:08:07.230
into your conf directory and paste that flow.

01:08:08.250 --> 01:08:11.730
Now, even with this flow, it's not going to,

01:08:13.290 --> 01:08:15.250
it's not going to pick it up.

01:08:15.690 --> 01:08:19.310
Minifile is looking for a specific name for this flow.

01:08:19.310 --> 01:08:22.990
So once you have developed your flow in Minifile,

01:08:23.330 --> 01:08:25.850
you've exported and saved that flow,

01:08:26.250 --> 01:08:29.370
you know, can copy it into your conf directory

01:08:29.370 --> 01:08:36.790
and then you need to rename that to flow.json.raw.

01:08:41.230 --> 01:08:45.690
And so that is your initial flow of,

01:08:45.690 --> 01:08:47.850
of, you know, for Minifile.

01:08:47.850 --> 01:08:50.830
Again, you know, in the conf directory,

01:08:51.010 --> 01:08:53.710
we also have, you know, the config,

01:08:53.710 --> 01:08:55.450
you know, logging mechanisms,

01:08:56.310 --> 01:08:57.290
you know, your bootstrap.

01:08:58.150 --> 01:08:59.750
When you set up Minifile,

01:08:59.970 --> 01:09:02.150
you're going to need to install,

01:09:02.730 --> 01:09:05.430
no matter what, you're going to have to configure

01:09:05.430 --> 01:09:07.310
the security settings.

01:09:08.390 --> 01:09:10.550
You know, so it will not,

01:09:10.810 --> 01:09:15.570
Minifile will not connect to a secure NaFi instance

01:09:15.570 --> 01:09:19.030
if the security settings are not set up.

01:09:19.510 --> 01:09:22.670
And so I think when I made some changes,

01:09:22.770 --> 01:09:24.990
I might have changed some of my security settings

01:09:26.410 --> 01:09:28.170
and, you know, it just won't connect.

01:09:28.250 --> 01:09:30.110
I was hoping it would connect for demo purposes,

01:09:31.090 --> 01:09:33.790
but this is how you build a flow.

01:09:33.870 --> 01:09:35.950
This is how you export the flow.

01:09:36.330 --> 01:09:37.730
This is where you put it.

01:09:37.750 --> 01:09:42.790
You need to rename it to that flow.json.raw.

01:09:42.790 --> 01:09:46.870
And so, you know, that way, NaFi will recognize it.

01:09:48.370 --> 01:09:50.550
On a side note, I think I mentioned,

01:09:51.010 --> 01:09:55.950
NaFi will only use one flow per Minifile instance.

01:09:57.030 --> 01:10:01.110
You can, you know, you can build into that flow

01:10:01.110 --> 01:10:05.830
multiple operations, but what I can't do

01:10:07.270 --> 01:10:11.830
is I can't export the CSV to JSON demo flow

01:10:12.830 --> 01:10:14.910
that one and that one

01:10:14.910 --> 01:10:17.750
and expect to run all three of them in Minifile.

01:10:18.990 --> 01:10:20.310
Minifile runs one.

01:10:21.550 --> 01:10:25.010
So when you're building out your Minifile flow,

01:10:25.370 --> 01:10:26.990
take that into consideration.

01:10:27.670 --> 01:10:30.550
A lot of times we like to, you know,

01:10:31.610 --> 01:10:32.950
bust this up a little bit

01:10:32.950 --> 01:10:34.810
and do those types of things.

01:10:35.130 --> 01:10:36.830
In NaFi, that's great,

01:10:37.150 --> 01:10:41.530
but within Minifile, it's exactly one flow,

01:10:41.530 --> 01:10:42.950
one data flow.

01:10:43.590 --> 01:10:45.210
So, you know, make sure you export that out.

01:10:46.310 --> 01:10:49.230
If you, I wouldn't worry about putting,

01:10:50.150 --> 01:10:53.930
you know, any kind of beautification on this flow.

01:10:54.550 --> 01:10:57.530
If you do, just remember and keep in mind that

01:10:59.030 --> 01:11:02.490
whatever, you know, this Minifile deployed flow

01:11:02.490 --> 01:11:05.490
is going to exist on your NaFi canvas.

01:11:06.730 --> 01:11:09.950
If that's the process you have set up

01:11:09.950 --> 01:11:13.530
to deploy these flows, again, you know,

01:11:13.630 --> 01:11:15.610
C2 can take advantage of registry

01:11:16.370 --> 01:11:18.510
and some of the other services,

01:11:19.110 --> 01:11:23.290
but from a standard Minifile to NaFi connection,

01:11:23.770 --> 01:11:25.690
you're going to just build that flow

01:11:25.690 --> 01:11:27.490
in a new processor group.

01:11:27.630 --> 01:11:30.030
That processor group is just going to sit there,

01:11:30.690 --> 01:11:32.430
you know, so you will be able to,

01:11:33.210 --> 01:11:35.190
you know, you can do some of the beautification,

01:11:35.370 --> 01:11:37.910
you can do the labeling and the naming and all that,

01:11:37.910 --> 01:11:40.510
but taking into consideration that that flow

01:11:40.510 --> 01:11:43.250
is not being run within that NaFi instance.

01:11:43.670 --> 01:11:47.010
It's only being ran on the Minifile instance.

01:11:48.290 --> 01:11:52.350
Oh, that was a lot of information real quickly.

01:11:53.210 --> 01:11:55.850
So I'm going to pause there and, you know,

01:11:55.910 --> 01:11:58.390
give me what questions you have about Minifile

01:11:59.410 --> 01:12:00.530
that I can answer.

01:12:00.610 --> 01:12:01.750
Hopefully I didn't put everybody to sleep.

01:12:04.110 --> 01:12:09.070
Okay. So, you know, Ben, when we originally chatted,

01:12:09.490 --> 01:12:11.270
you also wanted to potentially hear

01:12:11.270 --> 01:12:16.010
some of the use cases for this and, you know,

01:12:16.050 --> 01:12:17.070
for these things.

01:12:17.870 --> 01:12:20.390
So I've written up some use cases.

01:12:21.510 --> 01:12:25.350
I can actually go into a real-world example for you.

01:12:25.990 --> 01:12:28.410
So I sit on the board of a company

01:12:28.410 --> 01:12:29.590
I founded a while back.

01:12:31.620 --> 01:12:34.200
I resigned myself for a CTO,

01:12:35.000 --> 01:12:36.540
and now I just sit on the board.

01:12:36.900 --> 01:12:39.080
And I was supposed to have a board meeting yesterday,

01:12:39.080 --> 01:12:40.260
but it got canceled.

01:12:41.080 --> 01:12:44.000
But I work one or two hours a month for this company.

01:12:45.020 --> 01:12:47.580
But my original design is,

01:12:47.760 --> 01:12:52.040
is what we do is we detect FOD on runways.

01:12:52.500 --> 01:12:55.400
So foreign object in debris on the runways

01:12:55.400 --> 01:12:57.440
for the F-35 program for the Navy.

01:12:57.440 --> 01:13:00.900
And, you know, so as you can imagine,

01:13:01.300 --> 01:13:03.600
we're reading radar data.

01:13:03.920 --> 01:13:06.300
We're reading, you know, other sensors

01:13:06.300 --> 01:13:07.860
and those types of things.

01:13:08.660 --> 01:13:12.180
And we're pulling that data in, scoring it.

01:13:12.260 --> 01:13:16.520
We've got numerous, you know, AI capabilities deployed.

01:13:17.420 --> 01:13:19.900
And so, you know, when we originally built

01:13:19.900 --> 01:13:21.700
this software to do this,

01:13:21.840 --> 01:13:25.440
I used the Minifile C++ under the hood,

01:13:26.240 --> 01:13:30.000
you know, to do some of that orchestration of services,

01:13:30.000 --> 01:13:34.380
you know, receiving the, you know, the radar data,

01:13:34.700 --> 01:13:38.360
pulling it in, executing a, you know,

01:13:38.520 --> 01:13:41.940
executing models and executing processes on that data,

01:13:42.280 --> 01:13:47.360
and then sending the alerts back to a centralized location.

01:13:48.060 --> 01:13:52.360
Radar data is about 25 gigs per every two seconds.

01:13:52.360 --> 01:13:56.460
So as you can imagine, that is, you know,

01:13:56.600 --> 01:13:58.720
there's no way you're going to stream

01:13:58.720 --> 01:14:00.300
that information to the cloud.

01:14:01.540 --> 01:14:04.920
Just not possible, you know, with, I mean, it's possible,

01:14:04.920 --> 01:14:07.460
but, you know, they don't have the budget

01:14:07.460 --> 01:14:08.420
for what it would take.

01:14:09.160 --> 01:14:13.420
So we deployed edge nodes to ingest that,

01:14:13.620 --> 01:14:16.780
utilizing NVIDIA GPUs and those types of things

01:14:17.400 --> 01:14:20.000
to ingest that data, bring it in,

01:14:20.000 --> 01:14:22.380
look for debris on the runway.

01:14:22.920 --> 01:14:27.240
And if it found something, we could locally,

01:14:27.460 --> 01:14:30.680
you know, send out a message, you know,

01:14:30.740 --> 01:14:34.580
right now they usually have airmen and sailors

01:14:34.580 --> 01:14:35.740
walking the runway.

01:14:36.780 --> 01:14:38.780
And, you know, humans have a tendency

01:14:38.780 --> 01:14:42.660
to make mistakes where machines are,

01:14:42.660 --> 01:14:44.540
you know, usually a little bit more accurate.

01:14:45.160 --> 01:14:47.700
And so they were noticing that, you know,

01:14:47.700 --> 01:14:49.860
debris sometimes would get left behind.

01:14:50.380 --> 01:14:53.480
And if you're familiar with the F-35 program,

01:14:53.500 --> 01:14:54.860
it has one engine.

01:14:55.220 --> 01:14:58.920
And so if that engine goes, then, you know, by plane.

01:14:59.520 --> 01:15:02.640
And so, you know, that's why they started using that.

01:15:02.660 --> 01:15:05.380
So that's, you know, a real world,

01:15:05.380 --> 01:15:07.240
you know, use case and strategy.

01:15:08.160 --> 01:15:10.560
Another one that I'd like to talk about

01:15:10.560 --> 01:15:13.360
is Seventh Group.

01:15:15.920 --> 01:15:22.240
We deployed some small compute, think Raspberry Pi,

01:15:23.060 --> 01:15:26.800
think Arduino, you know, Minify was rewritten

01:15:26.800 --> 01:15:32.400
to work on a low-level ESP32-type microcontroller.

01:15:33.520 --> 01:15:37.420
You know, so, you know, it would capture images,

01:15:38.160 --> 01:15:41.160
bring those images in, score those,

01:15:41.420 --> 01:15:43.300
image classification, facial recognition,

01:15:43.520 --> 01:15:44.420
those types of things.

01:15:45.100 --> 01:15:48.000
It would also collect data from other sensors,

01:15:49.180 --> 01:15:53.420
like, you know, your standard RTL-SDR-type hardware,

01:15:53.560 --> 01:15:55.680
which is your signals, you know,

01:15:55.760 --> 01:15:58.020
looking for time pressure monitoring systems,

01:15:58.360 --> 01:16:03.080
looking for Wi-Fi, you know, those types of things.

01:16:03.840 --> 01:16:05.420
You know, being able to bring that in,

01:16:05.420 --> 01:16:09.460
score that, and look for anomalies or patterns

01:16:09.460 --> 01:16:14.500
or, you know, just new devices that have popped up

01:16:14.500 --> 01:16:17.720
and, you know, securely send that to a NiFi instance.

01:16:18.920 --> 01:16:21.820
Some other use cases for Minify,

01:16:22.260 --> 01:16:26.840
you know, it's heavily used in the IoT industry.

01:16:27.980 --> 01:16:31.180
You know, Minify can be deployed directly on IoT devices.

01:16:34.180 --> 01:16:39.280
There's OPC UA is a protocol that, you know,

01:16:39.440 --> 01:16:43.760
SCADA, some of those low-level hardware devices use.

01:16:44.800 --> 01:16:47.200
So, you know, just a few years ago, for instance,

01:16:47.280 --> 01:16:50.220
I was on a Halliburton oil rig.

01:16:50.960 --> 01:16:52.500
I am in Texas, so, you know,

01:16:52.500 --> 01:16:53.820
we have lots of oil rigs around us.

01:16:54.800 --> 01:16:57.100
But I was on an oil rig, you know, setting up,

01:16:58.180 --> 01:17:01.420
you know, Minify that was part of, you know,

01:17:01.420 --> 01:17:04.280
a product to collect that, you know,

01:17:04.380 --> 01:17:07.900
some of that OPC UA protocol sensor data

01:17:07.900 --> 01:17:09.860
and doing the filtering and sorting

01:17:09.860 --> 01:17:12.380
and sending that back to NiFi.

01:17:13.680 --> 01:17:16.300
So that's another real-world example.

01:17:17.760 --> 01:17:21.860
I've got some use cases on Minify being deployed

01:17:22.740 --> 01:17:24.880
where the data needs to be collected

01:17:24.880 --> 01:17:27.520
from remote or difficult-to-reach locations.

01:17:28.160 --> 01:17:30.160
I already mentioned oil rigs.

01:17:30.400 --> 01:17:34.000
Weather station or Space Force Space Weather

01:17:35.220 --> 01:17:40.680
utilizes some of this as well in their environment,

01:17:41.560 --> 01:17:44.620
you know, to collect data from weather stations

01:17:44.620 --> 01:17:47.380
and others, you know,

01:17:47.440 --> 01:17:50.180
to just like we were doing in that scenario.

01:17:51.320 --> 01:17:53.060
Actually, when I was building that scenario

01:17:53.060 --> 01:17:54.660
is because I had, you know,

01:17:54.680 --> 01:17:56.280
some of the Space Force work

01:17:56.280 --> 01:17:58.920
I've done with them recently in mind.

01:17:59.620 --> 01:18:00.660
So that's another use case.

01:18:03.240 --> 01:18:05.740
You know, one of the others I like to deal with

01:18:05.740 --> 01:18:08.040
is, you know, in distributed systems,

01:18:08.220 --> 01:18:09.420
monitoring various components

01:18:09.420 --> 01:18:11.380
can generate a significant amount of data.

01:18:12.280 --> 01:18:15.300
Minify can process and filter this data locally

01:18:15.300 --> 01:18:18.140
and only transmitting alerts

01:18:18.140 --> 01:18:21.640
or summarized information to a central system.

01:18:22.380 --> 01:18:25.480
You know, a good example of this use case,

01:18:27.220 --> 01:18:29.080
it's going to sound like I'm crazy.

01:18:30.000 --> 01:18:34.680
I have around my house, I have, you know,

01:18:34.860 --> 01:18:36.500
cameras and those types of things.

01:18:36.880 --> 01:18:38.560
I do live on my farm,

01:18:38.560 --> 01:18:40.240
so I don't have a lot of bandwidth

01:18:40.920 --> 01:18:43.480
and I'm at the mercy of Starlink a lot of times.

01:18:45.220 --> 01:18:46.560
And some of these devices

01:18:46.560 --> 01:18:49.000
are connected via Wi-Fi back to my house.

01:18:49.040 --> 01:18:51.620
There's not a lot of bandwidth available

01:18:51.620 --> 01:18:56.820
what I would do is capture like license plates

01:18:56.820 --> 01:18:59.600
as they drive by, I do, you know,

01:18:59.700 --> 01:19:01.840
license plate recognition on it

01:19:01.840 --> 01:19:04.600
and that way I get just the text

01:19:04.600 --> 01:19:06.560
of the license plate in the state

01:19:06.560 --> 01:19:08.100
and to make a model of the car.

01:19:08.780 --> 01:19:11.680
And so anybody who drives down my road,

01:19:12.080 --> 01:19:14.400
I can capture that information

01:19:15.540 --> 01:19:17.460
and as you can imagine,

01:19:17.920 --> 01:19:20.300
a JPEG image can be up to about 10 meg.

01:19:20.940 --> 01:19:24.380
But if you look at the actual data inside that,

01:19:25.700 --> 01:19:28.020
you know, it's less than one kilobyte.

01:19:28.740 --> 01:19:31.740
So, you know, saving on data transmission rates

01:19:31.740 --> 01:19:34.600
and those types of things is another great use case.

01:19:35.080 --> 01:19:36.960
And then, you know, finally,

01:19:37.420 --> 01:19:40.460
Minify can help manage bandwidth usage

01:19:40.460 --> 01:19:42.980
by ensuring that only necessary data

01:19:42.980 --> 01:19:44.400
sent over the network, you know,

01:19:44.460 --> 01:19:45.780
we're seeing a lot more of that

01:19:45.780 --> 01:19:47.560
in the cybersecurity operations.

01:19:48.520 --> 01:19:52.520
I just helped the Navy on another project

01:19:52.520 --> 01:19:56.220
for AI operations where, you know,

01:19:56.240 --> 01:20:01.280
we are bringing in data from different sensors

01:20:01.280 --> 01:20:02.420
and those types of things,

01:20:02.740 --> 01:20:04.660
but we're making the decisions,

01:20:04.780 --> 01:20:06.200
we're pushing the decision making

01:20:06.200 --> 01:20:09.560
more and more out to the edge to bring that in.

01:20:09.580 --> 01:20:14.040
So we use Minify for that data collection

01:20:14.040 --> 01:20:17.720
to execute models and those types of things.

01:20:19.220 --> 01:20:22.240
Minify does have some like TensorFlow capabilities.

01:20:23.180 --> 01:20:25.820
Some of the previous versions of Minify

01:20:25.820 --> 01:20:28.700
had, you know, TensorFlow built in.

01:20:29.160 --> 01:20:32.320
If you are a, you know, data scientist,

01:20:32.860 --> 01:20:35.460
which, you know, Randy, you know,

01:20:35.600 --> 01:20:36.860
you and some others,

01:20:37.580 --> 01:20:40.020
I'm sure you know about the TensorFlow framework.

01:20:40.280 --> 01:20:42.760
And so, you know, being able to execute models

01:20:43.660 --> 01:20:46.520
while, you know, I have a TensorFlow processor,

01:20:46.580 --> 01:20:50.020
for example, and so when it takes an image,

01:20:50.340 --> 01:20:53.160
it will send it through the TensorFlow processor

01:20:53.920 --> 01:20:58.200
and make decisions and send just the decisions out.

01:20:59.180 --> 01:21:01.440
You know, so streamlining, you know,

01:21:01.460 --> 01:21:03.460
some of those data flows is another use case.

01:21:03.880 --> 01:21:09.760
I will email these five or so use cases to you all.

01:21:09.760 --> 01:21:14.620
I know that was one of the questions I got early on.

01:21:15.500 --> 01:21:16.940
But with that being said,

01:21:17.860 --> 01:21:20.540
I know we had a hiccup here with Minify,

01:21:20.720 --> 01:21:22.660
not wanting to come back to the instance.

01:21:24.040 --> 01:21:29.480
But any questions on Minify use cases

01:21:29.480 --> 01:21:30.880
or those types of things?

01:21:32.780 --> 01:21:34.880
So I'm not sure if you mentioned this.

01:21:35.720 --> 01:21:40.600
From my understanding, Minify is just for like edge devices.

01:21:41.600 --> 01:21:43.080
Do they, like, could we deploy it

01:21:43.080 --> 01:21:44.260
in the data center as part of the cluster?

01:21:45.020 --> 01:21:45.460
Absolutely.

01:21:45.640 --> 01:21:47.080
Because I'm assuming they would take up

01:21:47.080 --> 01:21:50.500
less resources than full nodes, like full MAPI nodes.

01:21:51.140 --> 01:21:52.120
You nailed it, Brett.

01:21:53.480 --> 01:21:57.780
So I, you know, like I think I did mention is,

01:21:59.060 --> 01:22:01.540
I do see a lot of organizations installing,

01:22:01.540 --> 01:22:04.920
you know, if you probably heard of Splunk,

01:22:05.080 --> 01:22:07.040
you've probably heard of some of these other tools.

01:22:07.100 --> 01:22:08.300
They all have agents.

01:22:08.320 --> 01:22:09.880
They want to install on Windows.

01:22:11.080 --> 01:22:14.720
But, you know, what we are seeing

01:22:14.720 --> 01:22:17.940
is more organizations going to Minify

01:22:17.940 --> 01:22:20.100
and installing that as a service

01:22:20.100 --> 01:22:21.880
as part of the Windows laptops.

01:22:22.620 --> 01:22:26.260
And, you know, collecting, you know,

01:22:26.380 --> 01:22:30.020
WMI information, you know, other information.

01:22:31.020 --> 01:22:34.360
Potentially executing other agents

01:22:35.380 --> 01:22:36.720
and those types of things.

01:22:37.880 --> 01:22:41.380
So, you know, Minify was built for the edge,

01:22:41.680 --> 01:22:45.060
but also Minify is extremely small

01:22:45.060 --> 01:22:48.580
and extremely efficient, especially the C++.

01:22:49.360 --> 01:22:53.720
So if you have a use case where you need an agent

01:22:53.720 --> 01:22:56.980
on a server to do data orchestration,

01:22:56.980 --> 01:23:01.720
that is a perfect use case for it.

01:23:02.320 --> 01:23:03.680
So when you hear Minify,

01:23:03.920 --> 01:23:05.640
don't just think Raspberry Pi,

01:23:06.000 --> 01:23:08.220
you can do this over, you know,

01:23:08.440 --> 01:23:09.680
hundreds and hundreds of servers.

01:23:11.120 --> 01:23:12.600
Can it be joined to the same cluster

01:23:12.600 --> 01:23:13.720
with a Zookeeper and all that

01:23:13.720 --> 01:23:14.820
as a regular Minify node?

01:23:18.820 --> 01:23:22.420
So it's going to connect back to Minify.

01:23:23.140 --> 01:23:28.340
So because Minify is not distributed and scalable,

01:23:28.420 --> 01:23:29.780
like a NaPy instance,

01:23:31.200 --> 01:23:35.080
you know, think of Minify more as your agent

01:23:35.080 --> 01:23:36.540
that you install.

01:23:37.440 --> 01:23:39.540
It doesn't use Zookeeper

01:23:40.500 --> 01:23:42.140
or any of those types of tools

01:23:42.140 --> 01:23:43.340
just because, you know,

01:23:43.340 --> 01:23:46.880
it's more of an agent than a distributed application.

01:23:47.540 --> 01:23:49.380
Now, with that being said,

01:23:49.380 --> 01:23:51.980
if you had, you know,

01:23:52.080 --> 01:23:53.700
say you had 10,000 servers

01:23:53.700 --> 01:23:56.340
and Minify C++ was your agent

01:23:56.340 --> 01:23:58.720
and, you know, you had them all running,

01:23:58.720 --> 01:24:00.400
you know, a subset of flows,

01:24:01.560 --> 01:24:03.380
you know, your NaPy instance,

01:24:03.580 --> 01:24:05.340
which you've now, you know,

01:24:05.460 --> 01:24:07.040
went over some of the scalability,

01:24:07.120 --> 01:24:09.080
multi-tenancy, some of those types of things,

01:24:09.380 --> 01:24:12.340
you know, depending on the amount of data coming in,

01:24:13.860 --> 01:24:16.700
can, you know, distribute that workload

01:24:16.700 --> 01:24:19.600
where, you know, under the hood,

01:24:19.760 --> 01:24:21.920
you may have, if you have 1,000 servers,

01:24:22.280 --> 01:24:23.640
you may have, you know,

01:24:23.640 --> 01:24:25.900
100 going to one NaPy instance,

01:24:26.160 --> 01:24:28.660
you know, another 100 going to another NaPy instance,

01:24:28.960 --> 01:24:30.040
so forth and so on.

01:24:30.260 --> 01:24:32.100
So, but yeah, no,

01:24:32.220 --> 01:24:34.420
it does not have Zookeeper,

01:24:35.100 --> 01:24:38.540
you know, or distributed capabilities like that,

01:24:39.220 --> 01:24:42.920
you know, so you would just use it as an agent.

01:24:43.100 --> 01:24:44.220
Great question, though.

01:24:44.480 --> 01:24:45.080
Go ahead.

01:24:45.600 --> 01:24:45.760
Thanks.

01:24:45.760 --> 01:24:46.180
Yep.

01:24:46.180 --> 01:24:47.580
No, you just confirmed what I thought.

01:24:47.740 --> 01:24:48.460
Yeah, yeah, yeah.

01:24:48.560 --> 01:24:51.240
No, and that's, you know,

01:24:51.400 --> 01:24:53.480
when people ask about Minify,

01:24:53.580 --> 01:24:55.300
they always think Raspberry Pi,

01:24:55.320 --> 01:24:56.820
and I'm always like, no,

01:24:56.900 --> 01:25:00.140
we can use Minify on a huge server.

01:25:01.160 --> 01:25:03.260
You know, there may be a piece of data

01:25:03.260 --> 01:25:06.240
or a service you want to call

01:25:06.240 --> 01:25:09.520
that's outside of your typical processing,

01:25:10.380 --> 01:25:13.440
and Minify makes a great use case for that.

01:25:13.540 --> 01:25:15.560
Okay, all right.

01:25:15.560 --> 01:25:19.060
What other questions for Minify do I have?

01:25:19.480 --> 01:25:21.960
And I'm kind of hoping for quite a bit.

01:25:30.500 --> 01:25:36.420
Okay, well, if I don't have a lot of questions on Minify,

01:25:37.240 --> 01:25:38.540
what I'll do, like I said,

01:25:38.660 --> 01:25:41.500
I have documentation on this.

01:25:42.060 --> 01:25:44.160
There's documentation available online.

01:25:44.160 --> 01:25:46.400
I have some other documentation.

01:25:46.960 --> 01:25:50.140
I will include that in my presentation,

01:25:50.780 --> 01:25:53.080
and when I send that presentation out,

01:25:53.160 --> 01:25:54.900
that way you can have a reference.

01:25:56.420 --> 01:25:59.720
You know, if it had worked with the built-day flow,

01:26:00.100 --> 01:26:02.120
but the only difference you would have seen there

01:26:02.120 --> 01:26:05.760
was receiving data into Minify.

01:26:06.600 --> 01:26:12.340
But it's the same concept that we have with the flow.

01:26:12.340 --> 01:26:13.460
So, you know, once...

01:26:16.360 --> 01:26:18.380
Yeah, even like this flow, right?

01:26:18.540 --> 01:26:22.500
You know, it would have been input port and coming in,

01:26:23.160 --> 01:26:26.600
and then it would go through your traditional data flow.

01:26:27.960 --> 01:26:29.440
The Minify and NiFi,

01:26:29.620 --> 01:26:31.680
the biggest thing that they have in common

01:26:31.680 --> 01:26:36.200
is just that ability to use a site-to-site connection.

01:26:37.160 --> 01:26:42.360
If you are setting up Minify, you know, take...

01:26:44.260 --> 01:26:46.240
If it takes a while,

01:26:46.620 --> 01:26:48.900
if you keep running into certificate issues

01:26:48.900 --> 01:26:49.840
and things like that,

01:26:49.920 --> 01:26:52.260
do know it's kind of common and typical.

01:26:53.380 --> 01:26:56.580
The LOE to set up Minify the first few times

01:26:56.580 --> 01:26:59.620
is pretty high, but, you know,

01:26:59.620 --> 01:27:01.820
once you get it where you need it

01:27:01.820 --> 01:27:03.260
and you get it configured,

01:27:04.060 --> 01:27:07.540
and, you know, as part of some of your other processes,

01:27:07.540 --> 01:27:09.020
it becomes a lot easier.

01:27:09.500 --> 01:27:11.240
If you get C2 up and running,

01:27:12.200 --> 01:27:15.160
and those capabilities, that's nice as well.

01:27:15.480 --> 01:27:18.480
Like I said, I was just working on one

01:27:18.480 --> 01:27:19.640
a couple of weeks ago,

01:27:19.660 --> 01:27:22.200
and it was a pain to get running

01:27:22.200 --> 01:27:25.100
just because of some of the security settings

01:27:25.100 --> 01:27:25.980
and things like that.

01:27:27.440 --> 01:27:32.060
They don't make this easy when it comes to C2,

01:27:32.060 --> 01:27:33.660
Minify, those types of things.

01:27:35.100 --> 01:27:37.580
And it's definitely on the roadmap to make it easier,

01:27:37.580 --> 01:27:42.020
but it's pretty difficult, you know, as it is.

01:27:42.880 --> 01:27:45.620
The next class is the, you know,

01:27:45.720 --> 01:27:46.260
as my understanding,

01:27:46.480 --> 01:27:48.280
is not necessarily the more

01:27:48.280 --> 01:27:49.760
technically advanced class,

01:27:50.440 --> 01:27:53.020
so we won't even probably touch on,

01:27:53.060 --> 01:27:55.620
you know, some of the core technical challenges,

01:27:55.620 --> 01:27:57.440
you know, that these things have.

01:27:58.160 --> 01:27:59.640
But with that said, any other questions?

01:27:59.660 --> 01:28:00.640
Hey, I don't know if I missed it.

01:28:00.640 --> 01:28:02.720
Did you mention that Minify

01:28:02.720 --> 01:28:04.140
can't connect to registry as well?

01:28:04.680 --> 01:28:05.660
Because when we did registry stuff,

01:28:05.740 --> 01:28:08.660
it was all gooey on the canvas.

01:28:09.220 --> 01:28:09.740
Yes, yes.

01:28:10.580 --> 01:28:13.360
So, no, I think I mentioned it at the beginning.

01:28:14.140 --> 01:28:16.180
Minify can connect to registry,

01:28:17.180 --> 01:28:19.200
and C2 can connect to registry.

01:28:19.580 --> 01:28:21.700
And that is another reason

01:28:21.700 --> 01:28:24.880
that if you're not using registry currently,

01:28:25.000 --> 01:28:26.220
I don't know if you are not,

01:28:26.600 --> 01:28:28.680
I would highly recommend it,

01:28:28.680 --> 01:28:32.820
because once you get registry installed and in place,

01:28:32.860 --> 01:28:35.280
it's going to be one of those foundational items

01:28:35.280 --> 01:28:37.520
you will need to finish deploying

01:28:37.520 --> 01:28:38.900
the rest of the architecture.

01:28:39.760 --> 01:28:40.780
Do you use registry?

01:28:42.940 --> 01:28:44.940
We have it as part of our deployment,

01:28:45.260 --> 01:28:47.480
but it's, I don't know if we're going to do it

01:28:48.200 --> 01:28:49.020
in production right now,

01:28:49.040 --> 01:28:50.440
because it's in anonymous mode,

01:28:50.840 --> 01:28:52.720
and it's HTTP.

01:28:53.520 --> 01:28:55.180
Just like the one we installed, right?

01:28:56.100 --> 01:28:56.380
Yep.

01:28:56.380 --> 01:29:00.360
Yeah, we got the nodes secured,

01:29:00.360 --> 01:29:01.700
but we haven't secured the registry,

01:29:01.780 --> 01:29:03.380
so it may not be in iteration one,

01:29:03.400 --> 01:29:04.900
but we're planning to deploy it.

01:29:05.120 --> 01:29:06.020
Oh, okay, perfect.

01:29:07.240 --> 01:29:08.260
Yeah, I mean,

01:29:08.540 --> 01:29:09.380
Minify, like I said,

01:29:09.480 --> 01:29:11.100
Minify always comes secured now

01:29:11.100 --> 01:29:12.820
just because of the issues with it,

01:29:13.380 --> 01:29:16.280
but registry out of the box is not secure.

01:29:17.980 --> 01:29:20.200
And once it does become secure,

01:29:20.800 --> 01:29:22.180
you make registry secure,

01:29:22.500 --> 01:29:24.180
you're going to have to go into Minify

01:29:24.180 --> 01:29:27.120
and give it Trustor, KeyStore,

01:29:27.180 --> 01:29:29.060
those types of things as well.

01:29:29.520 --> 01:29:31.140
So kind of keep that in mind

01:29:31.140 --> 01:29:36.000
when you start updating the security on registry.

01:29:36.680 --> 01:29:38.740
But it's also another, like I said,

01:29:39.060 --> 01:29:42.240
another good reason to use registry

01:29:42.240 --> 01:29:45.780
is just because of C2, Minify,

01:29:46.820 --> 01:29:48.680
those types of things, right?

01:29:49.420 --> 01:29:50.380
Great question, though.

01:29:50.380 --> 01:29:51.140
Great question.

01:29:51.660 --> 01:29:54.040
So how do you connect to the registry

01:29:54.040 --> 01:29:55.260
on Minify?

01:29:57.120 --> 01:30:00.440
Like how would you import a flow

01:30:02.560 --> 01:30:04.340
from a registry on Minify?

01:30:06.020 --> 01:30:07.920
Do you still just do it in the canvas

01:30:07.920 --> 01:30:09.680
like we were doing

01:30:09.680 --> 01:30:10.540
and then just export?

01:30:13.680 --> 01:30:16.440
So what you would do is,

01:30:16.440 --> 01:30:18.760
of course, you've got to start with,

01:30:19.880 --> 01:30:21.680
you know, you've got to start with

01:30:23.040 --> 01:30:25.600
NAFA to build the actual flow, right?

01:30:27.060 --> 01:30:30.320
And then once you get the flow built

01:30:30.320 --> 01:30:32.800
and installed into NAFA,

01:30:33.840 --> 01:30:38.380
you can, what I've seen is

01:30:38.380 --> 01:30:42.480
the Minify C2 will connect to registry.

01:30:42.940 --> 01:30:46.240
And so when you specify, like,

01:30:48.880 --> 01:30:55.240
so a C2 server can use the registry settings

01:30:56.400 --> 01:30:59.760
and that way when you deploy your Minify,

01:31:00.300 --> 01:31:03.720
it can look at C2 and, you know,

01:31:03.820 --> 01:31:05.040
you may bootstrap it.

01:31:05.060 --> 01:31:07.380
Here's the name of the flow

01:31:07.380 --> 01:31:09.300
that you want to use from registry

01:31:09.840 --> 01:31:13.880
and it will pull that flow down through C2.

01:31:14.080 --> 01:31:16.420
C2 can feed it to the Minify agent

01:31:16.420 --> 01:31:18.360
and Minify will run it.

01:31:18.360 --> 01:31:20.420
Any other questions?

01:31:21.060 --> 01:31:24.760
I'm going to write down that question, though,

01:31:24.940 --> 01:31:28.880
about Minify C2 and registry.

01:31:29.360 --> 01:31:31.160
I may have an image on that,

01:31:31.800 --> 01:31:32.800
on how that works.

01:31:33.000 --> 01:31:33.780
I'm going to take a look.

01:31:34.160 --> 01:31:36.600
We're going to take our last and final break

01:31:38.800 --> 01:31:40.260
before we come back

01:31:40.260 --> 01:31:43.080
and talk about developing custom processors

01:31:43.820 --> 01:31:45.800
and then, you know, wrap up with,

01:31:46.920 --> 01:31:48.940
you know, just some next steps

01:31:48.940 --> 01:31:49.600
and things like that.

01:31:50.460 --> 01:31:51.660
And then, you know,

01:31:51.740 --> 01:31:53.300
save a few minutes for questions.

01:31:54.280 --> 01:31:56.720
If we get done a few minutes early,

01:31:56.740 --> 01:31:58.040
we can, you know,

01:31:58.080 --> 01:32:00.220
get back to your day job if you want.

01:32:01.100 --> 01:32:03.320
But, you know, we'll take a break.

01:32:03.560 --> 01:32:06.820
I will see everyone back here in 15,

01:32:06.900 --> 01:32:09.840
which is 2 o'clock, your time.

01:32:10.880 --> 01:32:12.480
And then we will go over

01:32:13.400 --> 01:32:15.000
custom processor development

01:32:15.000 --> 01:32:16.840
and Q&A.

01:32:45.580 --> 01:32:48.240
It wasn't weird you got it on only, like, one hour.

01:32:56.000 --> 01:33:03.500
He is an idiot.

01:33:19.520 --> 01:33:24.400
Hey, you know, hopefully everyone's getting back from our last break.

01:33:24.480 --> 01:33:26.380
We'll spend a few more minutes

01:33:26.380 --> 01:33:28.860
just going over some tips and tricks

01:33:28.860 --> 01:33:32.020
and as well as, you know,

01:33:32.260 --> 01:33:34.280
some custom processor development.

01:33:35.400 --> 01:33:36.580
I do have a question.

01:33:37.020 --> 01:33:38.200
Ben, if you've made it back,

01:33:40.220 --> 01:33:41.780
or anybody from the audience,

01:33:42.480 --> 01:33:44.460
would you have felt better

01:33:44.460 --> 01:33:46.820
if you were working on your own laptop

01:33:46.820 --> 01:33:48.940
versus this virtual environment?

01:33:49.800 --> 01:33:52.240
And do you all have that capability

01:33:52.240 --> 01:33:54.800
to work on your own environment?

01:33:55.380 --> 01:33:57.980
The reason I ask is this.

01:33:58.260 --> 01:33:59.920
Maria shot me a note, you know,

01:33:59.960 --> 01:34:01.420
because she noticed, you know,

01:34:01.440 --> 01:34:03.600
some of the latency issues we were having,

01:34:03.780 --> 01:34:04.820
some of the technical issues

01:34:04.820 --> 01:34:08.000
we were having with the virtual environment.

01:34:08.680 --> 01:34:11.700
So I don't know if everybody uses,

01:34:11.720 --> 01:34:13.120
like, a government laptop

01:34:13.120 --> 01:34:15.480
and they can install software or not,

01:34:15.920 --> 01:34:17.840
or your own personal laptop.

01:34:19.360 --> 01:34:21.820
So, Ben or someone else, you know,

01:34:22.160 --> 01:34:23.720
what would your suggestion be?

01:34:27.580 --> 01:34:29.780
Oh, okay.

01:34:31.260 --> 01:34:33.460
I mean, but I think anyway,

01:34:33.720 --> 01:34:37.200
I mean, are you all able to work on your own laptops

01:34:38.200 --> 01:34:40.780
or desktops or, you know,

01:34:40.780 --> 01:34:42.500
if we were to have this class

01:34:42.500 --> 01:34:46.140
without the DAW desktop environment,

01:34:46.500 --> 01:34:47.820
would you, you know,

01:34:47.920 --> 01:34:49.720
could you still support installing

01:34:49.720 --> 01:34:52.340
NaFi and others on your personal,

01:34:52.760 --> 01:34:55.620
on your laptop that you're working off of?

01:34:56.200 --> 01:34:57.180
Can I ask the question again?

01:34:57.320 --> 01:34:58.760
Some of us are appointed essays,

01:34:58.780 --> 01:35:00.180
but not everybody in this,

01:35:01.240 --> 01:35:02.660
taking this course, I think, would be able to.

01:35:04.180 --> 01:35:04.700
Okay.

01:35:06.000 --> 01:35:07.460
Specifically not next week.

01:35:08.700 --> 01:35:09.000
Yeah.

01:35:09.760 --> 01:35:10.560
Just the following one.

01:35:10.560 --> 01:35:13.780
I don't think everyone there will be an essay on their system.

01:35:14.640 --> 01:35:16.560
So they'll probably run into quite a few issues.

01:35:17.440 --> 01:35:18.180
Okay, okay.

01:35:18.400 --> 01:35:19.620
So that, because that was the question,

01:35:19.900 --> 01:35:21.540
is, is, you know, you know,

01:35:21.540 --> 01:35:23.500
can you, because, you know,

01:35:23.800 --> 01:35:25.120
you guys are on the internet,

01:35:25.480 --> 01:35:27.900
some, some, you have a lot of safeguards in place.

01:35:31.140 --> 01:35:36.800
Yeah, if I were to give this class

01:35:36.800 --> 01:35:39.460
without the virtual machine desktop,

01:35:39.460 --> 01:35:41.980
like the DAW desktop environment,

01:35:43.320 --> 01:35:44.680
you know, that we're working off of,

01:35:44.720 --> 01:35:45.700
that we, you know,

01:35:46.160 --> 01:35:48.520
we run into a few technical issues,

01:35:48.740 --> 01:35:51.140
you know, latency is a pain in the butt,

01:35:52.520 --> 01:35:53.200
you know.

01:36:09.980 --> 01:36:13.420
No, no, no, download and run it.

01:36:24.260 --> 01:36:25.820
Because it requires Java.

01:36:25.900 --> 01:36:27.620
Java is actually a bunch of jar files.

01:36:29.900 --> 01:36:30.040
And so.

01:36:30.800 --> 01:36:36.120
I mean, from the instructor's standpoint.

01:36:38.960 --> 01:36:39.340
Okay.

01:36:40.900 --> 01:36:42.660
You wouldn't, you wouldn't have any insight.

01:36:42.760 --> 01:36:44.200
You wouldn't be able to.

01:36:47.500 --> 01:36:50.020
Oh, that's true.

01:36:50.100 --> 01:36:52.180
You would have to share your screen

01:36:52.180 --> 01:36:53.580
if you have a problem.

01:36:54.620 --> 01:36:55.260
Okay.

01:37:03.780 --> 01:37:04.540
Yes.

01:37:09.620 --> 01:37:11.160
So, okay.

01:37:11.940 --> 01:37:14.580
So what I've gathered is,

01:37:15.000 --> 01:37:16.400
so the next training class,

01:37:16.460 --> 01:37:17.740
my understanding is,

01:37:17.740 --> 01:37:21.100
is they are not as technical.

01:37:22.560 --> 01:37:25.540
And so my goal for the next training class,

01:37:25.560 --> 01:37:29.140
we're going to focus just a lot on the flow building

01:37:29.140 --> 01:37:30.940
and the components of NAFA,

01:37:31.460 --> 01:37:33.440
not necessarily, you know,

01:37:33.460 --> 01:37:35.260
going into scalability,

01:37:35.560 --> 01:37:36.460
multi-tenancy,

01:37:36.720 --> 01:37:37.960
some of the minify,

01:37:38.480 --> 01:37:40.580
you know, how to build a custom processor,

01:37:41.200 --> 01:37:42.360
you know, those types of things

01:37:42.360 --> 01:37:44.380
that I'm going to kind of steer away from

01:37:44.380 --> 01:37:47.240
and really just focus on the NAFA canvas

01:37:48.020 --> 01:37:49.800
and building a flow.

01:37:50.840 --> 01:37:53.780
You know, Java is already installed on the,

01:37:53.780 --> 01:37:55.800
you know, we have on this virtual desktop

01:37:55.800 --> 01:37:57.300
the ability to install whatever.

01:37:58.180 --> 01:38:00.280
So I'm going to probably,

01:38:00.600 --> 01:38:05.000
you know, I on purpose did not install things for us

01:38:05.000 --> 01:38:07.960
because I heard there were sysadmins on the call

01:38:08.500 --> 01:38:09.300
that would help.

01:38:09.700 --> 01:38:12.860
But it's, I would probably be safer,

01:38:12.860 --> 01:38:15.260
you know, to give a better class next time,

01:38:15.480 --> 01:38:18.340
I'd probably be safer to have everything installed,

01:38:18.440 --> 01:38:19.340
everything going,

01:38:19.780 --> 01:38:21.500
you know, just log in

01:38:21.500 --> 01:38:24.500
and let's build like simple data flows

01:38:24.500 --> 01:38:25.760
and then graduate from there.

01:38:25.860 --> 01:38:26.860
Would that sound about right?

01:38:27.420 --> 01:38:28.560
Yeah, it does.

01:38:28.800 --> 01:38:29.340
Okay, okay.

01:38:30.520 --> 01:38:33.400
Yeah, I'm just reading a note from Maria

01:38:33.400 --> 01:38:35.100
that suggested that, you know,

01:38:35.120 --> 01:38:37.320
we could potentially use your own personal laptops

01:38:37.320 --> 01:38:39.720
and then I didn't know, I didn't, like,

01:38:39.720 --> 01:38:42.460
I didn't, I was thinking the same thing.

01:38:42.480 --> 01:38:45.000
It'd be hard to view what's going on

01:38:45.000 --> 01:38:47.040
because, you know, at least in this environment

01:38:47.040 --> 01:38:50.800
I can quickly see everybody doing work

01:38:50.800 --> 01:38:52.240
and what they're working on

01:38:52.240 --> 01:38:53.200
and those types of things.

01:38:53.880 --> 01:38:55.820
So, all right, we'll keep it in this environment.

01:38:56.420 --> 01:38:58.700
During the next training class,

01:38:59.200 --> 01:39:02.760
what if they run into the proxy to death issue?

01:39:03.600 --> 01:39:05.520
Will someone on that class know how to fix

01:39:05.520 --> 01:39:09.940
or should they, you know, reach out to one of you?

01:39:13.680 --> 01:39:14.260
Okay.

01:39:26.540 --> 01:39:29.740
Up front, before the class even starts.

01:39:30.060 --> 01:39:30.080
Oh.

01:39:31.780 --> 01:39:34.020
That's on, I don't even know who the right person

01:39:34.020 --> 01:39:36.320
would be to even ask that question.

01:39:36.920 --> 01:39:38.980
I know, I think one person will actually be

01:39:38.980 --> 01:39:40.360
100% taken care of though.

01:39:40.820 --> 01:39:41.260
Okay.

01:39:42.020 --> 01:39:42.660
Okay, okay.

01:39:43.320 --> 01:39:45.120
But he's on my team, that's how I know.

01:39:45.220 --> 01:39:45.900
Oh, okay.

01:39:46.860 --> 01:39:47.980
Good deal, good deal.

01:39:48.140 --> 01:39:49.660
No, I was, you know,

01:39:49.680 --> 01:39:52.000
I just want to make sure it's a little bit smoother.

01:39:52.900 --> 01:39:55.800
You know, unfortunately, you all are the guinea pigs

01:39:55.800 --> 01:39:58.680
who's getting, you know, the first of this class.

01:39:58.760 --> 01:40:02.700
So, I just want to make sure that the next class,

01:40:02.940 --> 01:40:04.860
I know I've heard is less technical

01:40:04.860 --> 01:40:07.540
and I want to make sure it's a little bit smoother for them.

01:40:09.080 --> 01:40:12.260
And then Maria had some concerns with the,

01:40:12.260 --> 01:40:14.960
you know, some of the DAW desktop,

01:40:15.380 --> 01:40:19.560
you know, and it's how latency can cause some major issues.

01:40:19.820 --> 01:40:21.860
I was getting 300 millisecond pain

01:40:21.860 --> 01:40:24.780
to this desktop environment, you know,

01:40:24.780 --> 01:40:28.680
and it just made for pointing and clicking very hard.

01:40:28.840 --> 01:40:32.240
And with NaFi, you have to, you know, click

01:40:32.240 --> 01:40:34.980
and bend, you know, bend these connections

01:40:34.980 --> 01:40:36.320
and put these flows down.

01:40:36.820 --> 01:40:38.280
So, okay, perfect.

01:40:38.380 --> 01:40:39.460
That answered my question.

01:40:40.400 --> 01:40:42.260
All right, so we are going to, you know,

01:40:42.300 --> 01:40:44.980
touch on some custom development

01:40:46.520 --> 01:40:50.360
and then go into, you know, some next steps

01:40:50.360 --> 01:40:53.080
that we need to do

01:40:53.720 --> 01:40:56.300
and then wrap up with any questions and answers.

01:40:56.460 --> 01:40:58.660
We'll probably get out of here a little bit early.

01:40:59.240 --> 01:41:02.700
If you want, we can actually go back to your data flow.

01:41:04.280 --> 01:41:07.320
Me personally, I love building data flows.

01:41:07.980 --> 01:41:10.820
I, you know, it is, I don't know what it is,

01:41:10.820 --> 01:41:13.500
but, you know, I don't have to open Eclipse.

01:41:13.600 --> 01:41:15.400
I don't have to open my IDE.

01:41:15.940 --> 01:41:17.560
I can build data flows.

01:41:17.580 --> 01:41:18.900
I can manipulate data.

01:41:18.900 --> 01:41:22.040
I can execute services, all those types of things.

01:41:22.900 --> 01:41:25.120
So, if you all want to, you know,

01:41:25.120 --> 01:41:26.900
kind of go through those, we can.

01:41:27.080 --> 01:41:29.000
If you want to call it a little early

01:41:29.000 --> 01:41:31.460
and go do your day job, that's fine as well.

01:41:32.980 --> 01:41:34.840
You know, so it's up to you.

01:41:35.220 --> 01:41:42.580
But, all right, so let's get into custom NaFi development.

01:41:43.680 --> 01:41:47.340
And I realize, you know, even on this call,

01:41:47.340 --> 01:41:52.460
you know, we have one, two, three, four, five devs.

01:41:54.660 --> 01:41:58.140
And so, you know, we're just going to touch on some things,

01:41:58.460 --> 01:42:01.100
you know, give you some pointers and some direction

01:42:01.100 --> 01:42:03.280
if you want to create your own processor.

01:42:04.300 --> 01:42:08.140
There is a ton of documentation out there

01:42:08.140 --> 01:42:11.600
to create your own custom NaFi processor.

01:42:12.100 --> 01:42:13.600
And I'm about to bring that up

01:42:13.600 --> 01:42:16.700
and point you in the right direction.

01:42:17.340 --> 01:42:25.420
But basically, if, you know, NaFi really leans on Java.

01:42:26.160 --> 01:42:28.580
And so, you know, as a developer,

01:42:29.220 --> 01:42:32.920
if you are familiar with, you know, Eclipse,

01:42:34.000 --> 01:42:38.360
you know, some of the other Java, you know,

01:42:38.460 --> 01:42:41.020
well, Eclipse handles C++ and everything else.

01:42:41.400 --> 01:42:44.640
I really like the new Microsoft IDE,

01:42:45.240 --> 01:42:47.700
you know, because of the Docker integration

01:42:47.700 --> 01:42:50.360
and, you know, Visual Code, you know,

01:42:50.420 --> 01:42:52.180
so I like it with the Docker integration,

01:42:52.740 --> 01:42:55.140
you know, the Java capabilities, those types of things.

01:42:56.080 --> 01:43:01.120
NaFi really makes it easy, you know, to get started.

01:43:02.100 --> 01:43:04.520
You know, so if you are getting started

01:43:04.520 --> 01:43:08.060
with developing a NaFi flow, you know,

01:43:08.160 --> 01:43:11.420
you would use Maven, of course, Java, of course.

01:43:12.060 --> 01:43:18.240
And your favorite IDE, I would recommend Eclipse or Visual Code

01:43:18.240 --> 01:43:20.780
because I feel like, you know, those two are,

01:43:21.600 --> 01:43:23.580
you know, the most supported.

01:43:23.820 --> 01:43:25.180
You can use IntelliJ as well.

01:43:26.540 --> 01:43:28.540
You know, that's another, you know,

01:43:29.200 --> 01:43:33.740
that's another one that I see quite a bit,

01:43:34.380 --> 01:43:37.640
you know, and but most likely now

01:43:37.640 --> 01:43:40.560
I see mostly Visual Studio, you know,

01:43:40.560 --> 01:43:41.360
things like that.

01:43:43.920 --> 01:43:48.740
Okay, so, you know, Apache NaFi, you know,

01:43:49.920 --> 01:43:56.160
has, you know, an Archetype Maven type in already.

01:43:56.740 --> 01:44:01.580
So if you were to, you know, use Maven,

01:44:01.740 --> 01:44:04.180
you can generate Archetype generate

01:44:05.000 --> 01:44:07.880
and, you know, search for the NaFi type

01:44:07.880 --> 01:44:09.440
in the Archetype projects.

01:44:10.080 --> 01:44:12.000
If you're familiar with that,

01:44:13.400 --> 01:44:15.340
you know, you should be able to see NaFi.

01:44:15.900 --> 01:44:18.120
You want to select, like the,

01:44:18.380 --> 01:44:20.240
and all of this will be in the slides,

01:44:20.840 --> 01:44:24.120
but you want to select the NaFi

01:44:24.120 --> 01:44:26.220
processor bundle Archetype project.

01:44:27.260 --> 01:44:29.840
You know, select the latest version of that.

01:44:30.840 --> 01:44:33.440
You know, just so, you know,

01:44:33.580 --> 01:44:36.320
for you non-developers, you can actually go to,

01:44:37.920 --> 01:44:41.200
you know, select, you can actually download

01:44:41.200 --> 01:44:42.380
these things as well.

01:44:42.940 --> 01:44:44.620
But anyway, so you want to select

01:44:44.620 --> 01:44:46.520
the NaFi processor bundle,

01:44:46.840 --> 01:44:48.820
and that would really kind of kickstart

01:44:49.820 --> 01:44:51.320
your project, right?

01:44:51.600 --> 01:44:53.800
And then once you do that,

01:44:53.820 --> 01:44:55.440
you can enter your group ID,

01:44:55.740 --> 01:44:57.600
artifact ID, your version,

01:44:58.260 --> 01:44:59.960
artifact base name, you know,

01:45:00.020 --> 01:45:02.260
some of these additional properties.

01:45:02.680 --> 01:45:05.180
And then Maven will create,

01:45:05.820 --> 01:45:07.700
will have created the following directory.

01:45:07.780 --> 01:45:10.360
So it's going to create a NaFi

01:45:10.360 --> 01:45:12.100
artifact base name processors,

01:45:12.400 --> 01:45:14.380
and a NaFi artifact base name

01:45:14.380 --> 01:45:15.360
NOR directory.

01:45:16.280 --> 01:45:17.460
And then from there,

01:45:17.680 --> 01:45:19.340
you just run, you know,

01:45:21.240 --> 01:45:23.100
open Eclipse, for instance,

01:45:24.280 --> 01:45:27.100
you know, Visual Studio will do it as well.

01:45:28.140 --> 01:45:30.460
But, you know, process those,

01:45:30.460 --> 01:45:32.460
those artifacts in those directories,

01:45:33.140 --> 01:45:35.040
do an MVM install,

01:45:35.680 --> 01:45:38.640
and you should have, you know,

01:45:38.900 --> 01:45:41.820
a project that loaded into your workspace

01:45:41.820 --> 01:45:45.760
with the, you know, artifact base name,

01:45:45.800 --> 01:45:47.840
you know, directory in Eclipse,

01:45:47.880 --> 01:45:48.760
for instance.

01:45:50.060 --> 01:45:52.320
You know, and then it's just,

01:45:52.320 --> 01:45:53.360
you know, adding code,

01:45:53.600 --> 01:45:55.400
and I'm working on bringing up

01:45:55.400 --> 01:45:56.640
a visual for this.

01:45:57.360 --> 01:45:58.660
Then it's just adding code,

01:45:58.860 --> 01:46:00.520
you know, so a lot of times

01:46:00.520 --> 01:46:03.600
what I've seen is, you know,

01:46:03.640 --> 01:46:05.140
just remember a processor

01:46:05.140 --> 01:46:06.940
does a single function.

01:46:07.400 --> 01:46:10.940
And so, you know, if,

01:46:10.960 --> 01:46:14.360
if you were to have already,

01:46:14.520 --> 01:46:15.600
I think you guys mentioned

01:46:15.600 --> 01:46:18.120
you may have a processor,

01:46:18.120 --> 01:46:21.160
you know, a Java jar already.

01:46:21.440 --> 01:46:23.600
I think converting that to a Java

01:46:23.600 --> 01:46:26.340
NAR would be, you know,

01:46:26.520 --> 01:46:29.120
pretty easily, you know,

01:46:29.120 --> 01:46:30.220
those types of things.

01:46:31.440 --> 01:46:33.440
Some of the other developer resources

01:46:33.440 --> 01:46:35.400
you have, again,

01:46:35.460 --> 01:46:37.720
I would never, you know,

01:46:37.760 --> 01:46:38.800
not anymore, right?

01:46:38.880 --> 01:46:40.000
You know, they say every good

01:46:40.000 --> 01:46:42.980
developer copies code, you know.

01:46:43.220 --> 01:46:44.900
So one of the things I like to do

01:46:44.900 --> 01:46:45.840
is go to GitHub.

01:46:46.220 --> 01:46:47.040
You go to GitHub

01:46:47.040 --> 01:46:48.840
and just type in not hot processor.

01:46:49.360 --> 01:46:51.740
You're going to get a ton of results.

01:46:52.680 --> 01:46:55.340
You know, there's examples of,

01:46:55.340 --> 01:46:56.860
you know, even InfluxDB,

01:46:56.860 --> 01:46:59.280
which is a, you know,

01:46:59.420 --> 01:47:00.960
a commercial company as well as,

01:47:00.960 --> 01:47:02.520
you know, they have the open

01:47:02.520 --> 01:47:03.760
source InfluxDB.

01:47:04.200 --> 01:47:06.560
They provide their own processor.

01:47:07.280 --> 01:47:09.160
Hadoop provides its own processor.

01:47:11.220 --> 01:47:13.620
GeoMesa, which is a,

01:47:13.620 --> 01:47:16.040
you know, a Geo database

01:47:16.040 --> 01:47:17.740
that, you know, you store,

01:47:17.740 --> 01:47:18.660
you know, map data

01:47:18.660 --> 01:47:19.680
and those types of things.

01:47:19.980 --> 01:47:22.080
It has its own processor.

01:47:22.560 --> 01:47:25.260
So there are tons and tons

01:47:26.060 --> 01:47:27.940
of processors out there.

01:47:28.060 --> 01:47:29.480
People creating new processors

01:47:29.480 --> 01:47:30.140
all the time.

01:47:31.660 --> 01:47:32.160
And like I said,

01:47:32.200 --> 01:47:32.820
if you just search

01:47:32.820 --> 01:47:34.660
for not hot processor on GitHub,

01:47:35.160 --> 01:47:36.600
you're going to,

01:47:36.600 --> 01:47:38.080
you know, get a ton.

01:47:40.660 --> 01:47:44.300
You know, if you have a connection

01:47:44.300 --> 01:47:45.960
to, you know, something

01:47:45.960 --> 01:47:48.040
that was the one I just saw you,

01:47:48.100 --> 01:47:49.480
I think yesterday,

01:47:50.820 --> 01:47:52.340
even a Terraform project

01:47:52.340 --> 01:47:54.920
for NIFI, some NIFI Docker,

01:47:55.720 --> 01:47:57.100
that's not software engineering,

01:47:57.520 --> 01:47:57.940
but, you know,

01:47:58.600 --> 01:48:00.280
there's a lot of resources.

01:48:00.360 --> 01:48:02.180
So when you are custom

01:48:02.180 --> 01:48:03.940
developing your own processor,

01:48:04.360 --> 01:48:06.260
please just go out

01:48:06.260 --> 01:48:07.640
and search GitHub

01:48:09.760 --> 01:48:11.580
and, you know,

01:48:11.580 --> 01:48:14.080
you will find the source code

01:48:14.080 --> 01:48:15.840
probably for what you're trying

01:48:15.840 --> 01:48:17.240
to make a connection to.

01:48:17.900 --> 01:48:19.620
There's also, you know,

01:48:20.660 --> 01:48:22.340
this one here is used quite a bit

01:48:22.340 --> 01:48:26.300
is a Modbus library

01:48:27.060 --> 01:48:29.400
that helps with the OPC UA.

01:48:29.800 --> 01:48:30.760
So if you're developing

01:48:30.760 --> 01:48:33.720
like an OPC UA processor,

01:48:34.680 --> 01:48:36.600
you know, there's processors

01:48:36.600 --> 01:48:37.300
built for that.

01:48:38.620 --> 01:48:40.700
You know, there's a lot.

01:48:41.120 --> 01:48:43.240
And so what I like to do

01:48:43.240 --> 01:48:45.920
when I used to do

01:48:45.920 --> 01:48:47.500
NIFI processor development,

01:48:48.460 --> 01:48:49.600
I would just go,

01:48:49.600 --> 01:48:51.220
and search and to see

01:48:51.220 --> 01:48:53.260
if somebody's already developed that

01:48:53.260 --> 01:48:55.400
processor that meets my needs.

01:48:56.460 --> 01:48:57.580
You know, in the past

01:48:57.580 --> 01:48:58.280
we had to develop

01:48:58.280 --> 01:49:00.160
our own InfluxDB processor,

01:49:00.440 --> 01:49:01.300
for instance.

01:49:01.420 --> 01:49:03.080
Now, you know,

01:49:03.080 --> 01:49:04.140
it's already developed,

01:49:04.240 --> 01:49:05.220
it's already supported

01:49:05.220 --> 01:49:06.540
by the organization.

01:49:07.680 --> 01:49:09.680
You know, so definitely

01:49:09.680 --> 01:49:10.880
take a look at that.

01:49:12.520 --> 01:49:15.100
I didn't do a whole lot on,

01:49:15.720 --> 01:49:17.700
you know, I don't think

01:49:17.700 --> 01:49:18.620
that a lot of people

01:49:18.620 --> 01:49:21.660
would be interested in a

01:49:21.660 --> 01:49:23.880
Java IDE class on this.

01:49:24.760 --> 01:49:25.800
But, you know,

01:49:25.800 --> 01:49:26.800
I just wanted to make sure

01:49:26.800 --> 01:49:28.780
I went over, you know,

01:49:28.840 --> 01:49:30.200
some of those types of things.

01:49:31.120 --> 01:49:35.440
Again, there's a lot of

01:49:35.440 --> 01:49:36.600
capabilities out there.

01:49:36.640 --> 01:49:37.880
There's a lot of documentation.

01:49:38.860 --> 01:49:40.940
Once you, you know,

01:49:41.060 --> 01:49:42.760
start looking at the

01:49:42.760 --> 01:49:44.420
official NIFI documentation

01:49:44.420 --> 01:49:45.540
on building a processor,

01:49:46.140 --> 01:49:47.340
they give examples

01:49:47.340 --> 01:49:48.840
and how to deploy

01:49:48.840 --> 01:49:50.160
and all that.

01:49:50.740 --> 01:49:51.880
We've talked about

01:49:51.880 --> 01:49:53.020
how to deploy,

01:49:53.760 --> 01:49:55.180
you know, a custom

01:49:55.180 --> 01:49:56.080
NIFI processor.

01:49:56.180 --> 01:49:57.180
You put it in the

01:49:57.180 --> 01:49:58.460
Extensions folder

01:49:59.260 --> 01:50:00.740
and go from there.

01:50:01.200 --> 01:50:02.980
I will send out

01:50:02.980 --> 01:50:04.680
a full write-up

01:50:04.680 --> 01:50:07.680
on how to build a processor,

01:50:08.520 --> 01:50:09.440
you know, some of the

01:50:09.440 --> 01:50:10.820
processor properties

01:50:10.820 --> 01:50:11.560
and everything else.

01:50:11.580 --> 01:50:13.160
I have a really,

01:50:13.160 --> 01:50:14.720
really good example.

01:50:15.360 --> 01:50:16.740
But, like I said,

01:50:16.740 --> 01:50:18.160
don't think folks

01:50:18.160 --> 01:50:19.240
would just want to sit back

01:50:19.240 --> 01:50:20.020
and watch me code.

01:50:21.340 --> 01:50:22.320
And it might be

01:50:22.320 --> 01:50:23.340
a little messy as well.

01:50:23.540 --> 01:50:25.540
So I will send that out

01:50:25.540 --> 01:50:27.000
to those that are interested.

01:50:27.460 --> 01:50:28.640
It will include

01:50:28.640 --> 01:50:30.400
an example processor

01:50:30.400 --> 01:50:33.060
as well as some of the...

01:50:33.060 --> 01:50:33.920
I'm going to make sure

01:50:33.920 --> 01:50:35.060
I incorporate some of the

01:50:35.060 --> 01:50:36.400
new features of NIFI

01:50:36.400 --> 01:50:38.480
so you can, you know,

01:50:38.540 --> 01:50:39.140
determine if that's

01:50:39.140 --> 01:50:40.780
a restricted processor or not

01:50:40.780 --> 01:50:41.780
and how you would do that.

01:50:42.920 --> 01:50:43.880
But I wanted to make sure

01:50:43.880 --> 01:50:45.940
I go over how, you know,

01:50:45.940 --> 01:50:47.980
it's a very well-supported...

01:50:47.980 --> 01:50:49.580
There's a lot of documentation.

01:50:51.160 --> 01:50:52.660
There's a lot of documentation,

01:50:52.840 --> 01:50:54.500
especially from NIFI

01:50:54.500 --> 01:50:56.120
and those types of things.

01:50:57.700 --> 01:50:59.420
So that's my touching

01:50:59.420 --> 01:51:01.600
on the, you know,

01:51:01.960 --> 01:51:02.600
software developing

01:51:02.600 --> 01:51:04.240
of a custom processor

01:51:04.900 --> 01:51:05.740
and going from there.

01:51:05.780 --> 01:51:06.780
If you have any questions

01:51:06.780 --> 01:51:08.400
specifically I can answer,

01:51:08.560 --> 01:51:09.920
you know, I'll be happy to answer.

01:51:10.320 --> 01:51:11.560
But I felt like,

01:51:11.560 --> 01:51:13.440
you know, we could code

01:51:13.440 --> 01:51:14.400
and then, you know,

01:51:14.400 --> 01:51:15.180
I don't have to ask

01:51:15.180 --> 01:51:16.340
the rest of the class to code

01:51:16.340 --> 01:51:17.800
and it would be, you know,

01:51:17.820 --> 01:51:19.580
a lot easier just to send this out

01:51:19.580 --> 01:51:20.760
and then if you're interested

01:51:21.420 --> 01:51:23.200
in creating custom processors,

01:51:23.400 --> 01:51:24.300
have at it.

01:51:24.700 --> 01:51:26.920
Again, make sure you check Github.

01:51:28.040 --> 01:51:30.980
I know most of the bigger,

01:51:30.980 --> 01:51:33.680
like Apache-level foundation

01:51:33.680 --> 01:51:35.200
software like Hadoop,

01:51:35.400 --> 01:51:36.920
Kafka, those types of things,

01:51:37.240 --> 01:51:39.580
they all have supported processors.

01:51:40.280 --> 01:51:41.580
Some of the bigger systems

01:51:41.580 --> 01:51:44.180
like Azure and AWS

01:51:44.180 --> 01:51:46.100
have processors as well.

01:51:47.480 --> 01:51:48.720
I think I mentioned

01:51:48.720 --> 01:51:50.840
some of the, you know,

01:51:51.060 --> 01:51:52.500
processors you get with,

01:51:53.200 --> 01:51:55.440
you know, and some of the capabilities

01:51:55.440 --> 01:51:56.520
you get now with Azure.

01:51:57.420 --> 01:51:58.760
And so I'll send that

01:51:58.760 --> 01:52:00.300
documentation out as well.

01:52:01.460 --> 01:52:03.200
And then if they're,

01:52:03.200 --> 01:52:04.020
you know, real quickly,

01:52:04.160 --> 01:52:05.460
if you have a question about,

01:52:05.460 --> 01:52:07.240
you know, developing a custom processor,

01:52:07.480 --> 01:52:08.580
you know, feel free to interrupt me.

01:52:09.700 --> 01:52:11.460
Some of the other things I've seen,

01:52:12.280 --> 01:52:13.540
you know, that you want

01:52:13.540 --> 01:52:15.120
to take consideration is this.

01:52:15.460 --> 01:52:17.340
And I mentioned it a couple of times.

01:52:18.300 --> 01:52:19.020
But, you know,

01:52:19.120 --> 01:52:21.400
this best practices for configuration,

01:52:22.100 --> 01:52:23.840
please take a look at this.

01:52:24.360 --> 01:52:26.220
I've seen many, many,

01:52:26.220 --> 01:52:28.260
many non-FI installs

01:52:28.260 --> 01:52:30.360
and they start running into,

01:52:31.220 --> 01:52:32.720
you know, lots of problems

01:52:32.720 --> 01:52:34.700
and they can't figure it out

01:52:34.700 --> 01:52:36.000
because, you know,

01:52:36.000 --> 01:52:39.200
they don't have the right configuration

01:52:39.200 --> 01:52:41.280
for file handlers

01:52:41.280 --> 01:52:42.500
and fork processes

01:52:42.500 --> 01:52:43.880
and those types of things.

01:52:45.120 --> 01:52:46.360
You know, so, you know,

01:52:46.420 --> 01:52:47.320
you want to increase,

01:52:47.360 --> 01:52:49.040
I think the default level

01:52:49.040 --> 01:52:50.740
in Ubuntu is 10,000

01:52:51.680 --> 01:52:53.460
or maybe even 1,000.

01:52:54.240 --> 01:52:55.760
But you want to increase

01:52:55.760 --> 01:52:58.500
the maximum file handlers that you have.

01:52:59.760 --> 01:53:01.920
You can go into your security,

01:53:02.140 --> 01:53:03.300
your limits.conf file

01:53:04.660 --> 01:53:06.500
and, you know,

01:53:07.160 --> 01:53:09.120
right here we have 50,000.

01:53:09.300 --> 01:53:09.900
But, you know,

01:53:09.900 --> 01:53:11.360
if you are processing

01:53:11.360 --> 01:53:13.760
a lot of small files,

01:53:13.840 --> 01:53:16.180
you may want to increase this to,

01:53:16.180 --> 01:53:18.400
you know, 75 or 100,000.

01:53:20.440 --> 01:53:22.620
NAFA also likes to fork

01:53:22.620 --> 01:53:26.000
a significant amount of processes.

01:53:26.580 --> 01:53:27.600
If you remember,

01:53:27.640 --> 01:53:29.800
when we were going through the Canvas,

01:53:31.060 --> 01:53:32.440
you know, we were setting,

01:53:32.640 --> 01:53:36.620
here is how many processes we can run.

01:53:36.620 --> 01:53:37.800
Let me pull this up.

01:53:52.900 --> 01:53:53.300
Perfect.

01:53:57.240 --> 01:53:59.000
How many concurrent tasks, right?

01:53:59.100 --> 01:54:00.700
You know, so as you can imagine,

01:54:01.560 --> 01:54:03.880
you know, we have one concurrent task

01:54:05.820 --> 01:54:06.620
per processor.

01:54:07.200 --> 01:54:08.040
But, you know,

01:54:08.140 --> 01:54:09.000
with that being said,

01:54:09.000 --> 01:54:11.720
you may want to increase that.

01:54:11.740 --> 01:54:14.220
We are using the bare minimum,

01:54:15.080 --> 01:54:16.580
you know, that we would need,

01:54:17.320 --> 01:54:19.360
you know, for this flow.

01:54:19.680 --> 01:54:21.320
But if you're ingesting

01:54:21.320 --> 01:54:23.440
a large amount of data,

01:54:23.840 --> 01:54:25.020
you want to, you know,

01:54:25.140 --> 01:54:26.580
increase that, you know,

01:54:26.680 --> 01:54:27.440
concurrent task

01:54:27.440 --> 01:54:28.820
because then how many they can run.

01:54:29.400 --> 01:54:30.900
When you start doing that,

01:54:30.960 --> 01:54:31.880
you're going to start,

01:54:31.880 --> 01:54:33.080
you know,

01:54:33.220 --> 01:54:35.720
hitting up against this max fork processes.

01:54:36.220 --> 01:54:38.180
So for you sysadmins out there,

01:54:38.820 --> 01:54:39.680
you know, definitely,

01:54:39.920 --> 01:54:41.200
if you haven't looked at this

01:54:41.200 --> 01:54:43.160
and make sure it was configured,

01:54:43.900 --> 01:54:44.580
please do.

01:54:44.920 --> 01:54:46.740
You're going to run into an issue

01:54:46.740 --> 01:54:47.940
in production if you don't.

01:54:49.700 --> 01:54:51.720
And, you know, a lot of times,

01:54:51.720 --> 01:54:54.200
you know, we'll start trying to trace it

01:54:54.200 --> 01:54:55.800
and trying to find out the problem.

01:54:56.340 --> 01:54:57.260
And, you know, we keep thinking

01:54:57.260 --> 01:54:59.120
it's not five, it's not five, it's not five.

01:54:59.200 --> 01:55:00.760
But it's actually, you know,

01:55:00.860 --> 01:55:03.400
some of the underlying configuration

01:55:03.400 --> 01:55:04.940
that needs to happen to the,

01:55:04.940 --> 01:55:06.080
you know, host OS.

01:55:08.180 --> 01:55:10.200
If you are, you know,

01:55:10.380 --> 01:55:11.720
dealing with a lot of minify

01:55:11.720 --> 01:55:13.800
and a lot of minify agents,

01:55:14.480 --> 01:55:15.780
you definitely want to increase

01:55:15.780 --> 01:55:18.880
the number of TCP socket ports available.

01:55:19.940 --> 01:55:21.000
You know, that is,

01:55:22.280 --> 01:55:24.160
again, I've seen this numerous times

01:55:24.160 --> 01:55:26.120
where, you know,

01:55:26.160 --> 01:55:27.960
those need to be increased.

01:55:29.520 --> 01:55:30.560
You know, if you're,

01:55:30.560 --> 01:55:31.780
if you're constantly setting up

01:55:31.780 --> 01:55:33.540
and tearing down a large number of sockets

01:55:34.060 --> 01:55:35.960
and a quick amount of time,

01:55:35.960 --> 01:55:38.480
you know, you'll need to increase those.

01:55:38.720 --> 01:55:40.600
And I've seen a lot of flows,

01:55:40.600 --> 01:55:42.280
you know, do that.

01:55:42.680 --> 01:55:43.460
But, you know,

01:55:43.600 --> 01:55:45.280
assist admin never came in

01:55:45.280 --> 01:55:46.580
and, you know,

01:55:46.580 --> 01:55:47.180
they just didn't know

01:55:47.180 --> 01:55:48.300
about the best practices.

01:55:49.000 --> 01:55:49.820
So, you know,

01:55:50.160 --> 01:55:51.500
this always gets touched on

01:55:51.500 --> 01:55:53.160
in every class I've ever seen.

01:55:53.820 --> 01:55:55.480
So I wanted to make sure I pointed it out.

01:55:57.840 --> 01:55:58.320
You know,

01:55:58.560 --> 01:56:01.880
NAFI has that, you know,

01:56:02.020 --> 01:56:03.400
data delivery guarantee.

01:56:03.560 --> 01:56:05.540
It's going to work over, you know,

01:56:05.540 --> 01:56:07.040
any type of network connection,

01:56:07.160 --> 01:56:08.760
including like Donald Up and others.

01:56:09.140 --> 01:56:10.920
So you want to set how long the socket

01:56:10.920 --> 01:56:13.300
stay in a time-to-wait state when closed.

01:56:14.260 --> 01:56:15.560
You don't want your sockets to sit

01:56:15.560 --> 01:56:16.340
and when you're too long.

01:56:17.640 --> 01:56:18.540
You know, so, you know,

01:56:18.660 --> 01:56:20.820
make sure in some of the later,

01:56:22.000 --> 01:56:23.320
maybe even past,

01:56:23.340 --> 01:56:25.080
I mean, some of the later kernels,

01:56:25.140 --> 01:56:26.840
you may not even need this.

01:56:27.060 --> 01:56:28.120
But if you're running a,

01:56:28.120 --> 01:56:29.520
you know, 3.0 kernel,

01:56:30.460 --> 01:56:32.340
I think Ubuntu has even passed that now.

01:56:32.780 --> 01:56:34.060
But I don't, you know,

01:56:34.060 --> 01:56:35.840
if you're using a CentOS or,

01:56:35.880 --> 01:56:37.140
you know, a lot of times the government

01:56:37.140 --> 01:56:39.440
will approve like a Red Hat version

01:56:39.440 --> 01:56:41.380
and Red Hat's like 10 years old.

01:56:42.380 --> 01:56:43.680
You know, so just keep that in mind

01:56:43.680 --> 01:56:44.460
as a sysadmin.

01:56:46.300 --> 01:56:48.460
Make sure you tell Linux to never use,

01:56:48.460 --> 01:56:50.120
you never want NAFI to swap.

01:56:51.300 --> 01:56:54.120
NAFI is not good at swapping.

01:56:55.060 --> 01:56:56.680
It's always wanting to run.

01:56:56.880 --> 01:56:57.940
It's always, you know,

01:56:57.960 --> 01:57:00.180
those processors are always running.

01:57:01.080 --> 01:57:02.600
You know, so turn off swappiness

01:57:02.600 --> 01:57:04.660
if you can, you know,

01:57:04.700 --> 01:57:05.480
in those types of things.

01:57:09.620 --> 01:57:13.320
There is, so just for FYI,

01:57:13.500 --> 01:57:15.980
there is a Clam AV processor.

01:57:16.680 --> 01:57:17.960
If you search GitHub,

01:57:18.040 --> 01:57:19.260
I think it's there.

01:57:19.500 --> 01:57:22.960
So you can scan, you know,

01:57:23.160 --> 01:57:24.920
all of the files that you're ingesting

01:57:24.920 --> 01:57:27.460
for antivirus, you know,

01:57:27.560 --> 01:57:30.800
for viruses using Clam AV and some others.

01:57:31.960 --> 01:57:34.980
But, you know, you may want to take a look

01:57:34.980 --> 01:57:38.280
at excluding the content repository,

01:57:38.460 --> 01:57:40.180
the flow file repository,

01:57:40.700 --> 01:57:42.900
logs, provenance, and state

01:57:42.900 --> 01:57:45.500
from your, you know,

01:57:46.260 --> 01:57:47.520
your antivirus scanning.

01:57:48.800 --> 01:57:50.300
It can take a long time

01:57:50.300 --> 01:57:52.000
to scan those directories.

01:57:52.280 --> 01:57:55.060
And, you know, it's just using resources.

01:57:56.520 --> 01:57:59.860
And those directories are going to get large.

01:57:59.860 --> 01:58:01.620
And so, you know,

01:58:01.780 --> 01:58:03.420
some of the best practices here

01:58:03.420 --> 01:58:04.860
is just, you know,

01:58:05.020 --> 01:58:08.820
keep working on, you know,

01:58:09.060 --> 01:58:10.020
exclude your antivirus.

01:58:10.300 --> 01:58:12.400
Those directories are going to get huge.

01:58:12.680 --> 01:58:15.140
Make sure that the, you know,

01:58:15.340 --> 01:58:17.900
the respective repository

01:58:17.900 --> 01:58:20.320
gets onto a good storage mechanism.

01:58:20.800 --> 01:58:22.660
We talked a little bit about how,

01:58:22.660 --> 01:58:24.540
you know, you may keep

01:58:24.540 --> 01:58:26.160
your content repository

01:58:26.160 --> 01:58:28.260
on something really fast

01:58:28.260 --> 01:58:30.180
because that's where,

01:58:30.180 --> 01:58:32.280
you know, the content of a flow file

01:58:32.280 --> 01:58:33.900
is getting written and read

01:58:33.900 --> 01:58:35.120
and those types of things.

01:58:35.800 --> 01:58:37.380
The provenance repository is,

01:58:37.440 --> 01:58:39.700
you know, a very fast, quick,

01:58:40.380 --> 01:58:42.460
you know, all of that's being written

01:58:43.140 --> 01:58:44.860
in your flow file repository.

01:58:45.300 --> 01:58:46.000
So, you know,

01:58:46.000 --> 01:58:47.140
your other repositories

01:58:47.140 --> 01:58:49.000
can stay on a, you know,

01:58:49.120 --> 01:58:51.900
a slower disk if you need to scan it

01:58:51.900 --> 01:58:53.040
with your antivirus.

01:58:53.620 --> 01:58:55.700
But if you scan these,

01:58:55.720 --> 01:58:57.320
they can get rather large.

01:58:57.320 --> 01:58:58.660
So, you know,

01:58:59.060 --> 01:59:00.480
it's totally y'all's call.

01:59:00.760 --> 01:59:01.500
But, you know,

01:59:01.500 --> 01:59:02.580
if you can get away

01:59:02.580 --> 01:59:04.880
with not scanning that repository,

01:59:04.880 --> 01:59:07.080
have at it, you know,

01:59:07.120 --> 01:59:08.920
that does cause some concern

01:59:08.920 --> 01:59:10.020
because, you know,

01:59:10.120 --> 01:59:11.740
what if somebody brings a virus

01:59:11.740 --> 01:59:14.220
into the system, you know,

01:59:14.580 --> 01:59:16.900
so take that into consideration.

01:59:17.240 --> 01:59:18.440
Also taking into consideration

01:59:18.440 --> 01:59:21.260
there's, you know,

01:59:21.500 --> 01:59:23.320
processors that will interact with,

01:59:24.320 --> 01:59:25.560
you know, and send files

01:59:25.560 --> 01:59:28.460
to an antivirus to check

01:59:28.460 --> 01:59:30.020
and those types of things.

01:59:31.920 --> 01:59:33.160
This was asked,

01:59:33.560 --> 01:59:34.700
and I wanted to make sure

01:59:34.700 --> 01:59:35.640
I pointed this out.

01:59:37.360 --> 01:59:39.660
NaFi uses LogBack now

01:59:39.660 --> 01:59:43.080
as its runtime logging implementation.

01:59:43.740 --> 01:59:45.520
They got rid of Log4j.

01:59:46.100 --> 01:59:48.120
Now, with that being said,

01:59:48.520 --> 01:59:50.600
Log4j can still exist

01:59:51.640 --> 01:59:53.520
in an IA processor.

01:59:53.520 --> 01:59:56.160
So if you download a processor

01:59:56.160 --> 01:59:58.740
that is not, you know,

01:59:59.100 --> 02:00:00.020
like officially supported

02:00:00.020 --> 02:00:01.540
from the Apache Foundation

02:00:01.540 --> 02:00:03.100
or NaFi, you know,

02:00:03.100 --> 02:00:05.800
it may have a Log4j element.

02:00:06.900 --> 02:00:08.080
But, you know,

02:00:08.940 --> 02:00:10.400
to enter the earlier question,

02:00:10.420 --> 02:00:11.880
I think it was on day one,

02:00:12.240 --> 02:00:14.180
NaFi uses LogBack now

02:00:14.180 --> 02:00:15.900
for many reasons.

02:00:16.420 --> 02:00:18.740
And so, you know,

02:00:18.820 --> 02:00:20.040
just keep in mind,

02:00:20.040 --> 02:00:21.360
you know, that capability.

02:00:22.080 --> 02:00:24.160
As security incidents happen

02:00:24.160 --> 02:00:25.180
and are reported,

02:00:25.940 --> 02:00:27.520
those are quickly fixed

02:00:27.520 --> 02:00:29.200
and new releases are sent out.

02:00:32.340 --> 02:00:34.060
I don't know

02:00:34.060 --> 02:00:35.220
if there's a process

02:00:35.220 --> 02:00:36.460
I've seen in the past

02:00:36.460 --> 02:00:37.660
where, you know,

02:00:37.780 --> 02:00:41.220
if NaFi does find a vulnerability

02:00:41.220 --> 02:00:42.460
and they fix it

02:00:42.460 --> 02:00:44.220
and they release a new update

02:00:44.220 --> 02:00:46.560
that someone is notified.

02:00:47.220 --> 02:00:49.220
So I would highly recommend,

02:00:49.220 --> 02:00:51.220
you know, checking in

02:00:51.220 --> 02:00:52.640
on the NaFi website.

02:00:53.460 --> 02:00:56.040
We've already seen just this week

02:00:56.040 --> 02:00:59.320
we went from 125 to 126.

02:01:00.320 --> 02:01:02.940
And so 126 came out yesterday

02:01:02.940 --> 02:01:04.800
or day before yesterday.

02:01:05.800 --> 02:01:06.800
And so, you know,

02:01:06.800 --> 02:01:07.900
just kind of keep an eye

02:01:07.900 --> 02:01:09.520
on the downloads page.

02:01:09.920 --> 02:01:11.060
You may need to,

02:01:12.600 --> 02:01:14.360
you know, reference that.

02:01:14.620 --> 02:01:15.280
If you are looking

02:01:15.280 --> 02:01:16.400
at the documentation

02:01:16.400 --> 02:01:17.420
and doing some of these

02:01:17.420 --> 02:01:18.820
more advanced things,

02:01:19.600 --> 02:01:21.200
you know, you'll probably see it.

02:01:23.400 --> 02:01:27.500
Again, in the documentation,

02:01:28.060 --> 02:01:29.640
you're going to mostly look

02:01:29.640 --> 02:01:31.320
at the NaFi app log.

02:01:31.640 --> 02:01:33.380
That is the log containing,

02:01:33.380 --> 02:01:34.400
you know, framework

02:01:34.400 --> 02:01:35.660
and component messages.

02:01:36.420 --> 02:01:37.380
Your bootstrap

02:01:37.380 --> 02:01:39.020
and some of the others,

02:01:39.020 --> 02:01:40.740
they don't get used as much.

02:01:41.100 --> 02:01:42.480
There is a user log

02:01:42.480 --> 02:01:43.860
and a request log

02:01:43.860 --> 02:01:46.380
pending on, you know,

02:01:47.000 --> 02:01:48.320
your adminified usage

02:01:48.320 --> 02:01:49.860
as well as your,

02:01:49.860 --> 02:01:53.000
you use the Python API software,

02:01:53.420 --> 02:01:54.420
you know, depending on that,

02:01:54.560 --> 02:01:56.540
you may see a lot of messages

02:01:56.540 --> 02:01:57.640
here as well.

02:01:58.520 --> 02:01:59.740
So definitely, you know,

02:01:59.740 --> 02:02:00.340
keep that in mind.

02:02:01.980 --> 02:02:04.200
Security is the hardest thing

02:02:04.200 --> 02:02:05.600
to set up with NaFi

02:02:05.600 --> 02:02:06.800
just because it's a lot

02:02:06.800 --> 02:02:07.980
of hand jamming.

02:02:08.200 --> 02:02:09.900
It's a lot of trial and error.

02:02:10.780 --> 02:02:13.300
There is a ton of configuration.

02:02:14.380 --> 02:02:16.720
You know, Cloudera makes,

02:02:16.720 --> 02:02:19.920
you know, a version

02:02:19.920 --> 02:02:22.720
that the Cloudera data management

02:02:23.360 --> 02:02:25.040
where they have a GUI for this,

02:02:25.840 --> 02:02:27.760
you know, that helps set this up.

02:02:28.640 --> 02:02:30.240
Unfortunately, there is not

02:02:31.000 --> 02:02:32.880
an open source GUI

02:02:32.880 --> 02:02:35.700
or easy way to do this.

02:02:36.360 --> 02:02:37.220
You know, so I think

02:02:37.220 --> 02:02:38.240
the question was about,

02:02:38.240 --> 02:02:40.260
you know, some of the policies earlier

02:02:40.260 --> 02:02:42.000
and, you know, just got to hand jam

02:02:42.000 --> 02:02:43.960
that initial configuration

02:02:43.960 --> 02:02:45.900
and initial policies in place.

02:02:45.900 --> 02:02:48.300
The answer is yes, unfortunately.

02:02:49.780 --> 02:02:52.320
So, you know, that's the downside

02:02:52.320 --> 02:02:53.940
to open source

02:02:53.940 --> 02:02:55.980
and that's a downside to NaFi

02:02:55.980 --> 02:02:57.860
is, you know, some of these

02:02:57.860 --> 02:02:59.420
more advanced configurations

02:02:59.420 --> 02:03:00.920
and those types of things,

02:03:01.240 --> 02:03:03.480
you know, you would take a look.

02:03:06.580 --> 02:03:08.060
Use the toolkit,

02:03:08.800 --> 02:03:10.020
the NaFi toolkit,

02:03:10.260 --> 02:03:11.340
the Minify toolkit.

02:03:11.840 --> 02:03:14.180
There is a lot of capability

02:03:14.180 --> 02:03:15.360
there to manage

02:03:16.380 --> 02:03:18.000
users and clusters

02:03:18.000 --> 02:03:19.100
and those types of things,

02:03:20.320 --> 02:03:22.700
you know, so definitely download those.

02:03:23.040 --> 02:03:24.140
They were downloaded

02:03:24.140 --> 02:03:26.800
on the instance that we were using.

02:03:27.020 --> 02:03:28.860
We didn't really need it

02:03:28.860 --> 02:03:29.920
because, you know,

02:03:29.940 --> 02:03:31.300
we worked on what we had,

02:03:31.720 --> 02:03:33.360
but I could have used it

02:03:33.360 --> 02:03:35.160
to manage the install.

02:03:35.220 --> 02:03:36.920
I could have used it to,

02:03:36.920 --> 02:03:38.540
you know, some of those things.

02:03:38.580 --> 02:03:40.300
So just make sure you have the toolkit

02:03:40.300 --> 02:03:41.780
and the Minify toolkit,

02:03:42.480 --> 02:03:43.620
you know, downloaded.

02:03:44.500 --> 02:03:46.400
It will help out tremendously.

02:03:46.840 --> 02:03:48.080
You will use it a lot.

02:03:49.140 --> 02:03:51.440
It's still used quite a bit.

02:03:51.980 --> 02:03:53.600
Now, it's all command line.

02:03:53.760 --> 02:03:54.660
There's no UI.

02:03:55.480 --> 02:03:56.600
So, you know, just bear with it.

02:03:56.620 --> 02:03:57.760
It's the best at the end.

02:03:58.640 --> 02:04:01.400
But yeah, let's see.

02:04:01.420 --> 02:04:02.180
What else?

02:04:03.960 --> 02:04:05.900
You have Apache Knox,

02:04:06.100 --> 02:04:08.760
Apache Ranger out there.

02:04:09.480 --> 02:04:10.800
You know, if your key cloak

02:04:10.800 --> 02:04:11.980
is another good one.

02:04:12.700 --> 02:04:13.780
I like key cloak.

02:04:14.080 --> 02:04:17.620
I just put key cloak in with NaFAT

02:04:17.620 --> 02:04:20.900
on a solution for the government.

02:04:22.020 --> 02:04:24.380
You know, so if you need,

02:04:24.920 --> 02:04:26.760
you know, some of those capabilities,

02:04:27.080 --> 02:04:28.620
I highly recommend key cloak.

02:04:29.420 --> 02:04:31.180
It's already ATO'd.

02:04:31.240 --> 02:04:33.340
It's already good to go

02:04:33.340 --> 02:04:34.820
on the government side of the house.

02:04:35.540 --> 02:04:37.380
So, you know, getting a liking time

02:04:37.380 --> 02:04:39.140
and getting some of those approvals,

02:04:39.140 --> 02:04:40.800
you know, kind of kick-started,

02:04:40.800 --> 02:04:42.460
would definitely help.

02:04:44.140 --> 02:04:45.040
Let's see.

02:04:45.440 --> 02:04:47.420
What else can I go over?

02:04:50.620 --> 02:04:52.860
You know, the multi-tenant authorization.

02:04:53.580 --> 02:04:55.220
You know, talking about the authorizers

02:04:55.220 --> 02:04:56.600
and those types of things.

02:04:56.880 --> 02:04:58.260
I'll include those links.

02:04:58.680 --> 02:04:59.340
But, you know, I know

02:04:59.340 --> 02:05:00.920
you're having an issue there.

02:05:01.740 --> 02:05:03.420
You know, a lot of that's going to be,

02:05:03.420 --> 02:05:04.320
you know, coming back to this.

02:05:05.740 --> 02:05:06.240
What else?

02:05:07.180 --> 02:05:08.080
Is there any,

02:05:09.080 --> 02:05:11.900
is there any, like, topic, discussion,

02:05:12.080 --> 02:05:14.940
anything that we can go over

02:05:14.940 --> 02:05:16.840
while we have our few minutes here left?

02:05:16.880 --> 02:05:17.960
Because I want to make sure

02:05:17.960 --> 02:05:19.420
I got all the questions.

02:05:19.900 --> 02:05:20.960
If I don't get them answered,

02:05:20.960 --> 02:05:21.600
I want to make sure

02:05:21.600 --> 02:05:22.860
at least get them documented

02:05:22.860 --> 02:05:24.760
so I can go back, answer them,

02:05:24.760 --> 02:05:25.760
and email this out.

02:05:26.880 --> 02:05:29.940
Quick question on the jar files.

02:05:31.900 --> 02:05:33.840
So, if you get them from GitHub

02:05:34.420 --> 02:05:36.360
and then you install it

02:05:36.360 --> 02:05:37.200
just through Maven,

02:05:37.500 --> 02:05:39.480
and then your clips and everything,

02:05:40.180 --> 02:05:41.880
then how would you

02:05:41.880 --> 02:05:44.120
add them back to the processor?

02:05:44.480 --> 02:05:46.160
Like, you import them or how does that work?

02:05:46.440 --> 02:05:48.060
Oh, great question.

02:05:48.280 --> 02:05:48.900
I'm really glad

02:05:48.900 --> 02:05:51.540
because I kind of highlighted that,

02:05:51.560 --> 02:05:53.420
but I didn't get to use it.

02:05:53.640 --> 02:05:56.640
Let me see if I can find a Nafaanar.

02:06:01.160 --> 02:06:02.120
Oh, Nafaanar.

02:06:02.220 --> 02:06:03.700
Does this guy have a release?

02:06:03.700 --> 02:06:04.460
No.

02:06:04.500 --> 02:06:07.840
Let me see if I can find a release.

02:06:08.740 --> 02:06:10.920
I don't want a Korean version.

02:06:12.700 --> 02:06:13.460
Let's see.

02:06:14.800 --> 02:06:17.340
If I can find a NAR to download,

02:06:17.560 --> 02:06:20.580
I can show you immediately how that...

02:06:22.420 --> 02:06:22.820
Let me see.

02:06:27.840 --> 02:06:29.220
That's a good question, though.

02:06:29.420 --> 02:06:31.600
Because I can show you exactly how you...

02:06:31.600 --> 02:06:33.600
Oh, I can use the GeoMesa, I bet.

02:06:34.720 --> 02:06:35.440
Yep.

02:06:35.940 --> 02:06:36.460
Releases.

02:06:36.780 --> 02:06:37.260
There's a NAR.

02:06:38.660 --> 02:06:39.520
Let's see here.

02:06:39.700 --> 02:06:43.300
GeoMesa, Datastore, Service, FileSystem, Kafka.

02:06:45.400 --> 02:06:46.900
Installer, Bundle, though.

02:06:48.620 --> 02:06:49.460
Oh, Influx.

02:06:51.260 --> 02:06:51.620
Perfect.

02:06:52.300 --> 02:06:52.620
Great.

02:06:52.620 --> 02:06:53.200
Great question.

02:06:53.440 --> 02:06:54.040
Let me address.

02:06:54.860 --> 02:06:56.760
So, I have that NAR, right?

02:06:57.160 --> 02:07:00.600
And so, I've developed my own custom processor.

02:07:00.600 --> 02:07:07.000
I have used Maven to build it and all those fun things.

02:07:07.280 --> 02:07:13.000
Let me...

02:07:18.500 --> 02:07:19.100
Done.

02:07:19.480 --> 02:07:19.840
Perfect.

02:07:20.240 --> 02:07:22.000
So, you've built your NAR.

02:07:22.180 --> 02:07:22.840
You've got it running.

02:07:23.020 --> 02:07:24.360
You've downloaded a NAR.

02:07:24.480 --> 02:07:26.640
But be careful what you download, right?

02:07:27.560 --> 02:07:29.840
So, what I like to do...

02:07:29.840 --> 02:07:31.440
Talk about this is...

02:07:34.080 --> 02:07:36.320
Here's the InfluxDB NAR.

02:07:37.680 --> 02:07:38.880
So, what I do is...

02:07:39.740 --> 02:07:43.700
If you remember, I can stop NAFA,

02:07:44.200 --> 02:07:47.920
and I can put it in the lib directory and start NAFA again,

02:07:47.960 --> 02:07:50.280
and it will show up in my processors.

02:07:51.140 --> 02:07:54.060
Best thing to do is extensions.

02:07:54.900 --> 02:07:56.320
So, you know, even if...

02:07:58.160 --> 02:07:59.460
Go speed racer.

02:08:00.480 --> 02:08:03.740
Even if, you know, you have a custom processor,

02:08:04.000 --> 02:08:06.900
I still recommend putting it into the extensions directory.

02:08:07.300 --> 02:08:13.460
I would leave the lib directory to your core supported NAFA,

02:08:13.640 --> 02:08:15.960
you know, NARs and libraries.

02:08:16.620 --> 02:08:20.800
And so, you know, any custom processors,

02:08:21.440 --> 02:08:24.880
you can have that go through a CICD process, build it,

02:08:25.120 --> 02:08:28.340
and you want to send it to the extensions directory.

02:08:28.980 --> 02:08:32.560
The extensions directory was specifically built,

02:08:32.560 --> 02:08:35.360
you know, to allow for custom processors

02:08:35.360 --> 02:08:37.260
and also hot deployment.

02:08:37.820 --> 02:08:40.100
So, if I go back to my NAFA instance...

02:08:56.120 --> 02:08:58.880
I haven't had to stop my NAFA instance.

02:08:59.260 --> 02:09:02.080
I haven't had to, you know, do anything.

02:09:02.620 --> 02:09:04.580
And now I should have an influx.

02:09:06.440 --> 02:09:07.180
There it is.

02:09:07.180 --> 02:09:10.840
So, now you can see I have an influx processor,

02:09:10.840 --> 02:09:13.300
I have an influx, get influx database record,

02:09:13.420 --> 02:09:16.300
put influx database, you know, those types of things.

02:09:16.620 --> 02:09:19.780
So, because I just took that NAR, downloaded it,

02:09:19.840 --> 02:09:21.600
put it into the extensions directory,

02:09:22.140 --> 02:09:26.840
it hot deployed that NAR, and now I'll have full access to it.

02:09:28.000 --> 02:09:31.440
Is that your question, Pedro, or was it something else?

02:09:32.040 --> 02:09:34.260
Yep, yep, very nice.

02:09:34.680 --> 02:09:35.420
That's what I was wondering.

02:09:35.420 --> 02:09:37.780
Perfect, I got one right.

02:09:39.700 --> 02:09:41.140
Okay, no, great question.

02:09:41.240 --> 02:09:44.680
And I mentioned the extensions directory a few times now,

02:09:44.800 --> 02:09:47.580
so I'm glad you asked how you do it.

02:09:48.240 --> 02:09:50.520
So, yeah, you know, you just take the NAR

02:09:50.520 --> 02:09:53.220
and put it into the extensions directory,

02:09:53.440 --> 02:09:56.460
hit refresh on NAFA, and it should, you know,

02:09:56.660 --> 02:09:58.100
it might take a minute.

02:09:58.400 --> 02:10:02.820
If you look at the logs, you know,

02:10:03.540 --> 02:10:06.680
usually when I'm sys-admitting, like, a cluster,

02:10:07.100 --> 02:10:10.300
I have putty pulled up in about 1,000 logs.

02:10:11.160 --> 02:10:14.420
But if you look at the logs, you can see, you know,

02:10:15.900 --> 02:10:17.720
it, that NAR getting deployed.

02:10:20.760 --> 02:10:22.180
And sometimes it just takes a minute to,

02:10:25.440 --> 02:10:27.100
well, I'm getting all kinds of, oh,

02:10:27.160 --> 02:10:29.020
my warrants is because of that connection.

02:10:30.040 --> 02:10:32.180
But anyways, you know, if you're reading your logs,

02:10:32.180 --> 02:10:34.320
you should be able to see, you know,

02:10:34.460 --> 02:10:36.360
that that NAR was deployed.

02:10:37.980 --> 02:10:41.680
There we go, NAR autoloader.

02:10:42.260 --> 02:10:47.040
So, you know, it autoloaded the NAR and deployed it.

02:10:47.140 --> 02:10:48.540
It's good to go.

02:10:49.300 --> 02:10:53.660
If, you know, sometimes it's not easily apparent,

02:10:53.860 --> 02:10:57.060
but you may want to, you know, as a sys-admin,

02:10:57.080 --> 02:10:58.800
you may want to tell this log.

02:10:59.180 --> 02:11:01.640
And when you're deploying into the extensions directory,

02:11:01.640 --> 02:11:03.200
just kind of watch things.

02:11:05.300 --> 02:11:09.120
The log, you know, the log file will have additional data

02:11:09.120 --> 02:11:11.920
that, you know, NIFI may not even,

02:11:12.140 --> 02:11:16.180
NIFI may not even report any issue with that processor

02:11:16.180 --> 02:11:17.680
until it's being used.

02:11:18.300 --> 02:11:20.840
And so, you know, you want to check your logs

02:11:20.840 --> 02:11:23.440
when you're loading custom NARs

02:11:23.440 --> 02:11:25.580
just to make sure that it deployed correctly.

02:11:26.440 --> 02:11:27.480
But great question.

02:11:27.580 --> 02:11:30.560
And I'm glad we got to do a hands-on,

02:11:30.560 --> 02:11:32.080
real-world here it is.

02:11:33.380 --> 02:11:34.580
Any other questions?

02:11:42.500 --> 02:11:43.260
Absolutely.

02:11:44.420 --> 02:11:47.560
So, that is not a policy in NAR.

02:11:48.260 --> 02:11:51.680
And so, you know, as a sys-admin,

02:11:52.080 --> 02:11:55.000
you need to be able to lock these directories down.

02:11:55.340 --> 02:11:59.980
And so, the only way someone should be able to

02:11:59.980 --> 02:12:04.300
bring in a custom processor is if they have access

02:12:04.300 --> 02:12:06.960
to the lib directory or the extensions directory.

02:12:07.420 --> 02:12:11.140
Now, you know, you can, you know,

02:12:11.260 --> 02:12:14.080
lock that directory down just to only root.

02:12:14.580 --> 02:12:18.140
For instance, depending on your security mechanism,

02:12:18.340 --> 02:12:20.260
there's some other capabilities there.

02:12:20.740 --> 02:12:23.840
But, you know, in NIFI itself, you know,

02:12:24.240 --> 02:12:26.080
you notice that we never went to NIFI

02:12:26.080 --> 02:12:27.760
when we're loading a custom processor.

02:12:27.760 --> 02:12:30.160
We just dropped it into the extensions directory

02:12:30.160 --> 02:12:32.400
and then NIFI loaded it.

02:12:32.540 --> 02:12:36.120
So, your way of securing that is you need to secure

02:12:36.120 --> 02:12:42.060
the extensions directory, which is outside of the NIFI UI.

02:12:42.700 --> 02:12:44.060
So, great question, though.

02:12:45.120 --> 02:12:45.500
All right.

02:12:45.500 --> 02:12:48.240
Other questions before we wrap this up?

02:12:50.060 --> 02:12:52.980
Well, a few housekeeping things.

02:12:53.540 --> 02:12:56.300
You will be, you either have been sent

02:12:56.300 --> 02:12:59.600
or you're getting sent a survey.

02:13:01.080 --> 02:13:03.220
I noticed I did say um a few times

02:13:03.220 --> 02:13:05.440
and I'm trying to not do that.

02:13:06.860 --> 02:13:09.300
So, hopefully, that didn't bother anyone.

02:13:09.500 --> 02:13:11.340
I did get a mark on that before.

02:13:12.100 --> 02:13:14.500
But, you know, complete your survey as soon as you can.

02:13:14.900 --> 02:13:17.280
My pay is tied to that survey.

02:13:17.540 --> 02:13:20.240
You know, just the timeliness of it.

02:13:20.360 --> 02:13:21.180
I get paid either way.

02:13:22.260 --> 02:13:25.360
But, you know, the quicker those surveys are completed,

02:13:25.360 --> 02:13:28.140
the quicker I get paid, you know.

02:13:28.180 --> 02:13:30.500
So, if I get, you know, five, six, seven

02:13:30.500 --> 02:13:33.840
of these surveys complete, I'm good to go.

02:13:34.640 --> 02:13:39.020
I will, I have, I think everyone's email address

02:13:39.020 --> 02:13:39.840
that's signed up.

02:13:40.960 --> 02:13:44.300
What I will be working on over the next, you know,

02:13:44.600 --> 02:13:46.960
tonight and tomorrow, I'm gonna work on getting

02:13:47.640 --> 02:13:49.960
all your questions fully answered.

02:13:50.360 --> 02:13:54.900
I'm even going to get a tip on how to rename the files.

02:13:55.360 --> 02:13:56.960
Because I know we ran into that.

02:13:58.480 --> 02:14:01.080
And so, I'm gonna start compiling all of that.

02:14:01.340 --> 02:14:04.920
And then I will email a PDF that will, you know,

02:14:05.000 --> 02:14:07.960
have all of this information as well as some tips, tricks,

02:14:08.080 --> 02:14:10.260
some of the questions you all asked.

02:14:11.040 --> 02:14:14.580
And as well as anything else I can do to answer.

02:14:15.420 --> 02:14:18.880
If you have any future questions, let me know.

02:14:20.420 --> 02:14:23.260
You know, technically, after this training's done,

02:14:23.260 --> 02:14:26.240
I'm done, but I never like to treat, you know,

02:14:26.320 --> 02:14:27.300
people like that.

02:14:27.600 --> 02:14:30.600
So, if you have a question, especially on NAFA,

02:14:30.680 --> 02:14:33.120
I really enjoy this because it's one of my,

02:14:33.120 --> 02:14:34.120
quote unquote, babies.

02:14:34.860 --> 02:14:36.920
You know, feel free to send the question over.

02:14:37.380 --> 02:14:39.580
I'm also gonna send some YouTube links.

02:14:40.480 --> 02:14:43.840
There's some really cool design patterns that,

02:14:43.840 --> 02:14:46.500
you know, that we kind of went over.

02:14:46.540 --> 02:14:49.160
But we just don't have the time to fully,

02:14:49.160 --> 02:14:51.300
you know, go through every design pattern.

02:14:51.860 --> 02:14:54.880
But my friend Mark Payne puts these together on YouTube.

02:14:55.180 --> 02:14:57.820
And so, I'm gonna send them over to you.

02:14:59.300 --> 02:15:02.160
And yeah, if you have any other additional questions

02:15:02.160 --> 02:15:04.080
or anything else, shoot me a note.

02:15:04.140 --> 02:15:07.140
If it's something short and quick, I'll be happy to help.

02:15:07.700 --> 02:15:10.380
If you got more long-term, you know, support

02:15:11.020 --> 02:15:13.940
or something like that, you know, feel free to let me know.

02:15:14.980 --> 02:15:18.260
Like I said, I contract to this training company

02:15:18.260 --> 02:15:20.100
through my data engineering firm.

02:15:20.660 --> 02:15:23.540
So, you know, I'd be happy to help out wherever I can.

02:15:24.540 --> 02:15:26.740
And if there's no additional questions,

02:15:26.940 --> 02:15:28.860
I'd give you back a few minutes of your time

02:15:28.860 --> 02:15:31.320
and have a good rest of the day.

02:15:36.560 --> 02:15:37.380
Thanks, everyone.

02:15:37.980 --> 02:15:38.860
Have a good one.

02:16:20.100 --> 02:16:21.900
Why are you so cute?

02:16:22.320 --> 02:16:25.100
Because you have small hands, dude.

02:16:26.000 --> 02:16:27.020
I'm in there, that's why.

02:16:28.060 --> 02:16:28.920
I'm in there.

02:16:29.540 --> 02:16:30.760
Oh, are you having fun?

02:16:31.220 --> 02:16:32.500
You're doing good, that's fine.

02:16:32.520 --> 02:16:34.040
I'm having a blast, Dad.

02:16:34.680 --> 02:16:35.180
Yes?

02:16:35.280 --> 02:16:37.140
I'm having a blast, Dad.

02:16:37.500 --> 02:16:38.360
Oh, no.

02:16:39.400 --> 02:16:40.300
What is it?

02:16:40.520 --> 02:16:41.380
I don't know.

02:16:41.740 --> 02:16:43.860
It might be a little bit crazy, like that.

02:16:44.340 --> 02:16:44.940
Ah!

02:16:46.180 --> 02:16:48.080
Not even 90% at all!

02:16:48.300 --> 02:16:48.720
Hey!

02:16:48.720 --> 02:16:51.880
Oh, this is really, of course it's fucking good!

02:16:52.900 --> 02:16:54.440
Like, is it really or not?

02:16:54.660 --> 02:16:56.820
Maybe, and the other one that's like,

02:16:56.880 --> 02:16:58.560
is it a bowl or a foot over it?

02:16:58.600 --> 02:16:59.840
Oh, a bowl or a foot over it.

02:17:00.100 --> 02:17:00.920
Uh-huh.

02:17:01.960 --> 02:17:02.700
Oh, wow.

02:17:03.880 --> 02:17:05.920
Oh, I love that, it's like,

02:17:06.120 --> 02:17:06.660
you're good.

02:17:07.380 --> 02:17:08.340
You're good.

02:17:11.160 --> 02:17:12.480
Dad, are you vlogging?

02:17:14.080 --> 02:17:15.200
I'm vlogging.

02:17:15.420 --> 02:17:15.860
I'm vlogging.

02:17:15.860 --> 02:17:16.740
She did it!

02:17:18.960 --> 02:17:19.800
She did it!

02:17:22.840 --> 02:17:23.820
She did it!

02:17:23.820 --> 02:17:24.200
She did it!

02:17:26.640 --> 02:17:27.300
It's up.

02:17:29.340 --> 02:17:30.420
It's up.

02:17:30.420 --> 02:17:31.020
Do you want it, Dad?

02:17:33.300 --> 02:17:34.240
It's up.

02:17:36.120 --> 02:17:36.760
It's up.

02:17:36.760 --> 02:17:37.180
It's up.

02:17:37.300 --> 02:17:37.860
It's up.

02:17:38.500 --> 02:17:40.780
It's up.

02:17:42.880 --> 02:17:43.460
It's up.

02:17:43.460 --> 02:17:45.980
Do you want to go eat somewhere tonight?

02:17:46.140 --> 02:17:47.640
Do you want to go to the grocery store?

02:17:48.320 --> 02:17:50.120
Do you want...

02:17:50.780 --> 02:17:52.740
I can't remember the name, but...

02:17:52.740 --> 02:17:52.900
Okay.

02:17:54.960 --> 02:17:56.600
This is sweet, right?

02:17:56.980 --> 02:17:57.520
Yeah.

02:17:58.680 --> 02:17:59.260
Okay.

02:18:00.580 --> 02:18:01.120
Oh shit!

02:18:01.660 --> 02:18:02.240
Oh!

02:18:05.020 --> 02:18:05.600
Urine?

02:18:05.760 --> 02:18:06.880
Oh, my God!

02:18:06.880 --> 02:18:07.440
Let's see how it goes.

02:18:08.520 --> 02:18:10.200
I don't know what it is.

02:18:12.280 --> 02:18:12.560
Hey!

02:18:13.540 --> 02:18:14.500
What's the rating?

02:18:15.880 --> 02:18:20.440
Uh, 30% came down, 57% came in.

02:18:21.060 --> 02:18:26.920
11% came, uh, of the medium.

02:18:27.400 --> 02:18:31.880
57% large, 43%, 42%.

02:18:32.980 --> 02:18:36.940
123% are protected, and 20% are protected.

02:18:38.060 --> 02:18:40.260
527% are protected, and 20% are protected.

02:18:40.360 --> 02:18:41.740
So what's the overall rating?

02:18:42.180 --> 02:18:44.880
50% yes, and 110%.

02:18:45.440 --> 02:18:47.780
I'm going to show you all my list right now.

02:18:48.100 --> 02:18:58.700
1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15.

02:18:58.700 --> 02:19:00.820
I've got a lot on my phone already.

02:19:01.120 --> 02:19:02.140
Let me guess.

02:19:02.340 --> 02:19:05.580
I'm like, I just got a pack of cigarettes in my car.

02:19:05.880 --> 02:19:06.640
That's red.

02:19:07.160 --> 02:19:08.400
I was like, you suck, dude.

02:19:09.020 --> 02:19:10.180
I don't know what to agree with.

02:19:13.560 --> 02:19:14.480
What is this?

02:19:16.000 --> 02:19:16.520
Drugs.

02:19:16.560 --> 02:19:17.060
Drugs.

02:19:17.820 --> 02:19:18.040
Drugs.

02:19:18.780 --> 02:19:19.300
Oh.

02:19:20.040 --> 02:19:21.820
Anyway, socks on.

02:19:23.560 --> 02:19:24.580
Oh, socks got dirty.

02:19:24.740 --> 02:19:26.440
That's one fucking yard.

02:19:27.440 --> 02:19:29.000
We have one of them.

02:19:29.200 --> 02:19:29.680
One of them.

02:19:30.460 --> 02:19:31.720
I'm going to leave you.

02:19:35.040 --> 02:19:35.680
No.

02:19:40.240 --> 02:19:40.880
OK.

02:19:41.260 --> 02:19:42.520
Look at him.

02:19:42.860 --> 02:19:43.440
Look at him.

02:19:45.520 --> 02:19:47.280
Look at him.

02:19:48.140 --> 02:19:48.320
Look at him.

02:19:48.880 --> 02:19:49.200
Look at him.

02:19:49.200 --> 02:19:49.220
Look at him.

02:19:49.220 --> 02:19:50.280
What's the one blue there, too?

02:19:50.600 --> 02:19:50.840
No.

02:19:51.100 --> 02:19:51.740
No.

02:19:52.280 --> 02:19:52.740
No.

02:19:54.220 --> 02:19:54.860
No.

02:19:58.860 --> 02:19:59.240
No.

02:20:21.860 --> 02:20:21.960
Whoa.

02:20:24.860 --> 02:20:25.480
Whoa.

02:20:57.340 --> 02:20:58.740
Whoa.

02:21:56.260 --> 02:21:56.860
Oh

02:22:29.020 --> 02:22:30.420
Oh

02:23:15.300 --> 02:23:16.700
Oh

02:23:44.540 --> 02:23:45.940
Oh

02:24:03.420 --> 02:24:04.820
Oh

02:24:31.340 --> 02:24:32.740
Oh

02:25:03.540 --> 02:25:04.940
Oh

02:25:34.340 --> 02:25:35.740
Oh

02:26:23.440 --> 02:26:24.840
Oh

02:27:10.100 --> 02:27:11.500
Oh

02:27:24.860 --> 02:27:26.260
Don't take it

02:27:56.820 --> 02:27:56.860
Oh

02:28:49.100 --> 02:28:50.500
Oh

02:28:57.020 --> 02:28:58.420
Oh

02:29:37.240 --> 02:29:38.640
Oh

02:30:06.960 --> 02:30:08.360
Oh

02:30:32.640 --> 02:30:34.040
Oh

02:30:59.920 --> 02:31:01.320
Oh

02:31:27.780 --> 02:31:29.180
Oh

02:32:07.440 --> 02:32:08.840
Oh

02:32:34.580 --> 02:32:35.980
Oh

02:33:02.440 --> 02:33:03.840
Oh

02:33:44.400 --> 02:33:45.800
Oh

02:33:57.580 --> 02:33:58.980
Oh

02:34:01.800 --> 02:34:03.200
Oh

02:34:33.760 --> 02:34:35.160
Oh

02:35:16.540 --> 02:35:17.940
Oh

02:35:53.440 --> 02:35:54.840
Oh

02:36:04.780 --> 02:36:06.180
Oh

02:36:06.180 --> 02:36:07.440
Oh

02:36:53.440 --> 02:36:54.840
Oh

02:37:08.320 --> 02:37:09.720
Oh

02:37:38.780 --> 02:37:40.180
Oh

02:37:40.180 --> 02:37:40.880
Oh

02:37:59.140 --> 02:38:00.540
Oh

02:38:04.940 --> 02:38:09.640
You want to put it up

02:38:13.540 --> 02:38:19.380
What are you doing

02:38:25.280 --> 02:38:30.580
So I'm going to be like two inches

02:38:33.820 --> 02:38:34.340
Okay

02:38:41.680 --> 02:38:43.200
Don't make a man

02:39:20.760 --> 02:39:22.160
So

02:39:53.440 --> 02:39:54.840
Yeah

02:39:54.860 --> 02:39:56.260
Your friends

02:39:59.980 --> 02:40:00.920
But uh

02:40:04.080 --> 02:40:05.480
Okay

02:40:24.860 --> 02:40:25.180
Oh

02:40:45.100 --> 02:40:49.180
I was like look

02:41:23.440 --> 02:41:24.840
This guy over here

02:41:52.020 --> 02:41:54.840
I don't care

02:41:54.860 --> 02:41:56.440
So I think I'm gonna have to wait for that.

02:41:57.180 --> 02:41:58.120
I'm gonna wait here.

02:42:08.760 --> 02:42:12.380
I'm gonna go pee and then I'm ready.

02:42:18.580 --> 02:42:20.220
I'm gonna take photos first.

02:42:51.500 --> 02:42:54.300
I'm gonna take photos first.

02:43:21.380 --> 02:43:24.740
I'm gonna take photos first.

02:43:54.240 --> 02:43:54.660
I'm gonna take photos first.

02:44:19.860 --> 02:44:22.800
I'm gonna take photos first.

02:44:24.860 --> 02:44:26.640
I'm gonna go pee and then I'm gonna take a shower.

02:45:06.760 --> 02:45:12.100
I'm gonna take a shower.

02:46:35.740 --> 02:46:38.180
It's the last one we'll get it up.

02:51:38.180 --> 02:51:38.360
Thanks for watching!