Sometimes when I look at our issue tracker on
GitHub, it's empty. You know, I have mixed feelings.
Either we are really good at closing our issues
or people just don't care. And the idea is pretty
simple. You have a file with an HTTP extension.
There is a specification for HTTP files nowadays.
And, you know, we are 100 % following that specification.
I tend to keep my operating systems like 10 years
old and I don't want to change them or upgrade.
So the square brackets are used to scroll the
responses. That's me, you know, scrolling forward.
What I wanted to show is, for example, here,
if I change to another token, the device token,
I run this, it tells me, okay, I acquired the
new token. It opens up the browser. It automatically
copies the code into the clipboard. but all i
need to do just you know press paste and it's
hey everyone i have two guests right now from
the coolala team have marco and yarrow how's
it going guys hi guys hi i'm pretty good i hope
you're doing good too so yeah we we had a lot
of trouble getting the screen to work or the
recording to work but now it's we're good i think
We've been trying to set this for one hour right
now. We started an hour ago and finally we got
it working. And this is not the first time. We
had a call last week. We went live. The audio,
I messed it up. It was my fault. And it's been,
yeah, hopefully this time is the right one. meeting
where we tried a third time. So let's see if
everything works out. We better make it worth
it, you know? And hopefully Colala works so much
better than this video software or whatever it
is. Yeah, we have the demos ready. Well, you
guys have the demos ready and all that stuff,
right? I have the same demos from the last time
ready. where we met. But yeah, I think Yao can
also demo stuff. Hopefully, yeah. So I was thinking,
you know, Marco, you have the real world examples
because you actually work with Colala every day
on your projects. And I think it's a good idea
to show what the real world examples are. I'm
more sort of theoretical. uh guy because you
know i make up my i make up my cases and i sort
of follow for new features but i am but i i'm
aware of all the new bells and whistles that
have been added to koala lately and that's what
i'm i can show off to people okay okay let's
Just so that for people that don't know what's
happening, I already know the two of you. We
had the call last week, but I'm just going to
pretend that I don't know you so that the rest
of the people here get to know the two of you.
So let's start with Marco. Who are you? Did you
start Kulala? Did Yarrow come in the project
afterwards? You mind sharing a little bit on
that, Marco? Yes, I started Kulala because I
was. starting a new job. And when I started the
new job, I had to work a lot with APIs. And I
usually tend to do everything in Neowim. And
there was also REST Envim. There's also REST
Envim. But at the time I was looking at it, it
got archived because the current maintainer didn't
want to maintain it anymore. He asked for...
But nobody came up, so he archived it. And then
I was like, OK, if I start this new job and I
rely on a software that is archived, I have a
bad feeling about this. So maybe I need an alternative
to it. And at the time, there was no good alternative,
at least for the stuff I need for my current
day job. I started Kulala as a project just for
me, but then I quickly realized maybe because
this is now archived, the rest Envim project
is now archived, maybe someone wants to join
in or wants to also use Kulala and then made
it public. And it got some traction because I
posted on Reddit and there I also found Yaro
because he was looking for, I think he just,
asked for plugins where he can contribute to
because he was looking for a project where he
can work on plug -in stuff for NIRVM. And then
I thought, okay, that would be a perfect match
because I'm the current sole maintainer of Kulala
and I was maybe looking also for help. So he
joined the team and now we're... like two maintainers
of it. And yeah, it's quite a lot of fun for
me. Okay. Okay. And why did you, why were you
looking for projects to work on Yaro? So basically,
you know, I'm, it's been a pause for me, for
IT stuff, you know, for almost like for a couple
of years, I've been doing other things. And then
last year, last autumn, I decided to go back
into software development, basically, because
I always really enjoyed it, but not always had
the opportunity to work in this field. And last
autumn, I went back and I discovered Neovium.
I've used Vim before, and I've discovered Neovium.
I was getting to know it. And I was discovering
Lua, and then while discovering Lua, I sort of,
I wasn't satisfied with a few things. Like I
was surprised that Neovium, for example, didn't
have a REPL. So I decided to make my own. And
then I later sort of turned this into a plugin
and really enjoyed the process of developing
in Lua and making plugins for Neovium. and i
decided you know i wanna you know i want to do
something tangible i want you know i want to
join some project which is uh fairly complex
um um you know to enjoy myself and to learn at
the same time uh so i posted on reddit and marco
offered to join the project and for me it was
just a perfect a perfect match i joined like
just over two months ago and for me it was perfect
because it's all to do with sort of networking
internet http and i'm quite good at that and
uh i looked at the code base and i really liked
uh you know i really like the whole structure
and idea behind it so yeah i jumped in and immediately
i loved it and i have been enjoying since really
oh and what's your background like are you a
back -end front -end full stack developer um
so I have, I've been mostly doing backend in
my life. Sort of, I've been a full stack developer
for some time, sort of in Ruby and Rails ecosystem
a few years ago. But really, I always enjoyed
more backend. That's, you know, that's where
I'm really good at. And frontend, I can do if
I really have to, but I try to avoid it as much
as possible. Oh, and what about you, Marco? What's
your specialty? My specialty is like, I, I do
like everything. I mean, it was like this at
my, all my companies I worked for, like basically
it's just helping out where I can. So if it's
ops, so operations or DevOps or front end or
back end, so wherever I can help the most. And
that is what I'm currently also doing. I'm mostly
helping the DevOps teams in our current company.
But yeah, it's basically I'm helping wherever
I can. So also doing front end stuff. Also getting
workarounds to work in GCP because they are not,
I don't know if you know this, but Coming from
AWS and then using GCP, it's quite, I mean, they're
pretty different, so quite different when it
comes to setting up load balancers and all this
stuff. So it's quite a challenge to get it sometimes
to work like with Phoenix environments and all
this stuff. But yeah, basically, I don't, how
do you call it, a jack of all trades or something
like that. Okay, wonderful. For the people that
don't know what Kulala is, I have here in the
topic a postman, alternative, any of them. Is
that accurate? How would you describe it, Marco?
What is Kulala? If I come to this video and I'm
like, what are these guys talking about? What
would you say to someone watching? Yeah, I don't
know if we're currently already there, but we...
strive to be an alternative to Postman or Bruno
or Insomnia or, I mean, all this stuff. And we
want to get all this, I mean, all these features
they offer into Neon. So basically, that is our
goal. I don't know if we are currently there,
but we are working on that. So we're pretty close.
I would say we're 99 % there. Okay. So the goal
is not to leave the terminal. It's to stay in
NeoBeam and to be able to do all your requests,
get the data that you need, and work with that
data, right? That's right, yes. Okay. What are
the most popular options out there? I've heard
about, because of you guys, what is the name
of this Bing company that has a lot of IDEs?
JetBrains. Yeah, that one. What do they have?
Do they have like a GUI or what is it? They have,
so JetBrains, you know, I've got a bunch of products,
but basically they've got the IntelliJ Studio,
which is a huge IDE for everything. And within
it, they have the HTTP client, which can be used,
well, it cannot be used as standalone, but it's
an IntelliJ HTTP client, what they have. And
they also have HTTP CLI, the command line interface
for that client. And this client, how does it
work? Do you need to provide it a file? Do you
pass commands to it? It's pretty much the same
experience as Postman. I would say that most
of the products out there, they're very similar
in their user interface. They're very similar
in the user interface, and they're all based
on the idea that you have. So for Purser, for
example, in their terms, it's called collections,
where you have collections of kind of files with
your requests. And in our case, it's HTTP files,
the files with HTTP extension, which have sort
of lists of requests, and then those files are
executed. with the runtime. Thanks for sharing
that. Okay. And let's demo stuff. You know, that's
going to make people understand better what we're
talking about. So who wants to demo something
first? I think Jao can try to demo stuff first.
We've been setting up so long. So, okay, let
me try. Let me try if it works. Okay, let me
switch to your screen, Yarrow. Let's see. So
the idea is pretty simple. You have a file with
an HTTP extension. And there is a specification
for HTTP files nowadays. And we are 100 % following
that specification. And basically, you know,
it's a file where you have a bunch of requests,
like, you know, one, two, three, four, whatever.
And then you can run this request either one
by one. You know, in my case, I just press enter
and that request is run. I get the response here.
Wait, so all you need to do is to place your
cursor. That's not even a word. So you just need
to place your cursor. like in the section of
a request and hit enter because that's the key
map that you configured yeah yeah well uh i mean
klala comes with uh um with default key maps
i mean they are they are um they are disabled
by default um so you know it doesn't interfere
with people's key maps but You know, I've tried
to choose, you know, key maps that wouldn't interfere
with the other ones. But in any case, if you
enable default key maps, you get a bunch of,
you know, all the commands will be available
for key maps. But basically, you know, in my
case, you just press, you just hit enter and
the request is sent. Wonderful. And how do you
separate sections, like the different requests?
So you separate sections with these three hashes.
So you have three hashes. You can name request.
You can give it a name. So it doesn't matter
if you put a comment there? No, it's actually
quite useful to have a comment there. So for
example, I can open the outline here on the side.
And then if you have given a name to your request,
I have a spelling mistake here. Rest 1, for instance.
Right? Then you have that name here. And also,
when you give your request a name, you can refer
to that request in other requests. You can refer
to it as an object. So you can retrieve some
data from previous requests in your current request.
Okay. Interesting. okay so basically yeah you
know you press enter or you visually select a
few requests that you want to run and then you
run several requests at the same time um you
can you know scroll back in history and you know
get access to all the requests you have done
um there is a bunch of different views for requests
for example you can switch to you know, the reverse
view that will give you the whole information
about the request. You can switch to the script
output or I'll show the script output later.
And how do you execute multiple requests? I noticed,
well, you said that you selected them visually
and then you pressed enter, right? Yes, exactly.
You can select it visually and press Enter. Or
you can use Code Actions to open up all the actions
which are available for Kulala. All the commands
are available to Code Actions. Through the default
NeoVim keymap for Code Actions, usually it's
GRA, or for LazyVim it's LeaderCA for Code Actions.
But, you know, something along those lines. And
here I can choose to send a request or send all
requests. And sending all requests will send
all requests in the file. Oh, okay. In the file
that you're working on. Okay. Yeah. So if you
look at the bottom of my screen now, you'll see
that there's now 10 out of 27 requests or 11.
I skip on counting, you know, the requests are
being run. And if I go to the report section,
for example, I can see... So while it's running,
you can do something else, right? You don't have
to wait for it to finish. Yeah, yeah, exactly.
So while it's running, you can go to... You know,
you can continue working. It will be running
in the background. And then you can see the summary
is there at the bottom. You can see here, you
see requests. 17 requests run, 10 failed. five
successful asserts or failed and then you get
a summary of uh different sessions here okay
so that's pretty cool so you can go back and
see old um results how would you go and look
at the first request that you sent how can you
see the results of that request um so basically
there You know, all the main key maps are at
the top. You know, so there are the letters,
the different letters for switching the different
views. And also you can see in the top right
corner, the two arrows, right and left. So the
square brackets are used to scroll the responses.
That's me, you know, scrolling forward. Oh, okay.
You can see the number there at the top, right?
18 of 31, 19 of 31. Yeah. Okay. Yeah, exactly.
You see the response. And you said, let's say
that you're on this 19 of 31. How did you switch
to verbose mode for this one? So in this case,
it's a V, just letter V. That's it. Okay. And
what is this? What are we looking at right now?
This response. This is where both output, which
is basically all the data that curl outputs during
the request. So you can see it, you know, trying
connected, then exchanging the TLS certificate
data, then sending the payload, then, you know,
getting the response back, and this is the response
itself. Oh, but this is just related to this
particular request, 18 of 31, right? Yeah. yeah
yeah this is the same this is the same request
okay so i see that you scroll there to the top
and we can see the request name that yeah for
both output for that request so you can stay
in this view and scroll the request and then
you know whatever you yeah you can scroll in
any view okay okay all right wonderful and um
what else do you want to demo right so i think
uh You know, there's quite a few features, but
I would say the core ones, you know, we can make
requests. Sure, that's, you know, the simple
thing. Now, we can have scripts for our requests,
so -called pre -request script and post -request
script, which basically means that you can do
a bunch of calculations or checks before running
the request. For example, check if the token
that you have is expired. If it is expired, then
refresh a new one before running the request.
Get the token and then run the request. And then
after the request, you can do a bunch of our
sessions. For example, I have an example here.
I have a request. And then after the request
is done, I'm checking if the response is correct,
if there are some fields in the JSON response.
are sort of correct, which is basically, you
know, very similar to any kind of test framework.
We have a bunch of assert methods for asserting
the responses. So, you know, you can check the
JSON, you can check the headers, you can, you
know, you can do all kinds of checks. And then
when these checks are run, you get a nice -looking
report telling you what has failed, what has
been successful. Okay. So as part of that script
that executes after the request, you could save
data into a text file, for example, right? That
would be done on the post script, correct? Yeah.
Yeah, that is also possible. I mean, you can...
You can save the response data into the file.
You can read from external files to send the
request. You can read the payload from external
files. Also, if you have requests scattered across
different HTTP files, You can import those requests
into your file and run requests from external
files. I mean, that is quite useful too. Okay,
okay, wonderful. And how do you put in secrets
in here? Like, how do you handle that usually?
Right, so that is done with environments. I mean,
usually we support a few different ways of doing
it. So, you know, our main one is the HTTP profile
JSON files. For example, if I open, so this is
the manager for the authentication configuration
to do the auth2 authentication. And so, you know.
you keep your secrets in http profile json file
and that is read when you run the requests okay
okay you don't have any sensitive data here right
no no no i don't this is all test stuff okay
okay so for example um just to give you an example
for example with um authentication um say um
For example, I have a request here to the Google
Drive in order to get a list of files. So first,
just to show, I'm going to revoke the token that
I have. So I'm going to open the authentication
manager, then find this token. This is this token.
I press R to revoke. Okay, so that is... Okay,
so it's revoked already. And then if I press
Enter, Kulala will open the browser automatically,
which will redirect you to the Auth2 authentication
server, where you would need to grant their permissions
to access the resource. So I'm just granting
the permissions to access. google drive now it's
telling us that the code token has been received
you can close the browser now and if we go here
we see that request is done already with the
new token and we got a list of files from google
drive interesting okay yeah yarrow has to explain
because i'm so happy that yarrow did this because
we had to talk about it and yarrow managed to
to get the token He did the extra mile, and when
he does this stuff, he spins up a web server
in Kulala, which is able to receive the token,
right? Yeah, that's right. So the whole authentication
stuff is automated. So if the token has expired,
it will refresh the token automatically. If the
token is invalid, it will redirect to the server
and then grab the tokens or the codes, whatever,
from the server automatically. And then we'll
substitute it into the request. So you just email,
you don't have to do anything. So for example,
just another example, if I change this, you see
we have nice autocomplete working, which is showing
all the available... all the available tokens
that I have in my configuration. So, for example,
I... Is that autocomplete through Blink or something,
or is that something you guys implemented? So,
the autocomplete for Kulala, it's... So, Kulala
has got a built -in LSP server. And basically,
whatever autocompletion you have in your Neobium,
it will pick it up. I mean, in my case, I have
Blink. And you don't need to set up anything.
You just run Kulala, and you have the autocomplete
for Kulala there, which works for everything,
basically. For headers, for values, for variables,
just anything. For all the commands, for example,
if I just do this, you get all the commands and
snippets for all kinds of stuff that you can
do in Kulala. Okay, so this is another package
that you guys developed as well, right? Besides
Kulala .envim, this is Kulala -ls, right? Is
this what we're looking at right now? No. Kulala
-ls, the language server, was originally done
by Marco as a separate project. But lately, I
was playing around in Nevium with LSP servers,
and I thought it would be a good idea to implement
a built -in one. Because the Kulala LS is a separate
project, and if I'm correct, Marko, it's done
in TypeScript, right? Yes, that's true. It's
done in TypeScript, and it's run as a standalone
server. And Colala built -in LSP server is basically
an in -process server. I mean, it's built into
Colala, it's super fast, it's within Nevium,
it doesn't need any external dependencies, and
it doesn't need to spin up an external binary.
So, do we need to still install Colala LS? No,
you don't need to. If you're just using Colala,
you're just fine with the built -in one. take
to for example rest .envim because it's now maintained
um you can just use because they don't have a
lsp but then you can use the coolala one because
it's working with http files so if you have if
you are using any plugin that uses http files
to send requests you can use the the Kulala language
server for it. But if you're just using Kulala
in them as a plugin, you don't have to install
anything beside the plugin itself. Oh, wonderful.
OK. So yeah, I was just about to show, I started
talking about PortaComplete, but what I was What
I wanted to show is, for example, here, if I
change to another token, the device token. So
this is an example. When I run this, it tells
me, okay, I acquired the new token. It opens
up the browser. And then it automatically copies
the code into the clipboard. All I need to do
is press paste. paste it there and then press
continue i choose my account um i grant the permissions
okay and it says continue on your device if i
close this i can see that the request has already
gone through and i got the result and this is
the new token already and then if i if i if i
wanted to i could open up the authentication
manager open up the authentication engine, then
I can press T to go into the private file, and
then here you can see all the stuff that I received
from the authentication server. The user code,
the request URL, the device code, the expiration,
and so on. Okay. You're going to revoke this
after the call, right? They're all shortly done.
They're like 10 minutes or something. Okay. For
the sake of example, of course, we can do it
now. I mean, why not? I can just press R and
that's it. It's revoked. Then I can revoke this
one too. Okay. So that's it. So this is something
new, this authenticator that you just demoed,
right? Can you talk a little bit more about it?
I just want to understand. So basically, you
know, it's the support for auth2 authentication
with all the, basically with all the grant types
that there are there. So it's like, Let's remember
which grant types are there. So client credentials,
password. Okay, it's probably easier for me just
to open up and tell you. So let's just open up
the docs. Lala authentication. So yeah, we support
all the grant types like authorization code,
client credentials, device authorization, implicit
and password grant types. which basically covers
it all. The most convenient thing I would say
is that all the authentication is done automatically.
Things like, I showed you revoking the token,
the automatic refresh, the automatic acquiring
of the token. Also, if you're working with JWT,
you can produce JWT right in Colala. You specify
the... where you specify the details for JWT,
and those will be done automatically. Also, there's
quite a lot of stuff. It's all really well covered
in the documentation, so it's better to have
a look there. Okay. And the documentation, like
the... Most up -to -date stuff is in the plugin
itself, right? So I go into Neovim, open the
documentation for Colala, and I read there, right?
Yeah, yeah. Yeah, it's all there. So we have
a documentation website on the web available,
but also, you know, whenever we push anything,
whenever we push any updates, all the documentation
is updated within Colala itself, inside Neovim.
So, you know, if you just... uh search for colala
in your newbie uh whatever you you know you'll
get it all that okay wonderful so there is there
is also something uh y 'all implemented like
the the base is our documentation website and
we have to keep that up to date but every time
we change something here we have ci pipeline
running which generates all this documentation
then automatically and in the website For the
website, we have to keep it up -to -date manually.
We have to change the documentation there, but
it's also markdown. And once we push this change
of this website, we have a CI pipeline running,
which automatically creates a pull request with
the generated documentation for the plugin itself.
So you can view it in Neowim as well. Okay. okay
wonderful do you have by any chance uh demo arrow
on something basic how would you load um i don't
know a basic request nothing with odd you know
but just um a token like a barrier token or something
how would you load that environment all right
so now let's see if the http uh bin is working
Because it wasn't working today. No, unfortunately,
HTTP is not available. I think the server is
down. But, you know, let me... I mean, I can
also show this, I mean, later on when Yaro finishes
his demo, because if you just want to see obtaining...
bearer token from a service and just using it
to authenticate another service. I can also show
this, but yeah. Yeah, probably a good idea because
most of my examples are with HTTP in bin, which
unfortunately is down today. Okay, that's fine.
You want to switch to your screen, Marco? Yes.
Okay, let's do it. So basically... That's what
you asked about, right? We have an endpoint where
you can run a request like login, and then it
says login successful. You get a token and an
expiry. And with that request, you can access
this endpoint here, which basically is only accessible
if you have a valid bearer token. And it takes
it from the login request, and it says from the
body, from the root node, where there was like
if we run it again we see there is a token node
so we use this as a bearer and then we yeah we
just run this request and we get a successful
response back from the from the api so this is
basically how you really basically do it and
this is something i do all the time at my current
day job because we have an api where we can request
bearer tokens and usually at our company they
are valid for i think 30 minutes but um yeah
we i have to fetch a barrel token with the client
credentials i want to test and then it's the
retrieved client um or the barrel token which
is born to the client i can just make the request
to the other endpoints then but um it's not exactly
the same as i do it at my current day job because
here we are just sending I mean, the login endpoint
is the same, which expects JSON at my current
company, but the other endpoints are GraphQL
endpoints, so they expect a GraphQL query there.
But that's something you can also do with Kulana.
We support GraphQL, we support, I think, Yahoo
Edit WebSocket, and also edit... yeah gmpc yeah
exactly and you also edit streaming right so
you can also yeah the chunk encoding yeah okay
okay and let's say that i have my api key how
do you load it um as environment variables i
don't i'm i usually do this in postman i think
whenever i need to do it so can you guys just
quickly demo for someone that does not know how
do you usually load the key into neovim Do you
put it in a file? How do you guys usually do
it? I mean, I have a... I mean, you should, when
it comes to my opinion, you should put it in
this hdb -client -private -env .json, which shouldn't
be part of the repository then. It should be
git -ignore, but you can also put it in a .env
file because Kulala also supports this. If you
just put it in a .env file and name it whatever
you want, like API, login, password, and you
set their value, it will automatically be available
in your request as this environment variable.
You can do whatever you want, but I think the
way to go is use the HTTP client private env
files because they are more flexible. If you
have a look at them, you can have multiple environments,
like you have in Postman. If you're using just
a .env file, you just have basically one environment
there. Or you have multiple .env files, but it
gets really messy quite fast. So that's how you
would do it, I think. And what I maybe can show
off also is we have, like, you mentioned that
we are a Coolala family, and we have some tools,
also this Coolala FMT, which is a formatter,
but also a converter of some stuff, which we
are also planning on integrating. It's currently
a standalone application, but we are also planning
on integrating it into the Coolala Inven plugin.
And what you can do here is like, for example,
if you have a header which is lowercase like
this, the HTTP spec says that if you're using
HTTP 1 .1, It has to be like, I don't know, I
think it's Pascal, or is it train case, I think.
But nevertheless, it should be uppercase. The
first letter should be always uppercase. I think
it's called train case then. And what the Coulada
FMT does, it also checks this. It checks, okay,
this is HTTP 1 .1, and therefore this needs to
be uppercase. And if I just run and save it,
it converts it to an uppercase then for you.
which makes and it also does something like this
if i have it like here and i save it it puts
it at the top because it oh just knows that uh
it should be uniform as you last time so you
can use it when you're working on a big team
that all your http files are looking the same
okay yeah that's pretty cool actually so what
does coolala what products or Which tools do
you guys have at the moment? So we already saw
Kulala .envim, which is the one that we are using
to run all this stuff. The LS that you mentioned
that you can use it with other plugins is not
needed for Kulala anymore. You talked about this
formatter right now, which would be the other
tool. Is that right? Yes, you can use it to...
format your http files but you can also use it
to if you have a postman collection you can export
it there and you can then import it or convert
it to http files with with the coolala fmt tool
which also allows you to do something like that
or if you have a bruno collection you can also
use this to export it to http files or we also
support swagger or open api specifications so
if you have like an open api specification you
can also create http files from that so basically
whatever you whatever tool you use before we
we have a tool to convert uh the input format
from that tool you use before to http files so
we try to make the transition as smooth as possible
so you don't have to do it manually So you don't
have to create all of your Postman collections
from start. You could export them as HTTP files,
right? In Postman, not, but you can export it
as an, I think it's part of Postman collection.
And it's basically, I think, a big JSON file.
And then you can run a Kulala FMT on it, and
it will just create a collection from that for
you. Okay, that's pretty interesting. And all
of this is in the documentation, I guess, right?
So if people want to know how to migrate from
Postman to Kudala, do they get some sort of guide
in the documentation or they have to figure it
out? I fear that is missing from our documentation
because it's a different tool. I don't know if
we mentioned it somewhere here. I mean, if you
go to just the... We've just been discussing
on our GitHub issues. There's been an idea from
one of the users to integrate the Kulala format
into Kulala, as we have done with the LSP. So
we have an idea how to do that. And once it's
done, basically the Kulala format will be integrated
within Kulala and Veeam. And we'll do a good
job of writing up the documentation. This is
a really good idea in having a separate section
on how to migrate from other products. Interesting.
Okay. Wonderful. Okay. Basically, as I said,
we currently support OpenAPI, which formerly
was known as Swagger, then Postman and Bruno.
And we also have some. But you have to look at
the documentation of the Gulala FMT tool to get
it. I mean, to get to know what you can do. But
yeah, basically that's it. And if we integrated
it, if we're done integrating it into Kulala
Envim, then you don't need to worry about all
this stuff anymore. That's right, because Yaro
is right. We should then have the documentation
also be part of our Kulala Envim documentation.
OK. And the other call that we had. You guys
mentioned other products that are coming in the
future. Anything you want to share about that?
Well, the CLI, I guess. The CLI, I can share
that, which is, I mean, the idea is very simple.
You can run your requests from the command line
by using Kulala engine. So this is just an example
of me running an HTTP request. And basically
you get exactly the same output as you would
have in Envium, but in your terminal. And then
you can switch the views, for example. So here
I can choose, for example, the report view. That
will give you... Okay, the response in that view.
That will give you the report. for example or
you can you know for example you can list all
the requests in the file and uh but you know
so basically basically uh colala with all the
features but in your terminal and uh the great
idea about this is that we're also so we're gonna
be also releasing as well as the cli tool we'll
be releasing the github action So you will be
able to run your HTTP files, which will basically,
you know, you can effectively turn your HTTP
files into the API testing suite by running HTTP
files on the CI with the GitHub action. Can you
give an example on how could users benefit off
of this, like running it in the CI? So, for example,
I mean, if you have your API, right, working,
and you have a bunch of HTTP files which describe
your API, by running those on the CI, you are
making sure that the new changes that you have
made are still passing their assertions. And
you can have a bunch of assertions checking your
API, checking different requests. Okay. okay
wonderful i mean you can do that you can do that
against the staging server for example a dev
server i mean that would make sense okay okay
and this cli is not um out yet it's coming do
you have an idea just in a few days i mean i'm
i'm almost done i just need some i need to finish
all the specs um and i mean this is it's quite
you know soon to be released Okay, wonderful.
I don't want to talk about Kulala only. I want
to get to know you guys so we can talk about
Neovim and all that stuff. Is there something
else that you guys want to demo before we talk
about other stuff? Let me think. You know, I
think the beauty of Kulala is that it's very
simple to use. I mean, we have done a good job
of writing up the documentation and, you know,
tried to keep it as simple as possible, as concise.
So, you know, I urge people to, you know, go
through it. And you might find some jewels that
would really help you in your work. But, you
know, apart from that, Kulala is super simple
to use. And I think that's its beauty. You know,
it's very easy to start. We have... uh on our
documentation website and also within uh within
the kuala reaper there is um there is a bunch
of demo files demo http files uh where you can
just you can run those and get a sense of you
know what can be done in kalala okay okay before
i forget i wrote this down here so if you have
your http file and you have co -workers How does
that work? Like they're not going to be in any
of them probably, right? So can you share the
HTTP file with them so they can run it in other
tools? Can you share a little bit more on that?
I could, I can, because I can share these HTTP
files with my coworkers because most of them
are using VS Code. Some of them are using IntelliJ.
some IntelliJ software. I don't know. Most of
them are probably using the Java IDE or the PHP
IDE, maybe. But also, I don't know what the one
is for Node .js. I don't know what the name is.
But they are, as Yaro also said, we are compliant
with the specs. So you can use these tools. to
also run the http files right so basically for
i i already forgotten yahoo told me last time
we had this talk what the one was for vs code
but i forgotten already again so um the rest
signed i think it's just uh okay but you can
use it and you should be able to run most of
the stuff we see here so okay so you can I mean,
there is a core specification for the syntax
of HTTP files, which is basically, you know,
how to run the request within the HTTP files.
They're separated by hashes. The syntax for pre
-request scripts and post -request scripts. I
mean, it's very concise, the specification. And
all of the different products, they sort of comply
to that. And then different products have got
some extra features which are outside of that
specification. And so what we try to do, we have
chosen one product to be 100 % compliant with,
and that is the IntelliJ HTTP client. We keep
that in focus. So we try to provide... as many
features as possible which are present in other
products, but at the same time keep 100 % compliance
with the HTTP client. I already reached out to
the maintainer of the REST client for this code.
I asked him if there's a possibility that I can
just extend the REST client to be more compliant
so we can also benefit from that. when i'm using
our pretty compliant implementation but my co
-workers are using are using vs code and they
are not able to run the http file it's a mess
for me so i was asking him but he didn't reply
so i don't know maybe he's just busy or something
like that but so that's the good thing that you
use it and you go through these live real life
scenarios and you know what people need and that's
something that users will give you feedback on
so that's great okay okay and one other thing
i want to add is um yarrow is a perfect fit for
me for the project because he's always trying
to push uh the project in like to advance in
the direction where i would be really hesitant
to go because i'm hearing always that we have
a breaking change for example um we we um we
deprecated the syntax we had before with the
named request where we have something like um
a meta tag to add and now we just uh have this
name request like this just three hashes then
the name of the request the legacy one was different
and Yahoo is always pushing a bit more than me
in this direction, and I'm fearing to have breaking
changes for the users, because I don't want to
have a user start on Monday at his day job and
updating his plugins, and it's not working anymore
for him. So that's something I don't really want
to do, because I really feel that in my day job,
too, that I when I update plugins and it's not
working anymore and I can't work today or I have
to fix my plugins first, it's, yeah, it's just...
But you guys have releases, right? So you can
specify the version of the plugin. Yeah, we have
releases. Yeah, we can always... But we are currently
at 5 point something. True. And 5 .2. And the
next thing I think we have to do is also make
a major release because we have a lot of changes.
If we deprecate one of the meta tags or something
like that, we have to do a major release, right?
Because it's breaking changes then. But it's
a good thing. It's a good thing. We have to get
rid of the legacy code. But I'm touching on the
same page. I mean, I hate breaking changes in
software myself. I tend to keep my operating
systems like 10 years old and I don't want to
change them or upgrade. So I'm totally on the
same page. Even though we duplicate something,
I mean, it's still functional. I mean, for example,
this syntax, I took it away from the docs, so
the new users don't stumble over it. But I mean,
it's still functional and backwards compatible.
But I do feel at the same time that there's been
a lot of changes in the last two months. But
I do feel that somehow it's stabilizing, and
sort of the next few versions that we're going
to have, the few minor releases, is all going
to be about stabilization, sort of stabilizing
all the features there. Because even though,
I mean, there's still some bugs creeping up,
and I do feel there are some hidden bugs, which
we haven't caught yet. But, you know, it seems
that the bulk of the features is sort of already
there in Kulala. which is good. We have time
to polish things up. Okay. So you guys try not
to have breaking changes, but, you know, as users,
we understand that sometimes that happens, especially
new users, man. We're kind of used to breaking
changes. Well, I mean... i i you know i think
it's still possible you know to be backwards
compatible and introduce new features um i think
you know we will manage to not to disappoint
our users okay i hope so okay wonderful um what
um what do you need from users do you need for
them to give you suggestions ideas um discussions
start discussions create issues like what do
you expect from the community what would help
coolala uh be better well i mean feedback feedback
and the feedback and feature requests for sure
i mean it's uh sometimes when i look at our issue
tracker with hub and it's empty You know, I have
mixed feelings. Either we are really good at
closing our issues or people just don't care.
Or maybe we don't have any bugs. It has a thousand
stars, 1100 stars. So people do care. Yeah. But
yeah, only four issues open at the moment. Yes.
Go ahead. Sorry. But you know, I'm joking. I
mean, I personally, I love people leaving their
feedback. in any form, so in form of a bug issue
or feature request. I mean, we're always happy
to get feedback, to talk to people on Discord.
We're always there. So for anybody watching us,
guys, come along and say hi. Especially I like
learning about the real -life scenarios that
people are using Kulala in. Because as I mentioned,
I don't use Colala much in my real day job. So
for me, a lot of features that I come up with,
they're kind of theoretical a little bit. And
I really need to do for people to use them and
to tell me how it's coming out. Wonderful. Okay.
So feedback, a lot of feedback is needed. Hopefully.
You will get some feedback from this video. I'm
going to leave the link to this score to the
repo and all of the links. If you guys can just
send them to me and I'm just going to put them
in the video description. Right. So they can
find you guys. OK, so let's move on to other
topics. Then we're not going to cover all of
this because we've been doing this for two hours.
How many minutes do you guys have left? I'm fine.
And you said, Marco? I didn't hear. I have some
minutes left, yeah. Okay. Let's talk Nioven,
if you guys want. Or let's talk operating systems
first. Let's talk about that a little bit. Let's
start with Marco. What's your operating system
of choice and why? Yeah. I know that most of
the people you have on this channel are not big
fans of Windows. I don't have anything against
Windows, but for me to be productive on my day
job, it needs to be Linux. So it's basically,
and especially in this machine, it's Manjaro.
So it's an arch -based distribution. I don't
have anything against Ubuntu, but it's causing
issues for me a lot lately. So it's not that
stable. And I think that is something your previously,
the guest you had previously, the Linux guy,
I don't remember his name, Shastan? Shastan.
Shastan also mentioned that he has the feeling
that Ubuntu is not that stable anymore compared
to Arch. So that's something I can... I have
also experienced so the arch is more stable,
at least on the machines I run. So it's not crashing.
When I screen share, it's not freezing. And that
is what I experienced running Ubuntu, at least
the LTS version. So it's freezing a lot. And
yeah, it's just a pain to work on with this.
So Manjaro is the one that you use daily. Okay,
and your thoughts on Windows? You don't have
anything against it? You're fine with Windows
as well? I personally just use it for gaming,
but I don't have much time for gaming lately.
But when I find time, like once a month or something
like that, I will just boot up my Windows machine.
Then it will just update for, I think, two hours.
And then I have 30 minutes left to game, I think.
How it goes with Windows, I think. Okay. And
what about you, Jero? What's your OS of choice?
You know, I had my fair share of sort of installing
and reinstalling operating systems, compiling
the kernel, trying out different Linuxes and
stuff. And nowadays, I just seem not to care
anymore. Just anything that works. But, you know,
I spend my time mostly in the terminal. So any
operating system that can spin off the terminal,
I'm fine with. Nowadays, it just happened by
accident that I have a Windows laptop. I'm using
Ubuntu on VSL. I'm not picky whatsoever. Just,
you know, anything that boots up Neovium, that's
okay. Okay. And do you work in the Windows terminal?
Do you like using the Windows terminal? Why are
you using WSL? And why don't you use the native
Windows stuff? Oh, just because I'm not bothered
at all. So I got this laptop from my old work,
and it had Windows on it. So the quickest way
would be to install it in WSL. And I just don't
want to, you know, I just don't want to bother
with installing native Linux and so on. I mean,
it works. And I was, to be honest, when I tried
it, and this is like the first time I tried the
VSL, I was really surprised that it just worked
fine. You know, I press install Ubuntu. It installed
it. I installed a few packages and that's it.
It's done. Amazing. Yeah. Cause it takes like
a day to get everything set up and running more
than a day. So I feel your pain. You don't want
to go through all the processes, installing the
next distro, making sure that everything works
and all that. Yeah. Thing is, um, you know, as
I mentioned, I'm, I'm always, uh, I'm always
in the terminal. So I, you know, I don't care
about windows managers. I don't care about the
X. or whatever is used nowadays in Linux for
the graphics subsystem. I mean, a few years ago,
I've never had a Mac in my life. And I thought,
okay, so I've been hearing all my life how Macs
are amazing and I should try them. So a few years
ago, I bought a Mac. And then I realized that
98 % of the time I'm spending in the terminal.
In the terminal, yep. So, you know, why use Magnum?
I donated it to my kids. Okay. Okay. Okay, wonderful.
One last question before we wrap it up. Let's
talk about Neobim for a little while, right?
So you mentioned, Jaro, that you started using
Neobim last year. Is that correct? Yeah, last
year in October. That was the first time I've
ever seen Neobim. And why? Why did you decide
to keep using NeoVim and not just go back to
what you were using before? So I mentioned that
I've been on a pause from software development
for a few years. And I used to use Vim before.
And I was super happy with Vim. I used Vim for
ages. Well, not for ages, but I used Vim for
like, I don't know, eight. eight years or so
eight or ten years maybe um and then this time
going back to software development i decided
to try something new and also one thing is that
i always hated vim script you know i just could
not stand it i would touch it only to configure
my vim and that's it and i would try to stay
away as much as possible from it so when i found
out that there's a there's a new room which has
lower built -in i thought i should try it And
then, you know, I've never tried Lua before,
but I loved it. It was love from first sight.
You know, I spent a few days configuring NuVim.
I really liked Lua. And then I started developing
the plugin for myself called Lua Console, which
is basically a REPL for Lua within NuVim. And,
you know, I just loved it so much. And that's
what really made me... go into developing Kulala,
really. It was Neovim and Lua from the start.
Okay. And how has your experience been, Marco?
How long have you been using Neovim? That is
something I can't really remember. I had to look
it up when I started. I started using Vim in
2012. I had to look and... The last mode I had
on that was from 2012. So I made the switch then.
And I also made the switch from a German keyboard
layout to the US international layout then. Because
at first, I just started using Neowim. And then
I was like, OK, it's so much pain to use the
German layout with the usual movement. square
brackets and curly braces and all this stuff.
They are so hard to type on a German layout that
I was like, okay, I have to figure out some way.
Maybe it's easier if you have some different
layout. Then I started looking into all these
keyboard layouts and I've settled on a US international
and it was a good choice, at least for me at
that time, to just use this. And I think Yahoo!
just never used any else than US International,
right? So I was... Okay. Yeah, that's... But
2012, it was when I started using Vim and also
VimScript, but I have to also admit I really
dislike VimScript. Maybe the newer iterations
are better, but the old ones are really... It's
not fun to write anything in VimScript. And at
some point, I don't really remember. I think
it was... it wasn't the primogen or tjd freeze
or something like that i can't really remember
somebody else i watched on youtube just um advertising
near them and i think or even i don't really
i can't really remember but i think it has to
be around 2016 or something or 2017 would that
be what since when it's around is a new one around
since 2017? Let's see. NeoBeam start date. It
says here 2014 according to the Google AI thing
that I don't trust too much. But it could be
that it's 2016 or 2017. Okay. So, yeah. But I
really like the newer approach as well. Okay.
All right. So I guess we can finish the call
here. It's been almost three hours. We're tired
already. So anything you guys want to share before
we end the call? Well, I have to say a big thank
you to all our users for all the positive, well,
for all the feedback, but especially for the
positive feedback. they're hearing from you guys
things like well i love your plugin i used every
day well done i mean that's a great motivator
uh but you know we'd love to to get new feature
requests we'd love to get some feedback and you
know develop new features and looking forward
to it all right you marco any final words i can't
add anything it's wasted by yahoo so i can't
add anything to it so it's the perfect yeah um
ending okay okay guys so thanks for your time
thanks for reaching out and sharing all of this
information about coolala i will use it i don't
have the need right now i will definitely use
it and i will provide feedback as well Okay.
I can't think that you, I mean, if you start
using, I mean, even if you're just using Kulala
for your development of your website or something
like that. And if you have an API, I mean, basically
you need to use something like Postman or in
this case, you can also use Kulala then, right?
Because. Oh yeah, definitely. When I'm working
on something, I'm going to teach Postman and
Kulala is going to be my first option for sure.
Okay. Yep. And I probably will come with. come
up with ideas and stuff like that and let you
guys know. I think one thing we haven't mentioned
in this talk, but Marco did say it from the beginning
last time, is that the most people know is Postman.
I mean, it's quite natural that people compare
Colala with Postman. And I think the main difference
is that while providing a very similar set of
features, or maybe providing pretty much the
same feature as Postman. But at the same time,
we're open source. We're free. We are very customizable.
I mean, people are customizing Colala themselves
and adding things that it doesn't have. But at
the same time, we are super open to new features
and new ideas. So, you know, whenever you need
something for your workflow, tell us and it will
be done pretty quickly. And that's the biggest
difference. We're not a big company. We're just
two guys at the moment. And we really like what
we're doing. Yeah, and try to come up with a
suggestion to post, man. It's not going to happen
anytime soon if it happens, right? But you guys
seem to be implementing features quite fast.
So, yeah, that's wonderful. I do apologize for
some bugs which do creep up from time to time.
But yeah, it happens. I don't know, is there
a saying in English? Because in German we say,
wo gehobelt wird, da fallen Späne. Which means,
if you really do some work, there will be some,
there will be things breaking or something like
that. I think that's quite true, at least when
it comes to Kulada. We have some regressions
sometimes because We are moving quite fast. So
there are, I mean, we have tests, but sometimes
they still break something if we implement a
new feature or something like that. So, yeah.
Okay. Okay. All right, guys. Thanks for your
time. Thank you for having us. Bye -bye. Bye.
Bye.