WEBVTT

00:00.000 --> 00:15.000
Just pick a speaker is Daniel, yes, and we've talked about Amber Blank, please warmly welcome.

00:15.000 --> 00:18.000
Thank you.

00:18.000 --> 00:21.000
So, what is Amber Lang?

00:21.000 --> 00:27.000
Amber Lang is a best transpiler, but he's a modern best transpiler.

00:27.000 --> 00:31.000
Let's talk about the interesting facts about it.

00:31.000 --> 00:34.000
Not me, but yeah, I have a Danielis Cachefrate.

00:34.000 --> 00:37.000
I am involved with open source science a lot of years.

00:37.000 --> 00:41.000
I also have wrote a free and open source book about it.

00:41.000 --> 00:46.000
And contribute in a green and work process contribute for years.

00:46.000 --> 00:50.000
And that's part of the Italian Inux Society Association in the Council.

00:50.000 --> 00:54.000
And this is the Association in Italy that helps all the Inuxes group in Italy.

00:54.000 --> 00:56.000
That's a promoting open source in Italy.

00:56.000 --> 01:05.000
But I'm here just to talk about Amber Lang as I am one of the commentator and part of the project science through years, more or less.

01:05.000 --> 01:17.000
So, I discovered years ago, and for me, it was interesting because it is a different way to see how to do scripts in your system.

01:17.000 --> 01:19.000
Okay.

01:20.000 --> 01:25.000
And so, I think everyone here knows what is best.

01:25.000 --> 01:30.000
Best is a shell that is very old.

01:30.000 --> 01:33.000
I don't want to say very old, but it's old.

01:33.000 --> 01:38.000
And for us it's important to support old version, but the point is that it's old.

01:38.000 --> 01:40.000
So, it's something that is a standard.

01:40.000 --> 01:48.000
If you think Linux is best, I mean, there is no other way to say everyone just use something like this.

01:48.000 --> 01:51.000
A console, a shell, to work with Linux.

01:51.000 --> 01:55.000
So, everyone knows what is best on Linux.

01:55.000 --> 02:03.000
And best has another opportunity for us, as developer develops, seesad, mean, a passionate, whatever.

02:03.000 --> 02:06.000
Only Linux, that is basically everywhere.

02:06.000 --> 02:08.000
Best is on Mac.

02:08.000 --> 02:11.000
So, is another completely different platform.

02:11.000 --> 02:17.000
But that's supported on Windows, but that's so, it is easy to get it on your Android phone.

02:17.000 --> 02:22.000
So, we can see that is something that is basically everywhere where it is Linux.

02:22.000 --> 02:28.000
So, for developers again, it's something that's simplified a lot, because we know something, we can use it everywhere.

02:28.000 --> 02:31.000
So, it's just enough that it's there.

02:31.000 --> 02:39.000
So, what are the opportunities again for a developer about using Bash, because when we promote this project,

02:39.000 --> 02:46.000
we see a lot of people say, why have to use Bash when they respite on Node.js, PHP, and, see, well, I don't know whatever they say,

02:46.000 --> 02:49.000
you can do everything you do with Bash with something else.

02:49.000 --> 02:52.000
That is better or simple, I like it.

02:52.000 --> 02:53.000
I don't know.

02:53.000 --> 02:56.000
Well, there are some opportunity again for us.

02:56.000 --> 03:06.000
I want to use that term, because if you can see important for developers understand that you can do the usual stuff in a different way that simplify your life.

03:06.000 --> 03:11.000
And Bash doesn't help you often about simplify your life.

03:11.000 --> 03:15.000
So, as we say, Bash is everywhere.

03:15.000 --> 03:21.000
So, for me, it means that developing something, I know that I don't need to install anything, it's just copy,

03:21.000 --> 03:26.000
the script, somewhere, just run, it's done.

03:26.000 --> 03:28.000
It's, again, already started.

03:28.000 --> 03:30.000
That's an example with Python.

03:30.000 --> 03:35.000
You need to start a little bit more PHP, Node.js, whatever.

