I'm doing great. Good to hear from you guys. Yeah, I mean,
you've been a regular of the show, I would say, for quite a
while, and it's good. I really like the retrospective that
you did the first time you attended EmacsConf. And when was
it? Was it 2015? I can't actually remember. 2015 was when I
presented that, but I did an earlier talk the year before. So
yeah, that's why it's kind of thing. It's like, wow, it's
been a decade. It's been a while. Yeah, and I'm glad that you
are in a much better recording situation than you were in
2015 at the back of your colleague's house. It's good to see
you at your own place. Well, it's also nice to pre-record and
then just share. Yeah, I mean, that's why we keep talking
about pre-recording. You know, when we really pushed
pre-recordings, I think it was five years ago when we
started, people were not really liking it. They thought,
oh, but most conferences are just asking you to come and
chat. And, you know, I don't need to do the pesky
pre-recording. But now, and especially for you regulars,
you're really starting to realize that pre-recordings are
actually amazing for everyone. You're less stressed on the
day of the conference. We, the organizers, are way less
stressed. So it's a win-win scenario for absolutely
everyone in the equation. Okay, so there's some
confirmation bias at work, but I'm not really arguing with
what Leo says for the record. It may be that we are just that
this stoked that we're lying to ourselves by the
opportunity that we have to chat with each of you. Sure.
Sure. Sure. I have really appreciated all of the, the
transcripts. It's been great that, you know, to be able to
read and copy and paste and all that kind of thing. Yeah, it's
great. So yeah, let's answer some questions here.
Let's see. Yeah, just feel free to jump onto the Etherpad and
just drop on the questions. I'll keep answering them all day
kind of thing and get better answers as we go along. So yeah,
the first question here is, what's my largest code base? I
kind of touched it in my presentation. However, I think
someone just went through and did a better count than it
looks like. a little bit more. So
as I joked about in the video, we've all worked on larger code
bases, but that's still, it's kind of significant. So it's
not, so yeah, anyway. So let's talk a little bit about
searching for functions here. If you've got your functions
in your code or code block, well, you can search for the
descriptions, you know, as long as you've evaluated it. And
so that wasn't so much of a problem, but I did want to like look
at the commentary around any function that I would define.
And that's where, yeah, you know, the control X or the
control F to define that function and display it. It won't
pull out the literate stuff around it, obviously, it'll
only do the doc header. But if you could search for it and find
it quick, then it might be just as useful. And I guess that's
why I started getting into seeing if I can't tie that into the
X ref. you know, just the standard ways. My first part, I
noticed that evil has a different way of searching through
for looking for code definitions. That was my first foray
into it. It's like, oh, that's not a bad idea. Let's hook it up
under, you know, in the standard way. Let's see. Have I ever
used org-transclusion? No, I haven't, but I think I want to
take a look at it. I haven't heard of it before.
Let's see. What's my usage of dynamic blocks in my
workflows? You know, that's a real good question. I haven't
really used them a lot in all of my workflows, but yeah, it's
an interesting, you know, we always start. At first, all
we're doing is just taking a few notes, then we start
organizing, then we've got links, and then we're writing
code blocks, and then agendas, and table, you know, we keep
building up on it. And I guess I haven't really added that to
my workflow, but maybe I'll have to come back and report on
that. Is the mini buffer being deliberately hidden in my
video? Not deliberately. I recorded it first and
accidentally not clipped the video and turned that all off.
So I went through and started fixing all of it. But yeah, so
you'll notice the mini buffer kind of comes and goes in the
video. Sorry about that. So yeah, it wasn't intentional at
all. What's my take on Emacs or versus Jupyter? That's a real
good question. I've been toying about seeing if I could do
everything that some people do with Jupyter notebooks in
order. I don't need to do it as much because I'm still kind of
doing a lot of list programming and a lot of my DevOps, which
is a lot of shell work and a lot of Python. Most of the Jupyter
notebooks, they automatically include a lot of things in
from either Julia or Python, like NumPy and all the dynamic
stuff that's going on there. Since it has a server,
it seems like it's running a lot more stuff and then just
shipping it back off into the web app. That has been the
biggest challenge as I've tried to kind of duplicate that. I
don't really know NumPy and all the math stuff and that sort
of stuff that well. So trying to do like matrix
multiplications and that kind of thing that seemed to be
pretty easy in the Jupyter, it's not very easy in Org. I've
attempted to kind of work with Julia and the Julia support
for Org is really limited it seems. That's the, So, yeah,
there's some improvements we could probably make. So, I
think if somebody is comfortable with Jupiter, and that
seems to work, you may have to stay there. I don't know how
easy. I would be curious to try to see what we could do as a
community to kind of make that transition a lot easier.
Do you think any programming language is more suited litter
programming than another? Hey, that's a real good
question. A lot of mine is with Emacs Lisp, and obviously
that's a first-class citizen in Emacs. Go figure, right? So
that one certainly works. A lot depends on the support in the
OB version for the Babel work. Python is really well
supported, and yeah, Emacs Lisp. Others, Shell, you know,
it works, but it's hard to get both the values, the variables
out of the environment variables into your thing. So most
everything is just with the results of output. So, you know,
some languages aren't quite as good as others for sure. I
would love to see better support for more interesting
languages, especially ones that are compiled. I've been
dabbling with Rust and like, yeah, what can we do to have Rust
more iterative as well? So...
Do you use inline org function calls in org Babel library? So
I used to do a lot of org Babel libraries to kind of share
things.
Yeah. What I. But yeah. Sorry, I'm just kind of thinking
through here. I've done a lot of it in the past. There were a
lot of bugs in it. Oh, I don't know, eight years ago when I was
playing with it. I bet things have improved a lot more and it
probably saved me a lot more effort. Right now, most of the
literate DevOps, the DevOps kind of stuff that I'm doing, is
calling a lot of back-end programs and that sort of thing. So
the Org Babel kind of has limited help in that regard. And as
far as my Emacs work, well, it's just part of the session. So
it's going to be available or not. So that hasn't been as
helpful either. So it's kind of dropped off. But I bet if
you're using something like, say, Python, it might be a lot
more helpful. Another question, how do you handle the cases
where markup may sometimes interfere with some of the code
in places where you can't escape? Oh, okay. All right. Let me
see if I understand the question correctly.
When I, like, when I'm making pros, and I'm talking about a
function that I've written somewhere else, like, oh, I need
to work on this, or this calls this, and yeah, I'll use the
tildes or the equal signs on either side to make sure it's.
that it's clear that it's code. In my xref, when I'm doing a
thing at point so it can go look for that symbol, I do look for
those things at the end and strip them off so that I can mark it
up and still search and it's still okay. I'm not sure if
that's the answer to the question. Yeah, clarifying. I'm
making prose. I'm talking about a function I've written
somewhere else. Yeah, yeah, yeah, that is what I'm talking
about, where a function with tildes on either end, and if I do
an xref search find for that symbol, it'll strip that off and
then still look for the function name, so I can still mark it
correctly.
You said at the start that literate didn't catch on in
corporate DevOps, why not? You know,
I guess the big thing is not everybody's using Emacs, and I
don't think anybody would be doing literate programming if
you didn't have Emacs. I mean, you gotta have org, or it just
doesn't work that well, right?
Why not that full stack on Markdown? Yeah, so I often do a lot
of Markdown. I have got, so I've gone through and make my
markdown look a lot like org. So my headers are the same size
as org. When I mark, do the triple back ticks, you know, and
specify your language, we can now colorize that. So you can
kind of now have it syntactically marked up. It would be
interesting if we kind of expanded on Markdown so that I
could do a control C twice on it and run that code block.
That's a real good idea. Maybe we should work on that.
How does your management of to do's project and tasks
interact with this literate mindset? I can't believe I'm
going to do this, but Howard, I'm going to break right in
there because I just can't. I need to talk about that. So this
is I bought a domain. And really what I mean is I have this
domain of somebody get some work done in this area. I'm
fascinated by this. That's mostly really actually my whole
comment. But I just wanted to say, indeed, that is something
maybe we should work on. Well said. I think the idea of having
something that's full stack baked around Emacs is pretty
fascinating, just thinking about it as some command line
tool that we can run to get some work done and then there are
documents involved and as you know coming back to the kind of
corporate you know sense of some of the things like there's
that's that's a little dicey the same way a free software
project raising money for itself is a little dicey it might
be a necessary way to get through certain kinds of things and
like what the corporate side of the world brings to the table
here in my mind is that idea of I've got a formal process, like
the process itself is an asset. If I were selling my company,
that would be visibly of value to outside auditors that
would help us arbitrate the sale. It's just empirical. Then
tie that together with free software is maybe a little
unstated ethos of doing our work in the open, and you might
even deal with some of the ick factor. that you know that for a
handler. Maybe so, but yeah, the downside to that is you'd
still need to use Emacs to run through it, right? You know,
for all those cool features, yes, it would be kind of a yet
another killer app that we would have. So my domain name is
orgvm, and my concept is really put org into a box, build a UI
around it, it executes things that manipulate files that
generate, let's say, And that's just one conceptual
solution. But I really do think this is a super fun topic. And
that's the space. I'm not sure my idea is that wonderful. I
personally haven't soaked too many weekends into it. But I
just love the way you're thinking in terms of, well, we
should think more about that. Gosh, that's great to hear.
Yeah. Yeah, I mean, just like the talk yesterday on the
future of org, it's like, let's standardize it. Because,
yeah, we don't want to have org fragmented like Markdown is.
Markdown is terribly fragmented. You know, everybody's
got different implementations. And Yeah, what I've ended
up doing, I don't know if you've seen my blog, but I often I'm
always just writing an org and talking to myself and writing
questions and answers and essays come out of that. And then
I'll put them on my web page and easy. It's easy to publish to a
web page. Well, I do the same thing at work, but I need to have
it marked down. I don't start Markdown though. I'm always
starting an org because that, you know, I can really work
through the problem space, you know, executing code blocks
and making sure they work and all of that sort of stuff. And
then I just export to Markdown and then go cleaned up a little
bit if I need to. And that makes sense. But I am editing
Markdown afterwards. So yeah, it would be nice. It would be
nice. It's just, it's all done over here as opposed to, you
know, Adding it over there, but yeah, let's think about
every bit as much as as that. You know, I jumped in in the
spirit of yes, let's think about it. You know, your, your
comments about, let's think about the workflows that work
for us. Wow. Does that hit home? Right? So great. Yeah. Yeah.
Yeah. Okay. So, uh, on to do's and that sort of thing, um. You
know, a lot is the same as it was 10 years ago. At the beginning
of every sprint,
my company, we're using JIRA.
All jokes are valid when I say that. But I just go to its web
page. I copy all the tasks that I need to do that sprint. I
wrote a function that takes that code and reformats it as a
bunch of org tasks for me to do that I can just now have all my
to-dos. And I start to work off of that from that point on. So
it'll reference all the projects, and I do symlinks to every
code base that I need to use. Most of the to-dos I put inside my
code block is kind of just for me, just so I can remember it.
Because the work that I have to do needs to be tracked a little
more
fine-grained, I guess. Yeah. Do I use LP also on larger
projects? More files and nested directories? Yeah, I
haven't really done nested directories, but I can now. Now
that I've now kind of realized that I have the feature that I
demonstrated where I can just jump to any projects for a
particular project, all the org files and all the headings
show up, that works in nested directories.
Oh, okay, yeah, somebody's typing it in. Yeah, so it's
definitely possible. And I have now, since I recorded the
talk, I've been busy typing in and trying to extract that out
of my init file and make it into a package. I'm looking for a
good name right now. I'm calling it jobs, jump to project
sections. Anyway, but yeah, I think that's kind of a nice,
useful feature. Have I used Cucumber, Gherkin, and other
behavior-driven development?
Have I, I mean, I do a lot of...
more test driven. I do a lot of unit tests and I just put it
right in my code base because if it's in my pros, I can just
shove it in there. I've got the test right next to the
function that I'm testing. I like that so I can kind of see it.
I don't tangle it out to that same source file. I tangle it
somewhere else if I tangle it at all because I don't need to. I
can just, you know, control C that and run it. I like that
aspect of it.
Yeah, just keeping things together. That's the big problem
I have with a lot of tests is the tests are somewhere else.
It's separate from the code. I like seeing it all together,
but a lot depends on how extensive it is. So for a lot of the,
you know, the tests that we end up doing where, you know,
you've got to do a lot of mocks and a lot of startup and tear
down, that kind of thing. Yeah, that doesn't help as much.
And you probably have to kind of go old school on that.
What granularity I'm looking for with my org files and my
subcontent? That's a real good question and really
subjective. I change that over time. I begin by just dump. I
just dump everything in my head into a file and then I go
through and start to refine it.
My goal at one point was to have an Emacs config file that was
really small and simple. And boy, that just doesn't happen.
It's just too fun to add things and try new ideas. And I found
my files were just littered with good ideas that were
half-baked and not finished. And so it's like, oh, I need to
extract these and put them into different files so I can keep
it clean. And so I think it's like with any code base, you're
just going to keep refactoring. It's an iterative process.
So having the ability to, like with an org file, where you can
archive a subtree. Okay, this idea didn't pan out. Archive
it. I can come back to it later. Being able to just kind of
shove it somewhere else is really a nice little feature. All
right. Not a question, just a comment. We need more of your
insightful posts and videos. Oh, thanks.
I appreciate it. Yes, it's been a fun journey. And I think we
are coming up on our time, actually. So that is just an
amazing quiz. And it helps me from manipulating, as I said,
or as I put it earlier, like my chance as an organizer, or not
manipulating, monopolizing my chance as an organizer to
just get a chance to pick your brain on all kinds of things,
which is too kind, too kind. Appreciate it. It's been fun.
All right, I'll try answering more questions online as
well. All right, talk to you later. And we appreciate your
being in a huge resource that you are to the community.
Thanks to everyone for tuning in and we'll be coming over to
our next talk in just a moment here. And so bear with us
through the transition as we slip into, I think it's our, is
that our penultimate or our ultimate talk? We have one or two
left, I'm not sure. I think we've got a couple of talks left.
I'm back. Thank you, Howard. And we will be moving to the next
talk in about six minutes. So if you need to grab some coffee,
some tea, use the time wisely. And to confirm, we will have
one, two, three more talks this afternoon. So there's still
plenty to go around. See you in a bit, folks.