[Speaker 0]: So, will you, when I'm looking at my,
the other screen, I don't see the chat,
so maybe someone can tell me.
[Speaker 1]: It's fine, don't worry about it,
and we are live. So hi again everyone.
Hi Tony, how are you doing?
[Speaker 0]: Really well, and you?
[Speaker 1]: I am doing fantastically,
as fantastically as I can be doing,
having to put out fire in the background
[Speaker 0]: Cool!
[Speaker 1]: during MaxConf. But I'm doing great! Alright,
Let me just try to set up everything so that
I can show the questions and all this.
Do you mind if I read you the question?
It might be a little more interactive and
this way you can focus on either presenting
stuff on your end.
[Speaker 0]: Yes, tell me what are the questions and what
to do and I will do that.
[Speaker 1]: Okay great so what I'll do,
I'll invite people to go to the pad and ask
questions because it was a very interesting
talk and I'm sure you have plenty of
questions but I only see 1 right now.
Do we have people on BigBlueButton?
Yes we do have people joining right now.
So reading the first question then.
So what's the main motivation for this new
package? I used to use org.yugo
and use GitHub Actions to build a blog.
So can you go in a little bit of details on
this?
[Speaker 0]: Yes, OK. So the main goal,
I didn't want to have,
to, I will push that here.
So my goal was to not have to rely on another
static site generator to produce my website.
So if you use a Yugo, that means that you
take, so this is the website that we've seen
in the talk, this 1. And I didn't want to
have to use a piece of software in Emacs that
translate to some other files to be feed to
another statistic generator because this way
I have 2 things to understand.
I have to understand how that software
translates my files into the other files and
then I have to understand how Hugo works.
So if I want to change something I need to
understand Hugo. So at some point I need to
work with Hugo. So if I need to work with
Hugo, maybe I can work with it directly.
And I wanted also something that was purely
Emacs-centric and working on it,
I found out about that solution.
And I wanted also something that we have only
1 file that have all the entries.
And when I thought about that,
finally I found a way that maybe we can just
use 1 or 3 to pass it the information of the
website. And if you look,
If you just try to work with Gatsby,
Ugo or all those websites,
when you start, you download 10,
20, 30, thousand for hundreds of dependencies
to do. Just to me, I'm a small guy and I just
want to have some documentation on the
website like this 1. It just,
it shouldn't need that much of a dependency.
And if you look at the website,
if you want to hack on something,
you need a lot of to understand how the
config files work. So you need to,
how does it work this config file?
But I want, it's always happened that you
want to add 1 thing or to add that things.
What do you have to do?
You have to, you can't because it's not
offered by the configuration file.
With that solution that I built for me first,
I don't care if I need something else.
I just have to go in that file.
It doesn't need to be that file because as I
am in Emacs if the render functions are
already evaluated they exist and I can use it
but I just have to change that file so if I
want something more I just I go there let's
say so does it answer the question or I
continue to show something?
[Speaker 1]: It's up to you, I think you are answering the
question. I think you veered off a little bit
from just why not you go but then you kind of
redid part of your presentation to justify
[Speaker 0]: own system. But stop me if I go because I
used to want to show more things than what
there is in the question.
[Speaker 1]: why you had to roll your Yeah that's fine.
Just for people who do not know,
we tend to restrict speakers when they submit
a presentation. We tell them,
oh, you can do a flash talk in 10 minutes or
a bit of a longer talk in 20 minutes or 40
minutes. And usually, because we have a lot
of speakers, we have to kind of coerce people
into going to shorter formats and sometimes
it's a lot about killing your darlings.
But just to reassure you,
we're just about to go on a launch break in
about 10 minutes, so you've got the full 10
minutes to use however you want,
but I'll just tell you,
you have a lot of questions so you might want
to perhaps move on to the next 1 as soon as
you can.
[Speaker 0]: Yes okay so tell me the next 1 and if people
want to stay more I can also stay more.
Right. I understand if people need to go to
lunch, they can, but people that want to
stay, if it's possible,
I'm here to answer any question.
[Speaker 1]: Splendid. All right, so moving on to the next
question. Is it possible to include the
include org tag to add content from other
files. Do you see what I'm talking about?
[Speaker 0]: Yes, so it's not included.
So the idea was really to have only 1 file
and have no options. So if you look at the,
let's go into, so the answer is no,
but if you want, you can write the code that
do it. But let's just go into one.n,
so that files. So this is the files where you
have everything, and there is only 2
dependencies. Maybe we can see that at the
top so which are htmlis on the Jack and the
other are Augment. So for me,
they're not dependencies because they come
with Emacs. But the question is,
can I add other things?
If you look at that, you don't see the orange
color which are viable,
it's because I didn't want any configuration
nor option. So there is no,
if you think about, you are used to use org
export normally and to use all the options
that are possible on all the things they are
not included. You can add them because when
you are in a render function.
So this is the render function that I showed
in the theme. You have a page tree so you
have the information but in the global I
think, yes in global, you can pass anything
you want and if you want you can pass the
parse tree of the whole file.
So if you pass the parse tree of the whole
file, what you can do is that you can get it
there. So I don't have it right now,
but you might have your include stuff and you
get it with a node property that target
something in the global variable.
So if we look just to be short but those 3
parts, the first 1 is page tree.
So it's this page that you are on the right,
pages are a list of all the pages and global
is something that you can set and reset once
and you have the whole part street.
So anything that you add in your op-files
could go in global if you want,
but it's not included.
[Speaker 1]: All right. I think that's also answering the
question. Can this generate a single file
from different sources like blog.org,
videos.org? I think you've just answered
[Speaker 0]: Yes, I think yes.
[Speaker 1]: this, right? Right. Okay.
So moving on to the other question.
Do you have pre-made templates already along
with the 1.el package?
[Speaker 0]: So, yes and no. So, The answer is if we go to
1.n, so this file, so the first are blah,
blah, blah. How it works,
so, okay, so you have the 1-hocs,
which is what can translate the org parse
tree into HTML. So this is for the content of
each page. So this is very useful.
Then we have a bunch of functions that help
to render the function,
each page. And you have a bunch of...
Everything that starts with dash default is a
render function. So there's no template,
but each page that if you want,
so that 1, the home, you can use 1 default
home. So, if you want to list the page,
you have that 1. For a page with no table of
content, you use that thing.
And if you go back to be short,
if we go there, I put this like that.
So this that we see here is the first inline
of 1.org. By the way, it doesn't have to be
called 1.org. It's just as you want,
but maybe we can call it.
So default, what was the other 1?
Default with sidebar. Or is it default with
sidebar or default? Yes,
with sidebar. Sidebar,
if it's worked correctly.
Okay, so, okay, so I don't know why the CSS
is not working correctly.
[Speaker 1]: It's okay. It wouldn't be a live demo without
problems occurring at some point.
Okay.
[Speaker 0]: But so maybe we can use this 1.
Or we stuck. So we are going to use this 1,
we've talked this 1, but maybe better in this
1 that add something. So we build it again
and now, oh, come on. We have it and we have
the, sorry, if we have just default,
we rebuild and now this is the default layer
that if we do with table of content,
you have it, you have the default content.
So how to change, and they are not template.
They are render functions that takes your
page as a tree and render HTML string.
So you can build any function that you want.
So yes, I think that answers the question.
There is no template like in other systems.
[Speaker 1]: Cool, that makes sense.
We have 2 more questions and then we'll need
to go on a lunch break.
I don't see anyone join the room.
Remember, Tony has said that he would be
willing to answer more questions during the
lunch break, perhaps because it's not lunch
break for you. Are you in Europe right now?
So that's why for us, also for me it's very
dark, but it's not lunch break for us,
it's going to be dinner break soon actually.
[Speaker 0]: Yes. Yes, exactly, so I'm just,
I'm okay.
[Speaker 1]: Right, Okay, so moving on to 1 of the last 2
questions. What additional features are there
that you would like to add to 1.EL
in the future?
[Speaker 0]: Yes, there's only 1, which is a full text
search done in a simple way.
So I don't meet what simple way means,
but when I see something complicated,
it doesn't enter in 1 to me.
So, but really, if you see that,
I would like to have some way.
So, this is the documentation and I would
like to have some way to just have another
function because we are not talking about
those websites on the 1.L.
It's not made for a big company or of your
things, it's just for a random guy that have
a blog or a few blogs and If you are a great
blogger, maybe you are going to write 100 or
200 or 300 pages in many years.
So this enter in that category.
So it's small. So I think it can,
we could find a way to make a full text
search. And that is simple.
I don't need to, to go with,
with solution like Algolia that is,
that works super fine.
But this is something that I don't control
and I have to give them the data and I'm not
against that but it's just that I think with
a bit of work something can be done with full
textile. But this is the only thing that I
would like to add.
[Speaker 1]: Very clear answer. Next question.
Can you create navbars on a website and fancy
things like carousels using 1.EL?
Now carousels is just,
I think, a fancy way to display pictures and
please correct me whoever asked this
question. Otherwise I see you taking notes
for the answers, thank you very much.
But if you could specify maybe carousels so
that Tony and I may get a better idea.
But still, first part of the question,
can you create navbars on a website?
[Speaker 0]: Yes. So if, for instance,
you see there, to me, it's not a,
it's a navbar. So you already have it.
I didn't show that in the talk,
but the CSS for the default function that
works is responsive. So,
out of the box, if you are using something,
you will have an app bar done for you with
all the pages that you have.
So, if we go to install,
we have that. And if we no longer have that,
we have that sidebar there.
And how it's done. So,
the same way. I like simple fields that are
flexible and I didn't want configuration
because if you want to write the code to
change something you just have to write code.
So any function, render function,
is yours. So you can do whatever you want and
you enter the html that you want to render.
So let's see how do we get that navigation
bar that we have when we do that this is a
CSS stuff. But when we click,
this is a JS stuff that,
so let's go to one.l And maybe this is a
sidebar. Why that function because,
okay. So when that function,
so 1 default sidebar is 1 that is used to do
some of the things at some point,
what we return is a JackHTML that take a data
structure and return a string.
So this is your HTML. So you can see at the
top you have the end, then you have the body,
and if we go at the end we can add a script
thing. So what we've seen with the sidebar
it's just that much line of JavaScript.
So this is the only JavaScript that there is
to get what we have here when we do that.
So you can add whatever you want.
It's code and you're the master of that code.
[Speaker 1]: Splendid, great. So to specify the carousel
stuff that we mentioned before,
it's pictures rolling or sliding from 1 to
the other. It's kind of like having a
gallery, imagine a fancy dynamic gallery
where you can scroll pictures.
Do you see what I'm talking about?
[Speaker 0]: Yes, so that things would just be I think
some javascript added somewhere and I can
show you another website.
So for instance if we go because there are
not all the data of the website are not all
public, but the website they are.
So for instance, a mini-buffer,
it's not a carousel, but at the home page,
we can do whatever we want.
Still those pages, still,
this is only 1 file for each page.
So if we click, we can get those things.
It's just that when we,
for the home page for instance,
when we go back on that home page,
we have the list at that point.
So let's go back to that function that we're,
so not that 1, maybe the 1,
1 different, it's better because that 1 is
simpler. So almost nothing happened.
We have the list of the pages.
So I can do whatever I want with that list.
I can loop over and we can see that 1,
that default home list of pages,
so that list of the pages,
and we see where is the list.
Okay, so this is a, here we have a function
that just, we want the pages,
but I think we, but the home page,
and we have that list,
and then here we do that.
And we get something listed,
But then as you control everything that you
do, you can pass any CSS class that you want
to do those things. So,
for instance, that div,
add the class either. Yes,
you can do. I don't remember the question,
but I think I was answering the right 1.
[Speaker 1]: No, no, you were answering it.
It was about carousels and about having fancy
display for image galleries.
And I think you've answered.
Basically, you just put your JavaScript,
you embed it inside the code.
[Speaker 0]: Exactly.
[Speaker 1]: So, other question. Would there be an
automated way to convert an existing HTML
document into a JackHTML form?
[Speaker 0]: Okay, so that 1, I don't have 1.
It's another topic, but maybe there are some
kind of session because some people that
know, that are used to Lisp,
common Lisp or Clojure or other,
Jack-html, that function,
is something classic, but I didn't find,
So I wrote it because I didn't find it
already done the way I want for Emacs.
And this is something for E-cup closure.
So really I take, it's not that I take my
impression, just that when you have something
that exists and you look at how it's done.
So you have a eCup for Crusher,
does the same thing that HTML.
It's more that I do a Jack HTML do what eCup
does, but maybe they do it a better way.
So I think maybe in that community,
it might already exist something that go from
HTML to Jack. So you can see,
is it big enough? I will make it big enough.
[Speaker 1]: It's good enough, don't worry.
[Speaker 0]: So if you see- So you have the hash HTML and
you see those things. There are things that I
couldn't do, for instance,
for the ID, I couldn't use the hash in the
name of, of how do we name that,
of the keywords, because it's used for
something else in a Emacs Lisp.
So, I use... Anyway, so you see that you have
that things but in Emacs we don't have the
map with that syntax. We have a hash map but
they are not with that syntax and I wanted
that syntax so we use only list and Here we
have an array with a hash map.
So let me just say, so the question was,
does it exist something?
I think not, but it could be built or maybe
exist for E-Cups, you are interested.
[Speaker 1]: Okay, great. I think that answers the
question perfectly. And our final question,
does this or you use any other Emacs packages
for your packages slash website,
example, or publish? Like,
rephrasing the question,
do you use it for your own personal usage or
do you interact with other packages?
[Speaker 0]: I'm not sure I understand the question.
Can you please repeat the question?
[Speaker 1]: Yes, I will reread it as it is written and I
will leave you interpret it however you want.
Thank you. Does this or you use any other
Emacs packages for your package slash website
like org-publish?
[Speaker 0]: No, no, no. I don't use nothing.
I just accept dependency of 1.n.
So, we are in 1.n and we go at the top and we
see that those are the dependencies.
I use nothing. So what I do is that I
publish, I just generate the public
directory. So if we go to public,
this 1, no, I don't want this 1.
I want to go to the website of the video.
If we see here, everything is rendered in the
public. Any services, if you use your own
server and you save those files,
you have your website.
So I don't use anything else.
I just git push and I'm using Netlify as a
service to run to save my files,
but you can use anything you want.
Because your website is really what is into a
public. So, this is another,
It's not the concern of 1.L
to answer. I'm not using org.publish.
[Speaker 1]: Cool, great. Well, thank you.
I think the question was also about other
things, but I think If the person wants a
more clear answer to their question,
feel free to clarify the question and Tony
might be able to answer it later on.
Alright Tony, I think that's all the
questions we had. Thank you so much for
taking the time not only to present Adimax
Kant, but also for answering all the
questions people had.
[Speaker 0]: Thank you to everybody participating,
organizing and thank you for all those
questions and you can send me any emails if
you have a question and open the issues if
it's not working the way it should work for
you. Please send me those things.
Thank you, everybody.
[Speaker 1]: Splendid, thank you. And before,
so right now we're gonna go on a lunch break.
We'll be back in about 40 minutes for the
talk called Emacs Turbocharges My Writing.
And I will not tell you more.
You can look at the talk page to see a little
bit of a synopsis but otherwise keep the
surprise. So have a good lunch or have a good
dinner if you are in dinner-friendly times
and I will see you afterwards.
Thank you again, Tony.
[Speaker 0]: See you.
[Speaker 1]: All right. Let me just close everything.
All right, got it. OK,
so thank you so much, Tony.
I just had to clear everything up on the
stream. I'm going to need to...
Sorry. I'm going to stop.