WEBVTT
00:00:00.000 --> 00:00:03.760
Okay, hi everyone. Yeah, sorry George, I'm just going to
00:00:03.760 --> 00:00:06.520
introduce you a little bit.
00:00:06.520 --> 00:00:10.500
For context, generally when I arrive on a BBB room, I have
00:00:10.500 --> 00:00:11.880
a little bit of time to chat
00:00:11.880 --> 00:00:14.810
with the speaker, but right now I made it right on time and
00:00:14.810 --> 00:00:16.040
I barely had time to say
00:00:16.040 --> 00:00:19.190
hi to George, but I will do it live. Hi George, how are you
00:00:19.190 --> 00:00:19.720
doing?
00:00:19.720 --> 00:00:26.330
Hello! No, doing well. I do think some of the content in
00:00:26.330 --> 00:00:28.520
the etherpad got overridden.
00:00:28.520 --> 00:00:33.520
Like I was typing out a whole bunch of different stuff with
00:00:33.520 --> 00:00:36.320
other workflows to develop, but
00:00:36.320 --> 00:00:40.330
I will try to find where that went. Yeah, so George,
00:00:40.330 --> 00:00:41.640
nothing is lost. Don't worry
00:00:41.640 --> 00:00:47.260
about this, we will get it back to you. I believe it's my
00:00:47.260 --> 00:00:49.760
fault. I looked at the pad
00:00:49.760 --> 00:00:51.920
and I said, "Oh, this is not a question, this is a pad."
00:00:51.920 --> 00:00:53.800
And I think one of my Helvan
00:00:53.800 --> 00:00:56.060
helps in the background said, "Oh yeah, I'm just going to
00:00:56.060 --> 00:00:57.400
wipe this all out." But don't
00:00:57.400 --> 00:01:00.360
worry, it's still in the history and we'll be able to find
00:01:00.360 --> 00:01:01.600
all the code you had.
00:01:01.600 --> 00:01:07.310
Cool, we'll find it. Yeah, so... So George, I'm just going
00:01:07.310 --> 00:01:08.240
to... Sorry, this
00:01:08.240 --> 00:01:11.940
is my task, to give you some context otherwise. Do you have
00:01:11.940 --> 00:01:13.840
the pad open in front of you?
00:01:13.840 --> 00:01:18.030
I do, yeah. I have the pad open. Would you be able to take
00:01:18.030 --> 00:01:19.000
questions from there?
00:01:19.000 --> 00:01:23.630
Yeah, so we can take questions from here. I think we've
00:01:23.630 --> 00:01:26.240
already answered a bunch. So
00:01:26.240 --> 00:01:30.060
one of the ones that's in there right now is, "Does it
00:01:30.060 --> 00:01:32.720
become unwieldy due to the indirection
00:01:32.720 --> 00:01:36.000
of the edit org source to use org mode and the virtual
00:01:36.000 --> 00:01:37.880
linear programming as the project
00:01:37.880 --> 00:01:44.250
becomes larger?" It can. So I generally use it for... I
00:01:44.250 --> 00:01:47.160
find parts of the project that
00:01:47.160 --> 00:01:53.390
are more useful for it and to be dropping in. So like on a
00:01:53.390 --> 00:01:56.400
large project, when I'm working
00:01:56.400 --> 00:02:01.200
with other people, I do not use it as much because you need
00:02:01.200 --> 00:02:03.680
to actually be able to modify
00:02:03.680 --> 00:02:08.480
the code. However, I just recently found out about a
00:02:08.480 --> 00:02:11.160
feature called detangle, which is
00:02:11.160 --> 00:02:15.060
the inverse of the tangle where as long as there's certain
00:02:15.060 --> 00:02:17.120
tokens emitted into your file,
00:02:17.120 --> 00:02:20.110
you'll be able to take the file and re-update back into the
00:02:20.110 --> 00:02:21.960
linear programming document,
00:02:21.960 --> 00:02:24.840
which is kind of mind-blowing as a feature. I have not had
00:02:24.840 --> 00:02:26.280
a chance to experiment with
00:02:26.280 --> 00:02:34.170
it yet though, and I think that could work really, really
00:02:34.170 --> 00:02:35.920
well. Thanks for restoring
00:02:35.920 --> 00:02:41.090
the stuff I was putting in. "I want to take a look at the
00:02:41.090 --> 00:02:42.880
files used in your demo. Are
00:02:42.880 --> 00:02:47.420
they somewhere online?" So I dropped the stuff I used for
00:02:47.420 --> 00:02:51.720
the Arduino stuff. Now, caveat
00:02:51.720 --> 00:02:55.220
with that, I was figuring out the workflows as I did it. So
00:02:55.220 --> 00:02:57.320
there's like a readme of...
00:02:57.320 --> 00:03:02.110
I was both figuring out Arduino and workflows. So the
00:03:02.110 --> 00:03:05.400
initial readme has a bunch of projects
00:03:05.400 --> 00:03:08.270
as I kind of did them one by one. So the workflow becomes
00:03:08.270 --> 00:03:10.240
more mature the further down the list
00:03:10.240 --> 00:03:16.080
you are. The ones earlier on are just copy-pasting a lot.
00:03:16.080 --> 00:03:21.600
Do we have any other questions? This
00:03:21.600 --> 00:03:25.590
is not the same shirt. You noticed. Also, the room's been
00:03:25.590 --> 00:03:27.440
rearranged because my wife
00:03:27.440 --> 00:03:30.640
made me move everything.
00:03:30.640 --> 00:03:33.350
That's fine. Don't worry about it. It looks fine in the
00:03:33.350 --> 00:03:35.000
background. I was implying that
00:03:35.000 --> 00:03:37.290
you know the seven mistake game, trying to see what changed
00:03:37.290 --> 00:03:38.360
in the background. I was
00:03:38.360 --> 00:03:40.330
very interested though in some of the stuff that I was
00:03:40.330 --> 00:03:41.720
seeing, including this dinner in
00:03:41.720 --> 00:03:42.720
the background.
00:03:42.720 --> 00:03:50.080
Yeah. Yeah, yeah. Yeah. There you go. There. It's my five-
00:03:50.080 --> 00:03:54.560
year-old's birthday party in
00:03:54.560 --> 00:04:00.030
the summer. And it's been far more useful as a video
00:04:00.030 --> 00:04:03.680
background than a bunch of five-year-olds
00:04:03.680 --> 00:04:04.680
were impressed with it.
00:04:04.680 --> 00:04:08.350
Yeah. Sorry. I do have to... It begs a question though,
00:04:08.350 --> 00:04:10.760
which is it's a fairly large structure
00:04:10.760 --> 00:04:14.080
to be made by a five-year-old. Like it is several five-
00:04:14.080 --> 00:04:15.240
years-old tall.
00:04:15.240 --> 00:04:19.950
Yeah. Well, the idea was I wanted them to be able to fit
00:04:19.950 --> 00:04:23.160
them. But it didn't quite work.
00:04:23.160 --> 00:04:25.370
Yeah. It definitely feels like the mouth would be able to
00:04:25.370 --> 00:04:26.680
fit a five-year-old. Yeah. So I
00:04:26.680 --> 00:04:28.730
think we're good. We might want to get back on track. Sorry
00:04:28.730 --> 00:04:29.400
for getting distracted by
00:04:29.400 --> 00:04:32.680
this menacing presence in the background.
00:04:32.680 --> 00:04:36.090
I had not heard of org-transclusion. I should look into
00:04:36.090 --> 00:04:41.400
this. I'm waiting for the next one
00:04:41.400 --> 00:04:47.800
to get typed up. I'll post a couple more things that...
00:04:47.800 --> 00:04:54.960
Here. Into the chat. So a couple...
00:04:54.960 --> 00:05:00.430
I mentioned in the chat that first of all, that org-entry-
00:05:00.430 --> 00:05:03.480
get thing to be able to...
00:05:03.480 --> 00:05:07.660
So you could put properties into... You could put variables
00:05:07.660 --> 00:05:09.480
into properties on your org
00:05:09.480 --> 00:05:13.200
outline and then have them be referenced is really, really,
00:05:13.200 --> 00:05:15.600
really powerful. Because especially
00:05:15.600 --> 00:05:19.470
because you can call into blocks from other parts of the
00:05:19.470 --> 00:05:22.400
outline. You can basically...
00:05:22.400 --> 00:05:25.050
You know how... I don't know if anyone here does React. But
00:05:25.050 --> 00:05:26.360
there's something that's very
00:05:26.360 --> 00:05:29.640
powerful that happens because you could do... You kind of
00:05:29.640 --> 00:05:31.240
have dynamic scoping over the
00:05:31.240 --> 00:05:35.940
DOM tree. And you get a similar type of power that you get
00:05:35.940 --> 00:05:38.760
with React contexts in org mode.
00:05:38.760 --> 00:05:41.540
Because you have variables that you could set depending on
00:05:41.540 --> 00:05:42.800
what's the closest point
00:05:42.800 --> 00:05:48.570
in the outline tree is. And then have defaults cascade
00:05:48.570 --> 00:05:49.640
upwards.
00:05:49.640 --> 00:05:57.160
Let's see. Are workflows as they are in your life closely
00:05:57.160 --> 00:06:01.400
tied to particular projects?
00:06:01.400 --> 00:06:05.600
Or are they general workflows? So I think there's general
00:06:05.600 --> 00:06:09.040
ones. Like repository source
00:06:09.040 --> 00:06:12.820
code analysis that I've gone to and used over and over
00:06:12.820 --> 00:06:16.120
again. So I mentioned down below
00:06:16.120 --> 00:06:24.200
Codemod and JORS. That's a pretty common trick I use to...
00:06:24.200 --> 00:06:25.480
Like just when I sit down with
00:06:25.480 --> 00:06:28.770
a project to analyze its history. Make a movie of how it
00:06:28.770 --> 00:06:30.480
plays out. And a lot of that is
00:06:30.480 --> 00:06:35.820
very... It's easiest to orchestrate in org. So here
00:06:35.820 --> 00:06:39.640
actually I'll drop... I'll drop one
00:06:39.640 --> 00:06:44.560
right at the top of the other cool workflows. Here's an
00:06:44.560 --> 00:06:48.840
example of something I did... I
00:06:48.840 --> 00:06:54.080
don't want that to... We'll figure out how to make that not
00:06:54.080 --> 00:06:57.240
be... There we go.
00:06:57.240 --> 00:07:02.870
So here's an example I did where it was like... I'll clean
00:07:02.870 --> 00:07:05.880
that up a little bit. But where
00:07:05.880 --> 00:07:13.400
you basically are using org. Within org you use Codemod.
00:07:13.400 --> 00:07:14.320
Here's the thing. This stuff
00:07:14.320 --> 00:07:18.050
is hard to do if you can't just write about it and say this
00:07:18.050 --> 00:07:19.960
is what I'm trying to do.
00:07:19.960 --> 00:07:23.000
And talk about it in prose. Because you're doing things
00:07:23.000 --> 00:07:24.600
like analysis and you have to
00:07:24.600 --> 00:07:28.990
have it all ready in front of mind. And if you don't have
00:07:28.990 --> 00:07:31.400
that... And if you have...
00:07:31.400 --> 00:07:33.980
You just have an empty document. You can type into whatever
00:07:33.980 --> 00:07:35.560
. You can type what you're trying
00:07:35.560 --> 00:07:39.690
to do. And then figure out how to do it in terms of these
00:07:39.690 --> 00:07:40.520
blocks.
00:07:40.520 --> 00:07:43.970
So for example, this is pretty generic and something I end
00:07:43.970 --> 00:07:45.600
up going to a lot. Where you
00:07:45.600 --> 00:07:49.520
use something like Codemod to basically run analysis on
00:07:49.520 --> 00:07:52.480
like... Well, what sort of stuff
00:07:52.480 --> 00:07:55.590
does... Or I guess that first one's not even Codemod. That
00:07:55.590 --> 00:07:58.320
first one's just Git log analysis.
00:07:58.320 --> 00:08:02.730
What sort of stuff has a person done? What files have they
00:08:02.730 --> 00:08:04.200
touched? And then like...
00:08:04.200 --> 00:08:06.380
Okay. I don't want to see the full list of the files. I
00:08:06.380 --> 00:08:07.640
just want to get an idea of what
00:08:07.640 --> 00:08:12.750
areas they've worked. So really take the first few director
00:08:12.750 --> 00:08:14.640
ies of there. And just emit that
00:08:14.640 --> 00:08:18.770
out to the screen. And now I can kind of go by each author
00:08:18.770 --> 00:08:20.240
and figure that out. And then
00:08:20.240 --> 00:08:24.220
the next example is me using the Codemod project to do
00:08:24.220 --> 00:08:28.720
something like... Well, what's... Let's
00:08:28.720 --> 00:08:32.070
look at coupling. So whenever one file within this project
00:08:32.070 --> 00:08:33.200
changes, what other files are
00:08:33.200 --> 00:08:36.090
likely to change? Oh, and I don't care about test files.
00:08:36.090 --> 00:08:37.760
And I don't care about doc files.
00:08:37.760 --> 00:08:40.440
And I don't care about package log or whatever. And then
00:08:40.440 --> 00:08:42.680
again, you get that analysis. It's
00:08:42.680 --> 00:08:43.680
very useful.
00:08:43.680 --> 00:08:46.190
- Sorry, George. Interjecting real quickly to say two
00:08:46.190 --> 00:08:47.880
things. First, we have opened the
00:08:47.880 --> 00:08:51.260
Q&A if you want to join and ask questions to George or...
00:08:51.260 --> 00:08:52.560
Just like I'm doing right
00:08:52.560 --> 00:08:55.810
now. And also, George, I am a little lost. You are the
00:08:55.810 --> 00:08:57.880
green collar on the bad, right?
00:08:57.880 --> 00:09:04.240
- I am the what? Oh, I am now the... Yes, I am the green
00:09:04.240 --> 00:09:05.480
collar.
00:09:05.480 --> 00:09:07.200
- Okay. So I've lost...
00:09:07.200 --> 00:09:11.000
- No, you're the green collar. I am now... Goodness.
00:09:11.000 --> 00:09:13.770
- Okay. Can you tell me at which time you were? Because I
00:09:13.770 --> 00:09:15.120
was a little lost in the bad
00:09:15.120 --> 00:09:16.520
on what you were commenting on right now.
00:09:16.520 --> 00:09:19.600
- Okay. Yeah, yeah, yeah. That was... I'm purple collar now
00:09:19.600 --> 00:09:20.920
. So that first block under
00:09:20.920 --> 00:09:24.000
other cool workflows is what I just put in there.
00:09:24.000 --> 00:09:26.280
- Okay. Cool. It is on screen now.
00:09:26.280 --> 00:09:29.480
- Yeah, yeah, yeah. And then there's a question, possibly
00:09:29.480 --> 00:09:31.320
weak understanding here, but why
00:09:31.320 --> 00:09:36.930
direct use of Tangle versus Org Babel? So take something
00:09:36.930 --> 00:09:40.160
like Arduino CLI. That is running
00:09:40.160 --> 00:09:44.810
at the file system level. Well, okay, no. Arduino CLI works
00:09:44.810 --> 00:09:46.360
with the file system. You're
00:09:46.360 --> 00:09:51.010
telling it, "Here are some files. Go do some stuff with
00:09:51.010 --> 00:09:55.480
those files." So in order to do
00:09:55.480 --> 00:09:59.560
that at the... And you have to have a specific type of file
00:09:59.560 --> 00:10:01.640
system. So in order to do that
00:10:01.640 --> 00:10:05.280
directly in Org Babel, I'd have to write an Org Babel
00:10:05.280 --> 00:10:07.840
extension, which are not super easy
00:10:07.840 --> 00:10:11.450
to write, that kind of writes files into a temp directory
00:10:11.450 --> 00:10:13.320
in a certain format, blah,
00:10:13.320 --> 00:10:16.720
blah, blah, which is hard. What's a lot easier is just tell
00:10:16.720 --> 00:10:18.600
Tangle to just dump the file
00:10:18.600 --> 00:10:22.020
and have a file watcher running. And whenever it happens,
00:10:22.020 --> 00:10:24.120
it just deploys to an Arduino,
00:10:24.120 --> 00:10:33.630
for example. Yeah, so it's basically a way of integrating
00:10:33.630 --> 00:10:35.120
with things that require the
00:10:35.120 --> 00:10:36.120
file system.
00:10:36.120 --> 00:10:41.650
- Sorry, George, was there a question for me? I'm not sure
00:10:41.650 --> 00:10:43.160
I was...
00:10:43.160 --> 00:10:46.240
- Oh, no, no, no, no, no. I think that was the answer to
00:10:46.240 --> 00:10:48.120
the question. I'm now looking
00:10:48.120 --> 00:10:49.120
to see if there's...
00:10:49.120 --> 00:10:50.120
- Okay, sorry.
00:10:50.120 --> 00:10:51.120
- Yeah, we have more questions.
00:10:51.120 --> 00:10:55.050
- Also, George, to give you a little bit of a heads up, we
00:10:55.050 --> 00:10:57.240
have opened the Q&A right now,
00:10:57.240 --> 00:11:00.830
and people should be able to join. But we only have about
00:11:00.830 --> 00:11:02.640
three more minutes until we
00:11:02.640 --> 00:11:06.260
need to go on a little bit of a break. So feel free to
00:11:06.260 --> 00:11:08.480
answer as many questions on the
00:11:08.480 --> 00:11:11.500
pad as possible. I don't see anyone in the chat, on BBB
00:11:11.500 --> 00:11:13.240
right now, so questions on the
00:11:13.240 --> 00:11:14.240
pad.
00:11:14.240 --> 00:11:20.400
- Yeah, so I'll just put a couple more things. I'm a big
00:11:20.400 --> 00:11:24.720
fan of plant QML, and I will regularly
00:11:24.720 --> 00:11:30.750
use plant QML to do both architecture diagrams and wire
00:11:30.750 --> 00:11:34.800
frames using their salt language for
00:11:34.800 --> 00:11:37.850
mockups. So I'll write an entire technical document being
00:11:37.850 --> 00:11:39.160
like, "Here's what we should
00:11:39.160 --> 00:11:42.250
do," and be putting stuff directly in it. People see it,
00:11:42.250 --> 00:11:45.040
and they're like, "Oh, mockup's
00:11:45.040 --> 00:11:50.990
great." Not directly about... Oh, TreeSitter integration,
00:11:50.990 --> 00:11:53.600
because you can now use TreeSitter.
00:11:53.600 --> 00:11:57.110
So you can use TreeSitter to analyze other code files. So
00:11:57.110 --> 00:11:59.080
for example, I recently wrote
00:11:59.080 --> 00:12:03.210
a little TreeSitter script that would pop open a TypeScript
00:12:03.210 --> 00:12:05.200
file, analyze all the exports,
00:12:05.200 --> 00:12:08.420
and grab everything that's exported along with its .com and
00:12:08.420 --> 00:12:10.000
just dump it into my document
00:12:10.000 --> 00:12:14.780
so I can review it and update it just by with a keystroke
00:12:14.780 --> 00:12:18.160
as that file evolves. And just
00:12:18.160 --> 00:12:23.820
an honorable mention, I would say I recently found out Org-
00:12:23.820 --> 00:12:25.720
Rome UI. So if you're an Org-Rome
00:12:25.720 --> 00:12:29.050
user, that's an awesome visualization where it starts a
00:12:29.050 --> 00:12:30.720
server and shows you a little
00:12:30.720 --> 00:12:35.370
web page with everything visualized. And just in terms of
00:12:35.370 --> 00:12:38.720
... It's nice and cool and useful,
00:12:38.720 --> 00:12:42.690
but it's also a great politics hack where you start a new
00:12:42.690 --> 00:12:44.680
job or a team, and then you
00:12:44.680 --> 00:12:47.670
spend a month, a week taking your notes. So you have 80
00:12:47.670 --> 00:12:49.080
notes or something like that,
00:12:49.080 --> 00:12:50.800
because they're a little bit... And then at the end of the
00:12:50.800 --> 00:12:51.760
week, you do your one-on-one
00:12:51.760 --> 00:12:54.560
with your manager. You're like, "Here's the visualization
00:12:54.560 --> 00:12:56.360
and everything," and your jaw
00:12:56.360 --> 00:12:57.360
drops. Yes.
00:12:57.360 --> 00:13:00.750
It is. It is amazing. Org-Rome UI is amazing. I'm a little
00:13:00.750 --> 00:13:02.480
biased, so I won't talk too much
00:13:02.480 --> 00:13:04.500
about it because people in the know will know that I've
00:13:04.500 --> 00:13:06.040
actually helped with the development
00:13:06.040 --> 00:13:08.700
of Org-Rome. But yes, Org-Rome UI is so great. I also
00:13:08.700 --> 00:13:11.000
worked in a team where we were presenting
00:13:11.000 --> 00:13:14.930
Org-Rome and Org-Rome UI to people who had no idea of what
00:13:14.930 --> 00:13:16.840
was Emacs or Org-Mode, but
00:13:16.840 --> 00:13:21.420
they could see atoms and they could see them being linked.
00:13:21.420 --> 00:13:24.160
It was so amazing. It just works.
00:13:24.160 --> 00:13:26.320
It's great when things just work.
00:13:26.320 --> 00:13:27.320
Yeah.
00:13:27.320 --> 00:13:31.120
All right, George. Any last thing you'd like to say to the
00:13:31.120 --> 00:13:32.960
stream before we wrap up?
00:13:32.960 --> 00:13:36.980
Nope. Put more workflows in the document if you have any
00:13:36.980 --> 00:13:38.320
other ideas too.
00:13:38.320 --> 00:13:41.440
Cool. Amazing. We'll be on the lookout for this. So George,
00:13:41.440 --> 00:13:42.440
thank you so much for your
00:13:42.440 --> 00:13:45.640
presentation and for your questions, and we will see you
00:13:45.640 --> 00:13:46.760
later probably.
00:13:46.760 --> 00:13:47.760
Thank you. Bye-bye.
00:13:47.760 --> 00:13:48.760
Bye-bye.
00:13:48.760 --> 00:13:58.820
I'm still there. See you in a bit, folks. Oh, sorry. Sorry.
00:13:58.820 --> 00:14:00.920
I'm panicking. Give me
00:14:00.920 --> 00:14:08.300
a second. Sure. You saw me whisper right now. We will be
00:14:08.300 --> 00:14:09.640
going on a little bit of a break
00:14:09.640 --> 00:14:14.960
right now. The next talk will be due in about 10 minutes.
00:14:14.960 --> 00:14:18.200
So at 35 of the current hour,
00:14:18.200 --> 00:14:21.450
we will be reconvening on Gen for the next talk. So see you
00:14:21.450 --> 00:14:23.560
in a bit and enjoy the break.
00:14:23.560 --> 00:14:29.160
You are currently the only person in this conference.
00:14:29.160 --> 00:14:41.310
Give me just a second. I'll put some music for the break.
00:14:41.310 --> 00:14:45.240
Right now I'm doing too many
00:14:45.240 --> 00:14:47.140
things at the same time. So we will have to wait a little
00:14:47.140 --> 00:14:48.280
bit for everything to work.
00:14:48.280 --> 00:14:50.340
I'll put the music on first so that you have something nice
00:14:50.340 --> 00:14:51.560
to listen to, which is Shoshin
00:14:51.560 --> 00:15:04.440
Music the Lloyd.
00:15:04.440 --> 00:15:20.440
(Music)
00:15:20.440 --> 00:15:40.440
(Music)
00:15:40.440 --> 00:16:00.440
(Music)
00:16:00.440 --> 00:16:20.440
(Music)
00:16:20.440 --> 00:16:40.440
(Music)
00:16:40.440 --> 00:17:00.440
(Music)
00:17:00.440 --> 00:17:20.440
(Music)
00:17:20.440 --> 00:17:40.440
(Music)
00:17:40.440 --> 00:17:54.440
(Music)