Okay, hi everyone. Yeah, sorry George, I'm just going to
introduce you a little bit.
For context, generally when I arrive on a BBB room, I have
a little bit of time to chat
with the speaker, but right now I made it right on time and
I barely had time to say
hi to George, but I will do it live. Hi George, how are you
doing?
Hello! No, doing well. I do think some of the content in
the etherpad got overridden.
Like I was typing out a whole bunch of different stuff with
other workflows to develop, but
I will try to find where that went. Yeah, so George,
nothing is lost. Don't worry
about this, we will get it back to you. I believe it's my
fault. I looked at the pad
and I said, "Oh, this is not a question, this is a pad."
And I think one of my Helvan
helps in the background said, "Oh yeah, I'm just going to
wipe this all out." But don't
worry, it's still in the history and we'll be able to find
all the code you had.
Cool, we'll find it. Yeah, so... So George, I'm just going
to... Sorry, this
is my task, to give you some context otherwise. Do you have
the pad open in front of you?
I do, yeah. I have the pad open. Would you be able to take
questions from there?
Yeah, so we can take questions from here. I think we've
already answered a bunch. So
one of the ones that's in there right now is, "Does it
become unwieldy due to the indirection
of the edit org source to use org mode and the virtual
linear programming as the project
becomes larger?" It can. So I generally use it for... I
find parts of the project that
are more useful for it and to be dropping in. So like on a
large project, when I'm working
with other people, I do not use it as much because you need
to actually be able to modify
the code. However, I just recently found out about a
feature called detangle, which is
the inverse of the tangle where as long as there's certain
tokens emitted into your file,
you'll be able to take the file and re-update back into the
linear programming document,
which is kind of mind-blowing as a feature. I have not had
a chance to experiment with
it yet though, and I think that could work really, really
well. Thanks for restoring
the stuff I was putting in. "I want to take a look at the
files used in your demo. Are
they somewhere online?" So I dropped the stuff I used for
the Arduino stuff. Now, caveat
with that, I was figuring out the workflows as I did it. So
there's like a readme of...
I was both figuring out Arduino and workflows. So the
initial readme has a bunch of projects
as I kind of did them one by one. So the workflow becomes
more mature the further down the list
you are. The ones earlier on are just copy-pasting a lot.
Do we have any other questions? This
is not the same shirt. You noticed. Also, the room's been
rearranged because my wife
made me move everything.
That's fine. Don't worry about it. It looks fine in the
background. I was implying that
you know the seven mistake game, trying to see what changed
in the background. I was
very interested though in some of the stuff that I was
seeing, including this dinner in
the background.
Yeah. Yeah, yeah. Yeah. There you go. There. It's my five-
year-old's birthday party in
the summer. And it's been far more useful as a video
background than a bunch of five-year-olds
were impressed with it.
Yeah. Sorry. I do have to... It begs a question though,
which is it's a fairly large structure
to be made by a five-year-old. Like it is several five-
years-old tall.
Yeah. Well, the idea was I wanted them to be able to fit
them. But it didn't quite work.
Yeah. It definitely feels like the mouth would be able to
fit a five-year-old. Yeah. So I
think we're good. We might want to get back on track. Sorry
for getting distracted by
this menacing presence in the background.
I had not heard of org-transclusion. I should look into
this. I'm waiting for the next one
to get typed up. I'll post a couple more things that...
Here. Into the chat. So a couple...
I mentioned in the chat that first of all, that org-entry-
get thing to be able to...
So you could put properties into... You could put variables
into properties on your org
outline and then have them be referenced is really, really,
really powerful. Because especially
because you can call into blocks from other parts of the
outline. You can basically...
You know how... I don't know if anyone here does React. But
there's something that's very
powerful that happens because you could do... You kind of
have dynamic scoping over the
DOM tree. And you get a similar type of power that you get
with React contexts in org mode.
Because you have variables that you could set depending on
what's the closest point
in the outline tree is. And then have defaults cascade
upwards.
Let's see. Are workflows as they are in your life closely
tied to particular projects?
Or are they general workflows? So I think there's general
ones. Like repository source
code analysis that I've gone to and used over and over
again. So I mentioned down below
Codemod and JORS. That's a pretty common trick I use to...
Like just when I sit down with
a project to analyze its history. Make a movie of how it
plays out. And a lot of that is
very... It's easiest to orchestrate in org. So here
actually I'll drop... I'll drop one
right at the top of the other cool workflows. Here's an
example of something I did... I
don't want that to... We'll figure out how to make that not
be... There we go.
So here's an example I did where it was like... I'll clean
that up a little bit. But where
you basically are using org. Within org you use Codemod.
Here's the thing. This stuff
is hard to do if you can't just write about it and say this
is what I'm trying to do.
And talk about it in prose. Because you're doing things
like analysis and you have to
have it all ready in front of mind. And if you don't have
that... And if you have...
You just have an empty document. You can type into whatever
. You can type what you're trying
to do. And then figure out how to do it in terms of these
blocks.
So for example, this is pretty generic and something I end
up going to a lot. Where you
use something like Codemod to basically run analysis on
like... Well, what sort of stuff
does... Or I guess that first one's not even Codemod. That
first one's just Git log analysis.
What sort of stuff has a person done? What files have they
touched? And then like...
Okay. I don't want to see the full list of the files. I
just want to get an idea of what
areas they've worked. So really take the first few director
ies of there. And just emit that
out to the screen. And now I can kind of go by each author
and figure that out. And then
the next example is me using the Codemod project to do
something like... Well, what's... Let's
look at coupling. So whenever one file within this project
changes, what other files are
likely to change? Oh, and I don't care about test files.
And I don't care about doc files.
And I don't care about package log or whatever. And then
again, you get that analysis. It's
very useful.
- Sorry, George. Interjecting real quickly to say two
things. First, we have opened the
Q&A if you want to join and ask questions to George or...
Just like I'm doing right
now. And also, George, I am a little lost. You are the
green collar on the bad, right?
- I am the what? Oh, I am now the... Yes, I am the green
collar.
- Okay. So I've lost...
- No, you're the green collar. I am now... Goodness.
- Okay. Can you tell me at which time you were? Because I
was a little lost in the bad
on what you were commenting on right now.
- Okay. Yeah, yeah, yeah. That was... I'm purple collar now
. So that first block under
other cool workflows is what I just put in there.
- Okay. Cool. It is on screen now.
- Yeah, yeah, yeah. And then there's a question, possibly
weak understanding here, but why
direct use of Tangle versus Org Babel? So take something
like Arduino CLI. That is running
at the file system level. Well, okay, no. Arduino CLI works
with the file system. You're
telling it, "Here are some files. Go do some stuff with
those files." So in order to do
that at the... And you have to have a specific type of file
system. So in order to do that
directly in Org Babel, I'd have to write an Org Babel
extension, which are not super easy
to write, that kind of writes files into a temp directory
in a certain format, blah,
blah, blah, which is hard. What's a lot easier is just tell
Tangle to just dump the file
and have a file watcher running. And whenever it happens,
it just deploys to an Arduino,
for example. Yeah, so it's basically a way of integrating
with things that require the
file system.
- Sorry, George, was there a question for me? I'm not sure
I was...
- Oh, no, no, no, no, no. I think that was the answer to
the question. I'm now looking
to see if there's...
- Okay, sorry.
- Yeah, we have more questions.
- Also, George, to give you a little bit of a heads up, we
have opened the Q&A right now,
and people should be able to join. But we only have about
three more minutes until we
need to go on a little bit of a break. So feel free to
answer as many questions on the
pad as possible. I don't see anyone in the chat, on BBB
right now, so questions on the
pad.
- Yeah, so I'll just put a couple more things. I'm a big
fan of plant QML, and I will regularly
use plant QML to do both architecture diagrams and wire
frames using their salt language for
mockups. So I'll write an entire technical document being
like, "Here's what we should
do," and be putting stuff directly in it. People see it,
and they're like, "Oh, mockup's
great." Not directly about... Oh, TreeSitter integration,
because you can now use TreeSitter.
So you can use TreeSitter to analyze other code files. So
for example, I recently wrote
a little TreeSitter script that would pop open a TypeScript
file, analyze all the exports,
and grab everything that's exported along with its .com and
just dump it into my document
so I can review it and update it just by with a keystroke
as that file evolves. And just
an honorable mention, I would say I recently found out Org-
Rome UI. So if you're an Org-Rome
user, that's an awesome visualization where it starts a
server and shows you a little
web page with everything visualized. And just in terms of
... It's nice and cool and useful,
but it's also a great politics hack where you start a new
job or a team, and then you
spend a month, a week taking your notes. So you have 80
notes or something like that,
because they're a little bit... And then at the end of the
week, you do your one-on-one
with your manager. You're like, "Here's the visualization
and everything," and your jaw
drops. Yes.
It is. It is amazing. Org-Rome UI is amazing. I'm a little
biased, so I won't talk too much
about it because people in the know will know that I've
actually helped with the development
of Org-Rome. But yes, Org-Rome UI is so great. I also
worked in a team where we were presenting
Org-Rome and Org-Rome UI to people who had no idea of what
was Emacs or Org-Mode, but
they could see atoms and they could see them being linked.
It was so amazing. It just works.
It's great when things just work.
Yeah.
All right, George. Any last thing you'd like to say to the
stream before we wrap up?
Nope. Put more workflows in the document if you have any
other ideas too.
Cool. Amazing. We'll be on the lookout for this. So George,
thank you so much for your
presentation and for your questions, and we will see you
later probably.
Thank you. Bye-bye.
Bye-bye.
I'm still there. See you in a bit, folks. Oh, sorry. Sorry.
I'm panicking. Give me
a second. Sure. You saw me whisper right now. We will be
going on a little bit of a break
right now. The next talk will be due in about 10 minutes.
So at 35 of the current hour,
we will be reconvening on Gen for the next talk. So see you
in a bit and enjoy the break.
You are currently the only person in this conference.
Give me just a second. I'll put some music for the break.
Right now I'm doing too many
things at the same time. So we will have to wait a little
bit for everything to work.
I'll put the music on first so that you have something nice
to listen to, which is Shoshin
Music the Lloyd.
(Music)