03:35.000 --> 03:38.000
You need to install something always to use it.

03:38.000 --> 03:44.000
So, it's not, in case you get a Docker container, really, we need Python.

03:44.000 --> 03:48.000
Okay, but you need to start something with other interpreter.

03:48.000 --> 03:51.000
With Bash, it's there.

03:51.000 --> 03:57.000
So, it's there, except for comments, the bands, of course, what the script does,

03:57.000 --> 04:03.000
because if you need a cat, a less, I don't know, three common, whatever it's there.

04:03.000 --> 04:05.000
So, you don't need to start something.

04:05.000 --> 04:09.000
So, simplify a bit, the setup of the system.

04:09.000 --> 04:11.000
It's the standard.

04:11.000 --> 04:19.000
It's very common, as an example, to use a kernel, the script, the Bash, to install it with Python, Bash, to install a project.

04:19.000 --> 04:25.000
It's very common, it's one of the way outside, of course, the package managers.

04:25.000 --> 04:29.000
So, it's a standard, the in-ninox to know Bash.

04:29.000 --> 04:36.000
If you do, you try to get the LP certification, as I example, you need to use again, Bash.

04:36.000 --> 04:45.000
So, the other side is that this syntax is not very lovable.

04:45.000 --> 04:46.000
That's the way.

04:46.000 --> 04:54.000
It's not something that when started was thinking about to evolve that way, and to be spread that way.

04:54.000 --> 04:56.000
And so, it's a unique syntax.

04:56.000 --> 05:02.000
I think that when someone reads Bash, scripts say, this is the unifconditioned,

05:02.000 --> 05:07.000
and how I can stop the printing on console, I have no idea.

05:07.000 --> 05:12.000
Where is the, I mean, there are a lot of problems with Bash, because it's starting away.

05:12.000 --> 05:15.000
After 30 years, it's different.

05:15.000 --> 05:20.000
The web and Linux, already, this has changed a lot.

05:20.000 --> 05:23.000
So, the syntax is not something that developers today,

05:23.000 --> 05:28.000
expect when you say, a scripting language.

05:28.000 --> 05:33.000
And I think that is something that is not, it's a concept for me.

05:33.000 --> 05:38.000
And also, it is easy to follow wrong practices, because 30 years,

05:38.000 --> 05:44.000
there is not really standard, because the time and started different shell.

05:44.000 --> 05:48.000
And also, there are different versions of Bash itself.

05:48.000 --> 05:52.000
There is the posic standard and the known posic standard.

05:52.000 --> 05:56.000
So, it's easy, when you write a Bash script,

05:56.000 --> 05:58.000
you do something that is different.

05:58.000 --> 06:00.000
It is the same script as something this is for Bash.

06:00.000 --> 06:02.000
There are some things, another one.

06:02.000 --> 06:05.000
So, it's very easy to follow wrong practices.

06:05.000 --> 06:09.000
And we are doing, as an example, a CI, or something critical,

06:09.000 --> 06:12.000
is not very good.

06:12.000 --> 06:20.000
This is both a pro and a cons, because you need to know the Linux comments.

06:20.000 --> 06:23.000
But if you are a Linux user, you know it.

06:23.000 --> 06:25.000
If you are a newcomer, you need to learn it,

06:25.000 --> 06:27.000
but it's something that you want to use Linux,

06:27.000 --> 06:29.000
it's something that you have to deal with it.

06:29.000 --> 06:35.000
I mean, it's part of the fun to use Linux to learn the console.

06:35.000 --> 06:39.000
So, depends on what you think about it.

06:39.000 --> 06:43.000
And also, it's very time consuming to write a complex script,

06:43.000 --> 06:48.000
because at any one, I mean, after all, it's just executing commands,

06:48.000 --> 06:51.000
but if you are doing, I don't know, a lot of conditions,

06:51.000 --> 06:55.000
I need to read a Tom file, or a JSON,

06:55.000 --> 07:00.000
and to download there, compile, can be not easy.

07:00.000 --> 07:03.000
And you say, I want to use something else.

07:03.000 --> 07:05.000
So, it's very difficult.

07:05.000 --> 07:08.000
Also, if you're using an LAM, yeah, whatever,

07:08.000 --> 07:11.000
now they can write for you a Bash script.

07:11.000 --> 07:14.000
So, today depends on what you're doing in a winner

07:14.000 --> 07:16.000
or whether you can do what you want.

07:16.000 --> 07:19.000
But, at the end of the day, it's time consuming.

07:19.000 --> 07:23.000
So, let's be introducing Amberlang.

07:23.000 --> 07:26.000
Amberlang started a project as Pavel, that is not here.

07:26.000 --> 07:30.000
So, I say, hi, probably is following in live streaming.

07:30.000 --> 07:33.000
And started a few years ago, I switched the project.

07:33.000 --> 07:36.000
And now, it's something on GitHub with the community.

07:36.000 --> 07:38.000
We are doing various things.

07:38.000 --> 07:41.000
There is the documentation line, it's on GitHub.

07:41.000 --> 07:45.000
And now, let me explain what Amber is.

07:45.000 --> 07:48.000
But, before I want to say, as something they repeat,

07:48.000 --> 07:50.000
everyone joins the community.

07:50.000 --> 07:52.000
Why is not doing this in that way?

07:52.000 --> 07:53.000
We are an alpha project.

07:53.000 --> 07:56.000
We are creating a programming language.

07:56.000 --> 07:58.000
So, we are inventing syntax.

07:58.000 --> 07:59.000
We are writing documentation.

07:59.000 --> 08:01.000
We are creating a library.

08:01.000 --> 08:03.000
We are creating everything from scratch.

08:03.000 --> 08:06.000
So, maybe between a really something can change,

08:06.000 --> 08:09.000
because we are creating something from scratch.

08:09.000 --> 08:12.000
So, it's important to understand that we are enough.

08:12.000 --> 08:16.000
Now, we are 0.5, and we are already working on the next one,

08:16.000 --> 08:17.000
measure.

08:17.000 --> 08:18.000
So, we are developing.

08:18.000 --> 08:20.000
Let's talk about code.

08:20.000 --> 08:22.000
So, what we have here.

08:22.000 --> 08:25.000
We have an example code that undoes and makes sense.

08:25.000 --> 08:29.000
But, it's important to understand some features of the language,

08:29.000 --> 08:32.000
and the batch output from the compiler.

08:32.000 --> 08:35.000
So, we can see something that is easy here.

08:35.000 --> 08:37.000
I don't know, seeing concatenation.

08:37.000 --> 08:40.000
We have parameters in the function.

08:40.000 --> 08:42.000
We type validation.

08:42.000 --> 08:45.000
We have a loop.

08:45.000 --> 08:46.000
Loop is easy.

08:46.000 --> 08:50.000
After all, in batch is not easy to read.

08:50.000 --> 08:52.000
As I can say, we have an example here.

08:52.000 --> 08:53.000
What we have.

08:53.000 --> 08:55.000
We call it commons block.

08:55.000 --> 08:57.000
We check, as an example here.

08:57.000 --> 09:00.000
In example, the executor of the command.

09:00.000 --> 09:06.000
And in case it's failing, it means the standard error is not zero.

09:06.000 --> 09:07.000
And just confusing.

09:07.000 --> 09:10.000
Anyway, in case it fails, we have this code.

09:10.000 --> 09:12.000
Automatically executed.

09:12.000 --> 09:15.000
In batch, you have to do something like that for the same thing.

09:15.000 --> 09:18.000
So, at the end of the day, the same things.

09:18.000 --> 09:20.000
It's more simple to read.

09:20.000 --> 09:23.000
Something that always works because it's generated batch.

09:23.000 --> 09:24.000
That is compatible.

09:24.000 --> 09:26.000
And also doing various things.

09:26.000 --> 09:28.000
I think that's what we have.

09:28.000 --> 09:29.000
The type validation.

09:29.000 --> 09:30.000
So, it's a compiler.

09:30.000 --> 09:33.000
And the other way, a compiler optimized code.

09:33.000 --> 09:35.000
In the actual value of things.

09:35.000 --> 09:37.000
That's that compiling.

09:37.000 --> 09:43.000
If you're passing a text and not a number, the file is not compiled.

09:43.000 --> 09:46.000
So, we have that's another thing here.

09:46.000 --> 09:53.000
We have an import, like Python, from the standard library to import all the functions that are there.

09:53.000 --> 09:55.000
So, this is just an example that I'm a success.

09:55.000 --> 10:00.000
But I think that is helpful to understand the various opportunities of this language,

10:00.000 --> 10:03.000
to the best way.

10:03.000 --> 10:16.000
Because I think that everyone here can agree that this is not something that we expect from a script in language as today in 2026 to do for a code.

10:16.000 --> 10:19.000
So, this is not mixed-ense.

10:19.000 --> 10:22.000
I want to talk about something that makes sense.

10:22.000 --> 10:25.000
This is something that we use internally to check.

10:25.000 --> 10:28.000
As an example, the best quality with the shell check,

10:28.000 --> 10:33.000
because we are working to improve the compatibility with Bash in a simple way.

10:33.000 --> 10:37.000
And in this way, we are just saying,

10:37.000 --> 10:40.000
load all the member files, compile it,

10:40.000 --> 10:44.000
check, create a text file, execute for every Bash file,

10:44.000 --> 10:46.000
check, create a file and save it.

10:46.000 --> 10:50.000
So, in this way, we can see the best quality with all our tests.

10:50.000 --> 10:51.000
And so, it's run.

10:51.000 --> 10:54.000
I would talk to you too much about code.

10:54.000 --> 10:56.000
And this is another real example.

10:56.000 --> 10:58.000
This one I do as a test case.

10:58.000 --> 11:04.000
I did a 100 script that is called various language servers,

11:04.000 --> 11:06.000
binary on my machine,

11:06.000 --> 11:08.000
because someone is on a GDOS,

11:08.000 --> 11:10.000
one is gem, one is python,

11:10.000 --> 11:12.000
one is compiled, one is a binary.

11:12.000 --> 11:14.000
Let's do a number script.

11:14.000 --> 11:17.000
So, I use it to monitoring how the language changes.

11:17.000 --> 11:19.000
And we can see as an example,

11:19.000 --> 11:21.000
the function to do load,

11:21.000 --> 11:24.000
in the standard library is just using

11:24.000 --> 11:26.000
forget, curl, all other commands,

11:26.000 --> 11:29.000
better than what's find in the machine.

11:29.000 --> 11:31.000
So, it's more simple writing,

11:31.000 --> 11:33.000
dollar that way that impides an example,

11:33.000 --> 11:37.000
because you need to use request and so on.

11:37.000 --> 11:39.000
So, what are the features?

11:39.000 --> 11:42.000
We use this tool in case found it,

11:42.000 --> 11:45.000
that is just a checker inside the Bash script

11:45.000 --> 11:47.000
that inject on the top of the Bash file,

11:47.000 --> 11:49.000
I code the checker, the command exists.

11:49.000 --> 11:51.000
You're using, I don't know.

11:51.000 --> 11:53.000
JQ checker, this is the machine,

11:53.000 --> 11:55.000
otherwise block the script.

11:55.000 --> 11:59.000
We support Bash 30 jugglers from some years ago,

11:59.000 --> 12:02.000
and the Latest one, as soon as they achieve,

12:02.000 --> 12:05.000
this syntax as you saw is easy to remember.

12:05.000 --> 12:07.000
We have value type.

12:07.000 --> 12:09.000
The standard library is written in poor

12:09.000 --> 12:12.000
number, of course, is compiled in Bash,

12:12.000 --> 12:15.000
and the built-in that are already implemented inside the language.

12:16.000 --> 12:19.000
So, using that means that the Bash generated is the best one,

12:19.000 --> 12:21.000
also tested with a profile,

12:21.000 --> 12:25.000
so this kind of thing is written in Rust, all the project.

12:25.000 --> 12:28.000
We have already played games for various editors,

12:28.000 --> 12:30.000
and also a language server processor,

12:30.000 --> 12:33.000
and 3-setter for this language.

12:33.000 --> 12:36.000
These are a screen that we generated about

12:36.000 --> 12:38.000
every release we do a lot of tests,

12:38.000 --> 12:40.000
because as you saw, we use it internally to check

12:40.000 --> 12:42.000
the code quality, or we're going

12:42.000 --> 12:45.000
into everything we want to implement, we do a test, basically.

12:45.000 --> 12:48.000
So, this is also a way to say the project is good,

12:48.000 --> 12:51.000
because it's stable, we're testing everything.

12:51.000 --> 12:53.000
We do a CI for every version of Bash,

12:53.000 --> 12:56.000
that's also one for OSIX.

12:56.000 --> 12:57.000
This is the roadmap,

12:57.000 --> 12:58.000
but yesterday night was approved,

12:58.000 --> 13:01.000
the direct-wasted adults had the less

13:01.000 --> 13:02.000
built-in and others,

13:02.000 --> 13:06.000
adopted a subpress command block,

13:06.000 --> 13:09.000
that suppressed the standard error output.

13:10.000 --> 13:12.000
We are also planning to do the dictionary

13:12.000 --> 13:15.000
data structure, and a bit of OEP.

13:15.000 --> 13:19.000
I usually explain it like an order M for commands.

13:19.000 --> 13:21.000
Think of a find command,

13:21.000 --> 13:24.000
you can concatenate the values parameters,

13:24.000 --> 13:26.000
like in OEP,

13:26.000 --> 13:28.000
and generate automatically for you the command

13:28.000 --> 13:30.000
with Bash is generated.

13:30.000 --> 13:32.000
And now what's we're looking for funding to

13:32.000 --> 13:34.000
help out that is the main developer,

13:34.000 --> 13:36.000
implemented this kind of things,

13:36.000 --> 13:38.000
because it's an open-source project,

13:39.000 --> 13:42.000
and this is really the sum of the stuff

13:42.000 --> 13:44.000
that we want for the next measure,

13:44.000 --> 13:46.000
but this depends how much time we can have

13:46.000 --> 13:49.000
to implement and contribution for sure.

13:49.000 --> 13:51.000
So, I have just in time,

13:51.000 --> 13:53.000
I've gone faster, at the hand,

13:53.000 --> 13:55.000
we have a documentation,

13:55.000 --> 13:57.000
we have our Discord server,

13:57.000 --> 13:58.000
we're all the community,

13:58.000 --> 14:01.000
and we are discussing there in public,

14:01.000 --> 14:02.000
as an example,

14:02.000 --> 14:03.000
we have the maintainers room,

14:03.000 --> 14:04.000
that is breathable,

14:04.000 --> 14:05.000
just for us,

14:06.000 --> 14:08.000
but it's a readable framework one,

14:08.000 --> 14:11.000
and we discuss basically about what we want to do next.

14:11.000 --> 14:15.000
So, my one is doing an operative system using Ember,

14:15.000 --> 14:17.000
we have a package manager,

14:17.000 --> 14:19.000
developed in Ember,

14:19.000 --> 14:21.000
we are trying to do various things,

14:21.000 --> 14:25.000
and understanding what is possible to do with the language.

14:25.000 --> 14:27.000
So, I also have opened the documentation,

14:27.000 --> 14:28.000
it is online,

14:28.000 --> 14:30.000
we are working out to improve it,

14:30.000 --> 14:32.000
I don't know how much is readable from there,

14:32.000 --> 14:33.000
but it's online.

14:33.000 --> 14:35.000
So, we are doing a lot of things,

14:35.000 --> 14:37.000
also trying to keep up with the changes

14:37.000 --> 14:40.000
that we are doing right now in the code,

14:40.000 --> 14:42.000
and in the system.

14:42.000 --> 14:44.000
So, you can download it,

14:44.000 --> 14:46.000
it is already be compiled,

14:46.000 --> 14:47.000
the results of the Debian package,

14:47.000 --> 14:48.000
I want to try to do,

14:48.000 --> 14:51.000
that Debian repository is an example for everyone,

14:51.000 --> 14:53.000
and we are working hard

14:53.000 --> 14:56.000
to get something that is improving time to time.

14:56.000 --> 14:59.000
So, I think we have like one minute and half,

14:59.000 --> 15:00.000
if there are questions,

15:00.000 --> 15:02.000
or otherwise you can find me outside there.

15:03.000 --> 15:05.000
So, thank you for your time.

15:11.000 --> 15:13.000
There is a question there.

15:15.000 --> 15:17.000
Oh, this is a paragonist.

15:17.000 --> 15:19.000
It was just a change.

15:19.000 --> 15:20.000
It was just a change.

15:21.000 --> 15:22.000
Hello.

15:22.000 --> 15:25.000
Is it possible to take all of my old,

15:25.000 --> 15:27.000
really crap bash grips,

15:27.000 --> 15:31.000
and migrate them to Ember without manually writing them all out,

15:31.000 --> 15:32.000
or whatever?

15:32.000 --> 15:35.000
This was one of my idea to try to do a fine tune

15:35.000 --> 15:36.000
at model,

15:36.000 --> 15:39.000
using our test documentation

15:39.000 --> 15:41.000
to provide something for free

15:41.000 --> 15:43.000
that you put your best script,

15:43.000 --> 15:44.000
or maybe have some Python,

15:44.000 --> 15:45.000
and generate them the best.

15:45.000 --> 15:46.000
It's something of our idea,

15:46.000 --> 15:48.000
but we need to have time to do everything.

15:48.000 --> 15:49.000
But yeah,

15:49.000 --> 15:51.000
it was something that we wanted to do

15:51.000 --> 15:52.000
because I am in the same situation.

15:52.000 --> 15:54.000
I have huge collection of scripts,

15:54.000 --> 15:55.000
I'll send you the languages,

15:55.000 --> 15:58.000
so I want to create something more manageable.

15:59.000 --> 16:01.000
Hi, thanks.

16:01.000 --> 16:05.000
I have a project with a bunch of thousands of lines of bash

16:05.000 --> 16:10.000
that I provide to people who write hundreds of thousands of bash lines,

16:10.000 --> 16:12.000
based on my library.

16:12.000 --> 16:14.000
So, it was wondering if you have any plans

16:14.000 --> 16:18.000
for interoperability between Ember and Bash,

16:18.000 --> 16:21.000
so that I can write in number,

16:21.000 --> 16:23.000
and people can write in Bash.

16:23.000 --> 16:26.000
Yeah, it's something that we are planning for both the situation,

16:26.000 --> 16:27.000
we want to improve it,

16:27.000 --> 16:30.000
also to get a better Bash output,

16:30.000 --> 16:32.000
it is more easy to source the code.

16:32.000 --> 16:34.000
So, yes, we are want to do it,

16:34.000 --> 16:36.000
but before we have more,

16:36.000 --> 16:38.000
we need to define the syntax of the project,

16:38.000 --> 16:39.000
improving some things,

16:39.000 --> 16:40.000
but yes,

16:40.000 --> 16:41.000
it's something we are already planning

16:41.000 --> 16:43.000
because we have people that is developing a lot

16:43.000 --> 16:45.000
with Ember and want to do this kind of things.

16:45.000 --> 16:46.000
So, yes,

16:46.000 --> 16:48.000
is we have the issues for both the situation.

16:48.000 --> 16:49.000
Open it.

16:49.000 --> 16:51.000
Thank you very much.

16:51.000 --> 16:53.000
Thank you.

