Our next speaker is Jose Miguel, and he's talking about his six months with Nick's
and Devon, round of applause for the speaker.
Good morning, and welcome to this talk.
I'm Jose Miguel, thank you for the introduction, I work for the software engineer for
the website's scalar in Valencia and Spain.
I've been on Nick's use for Nick's use for more than four years, actually I started
just before the pandemic.
So while I was in lockdown, it was challenging just to do interviews with soon, without knowing
how to properly set up my computer, but fortunately those times have gone.
You can find me on social networks with J.M.D.F.
This talk is about what I did for the last, now more than six months, migrating
a Linux project that I have set up on Nick's source into a MacBook OS X because by company
policy, I was not allowed to use it because we needed to run some private
software that was available on Linux.
The second motivation that I had was I need to spend a lot of time on OS X, but I don't want
to miss Nick's source.
Some context, it was not the first time I had to work with MacBook, I tried the other
people at a package manager for OS X, like Homebrew, MacBooks, like a source that is
natively for net BSD, but it also works on OS X, but I wasn't particularly happy
with that experience, I always found some problems that I didn't like too much, because
I was happy on Nick's and Nick's source, I knew that there was an option to run it for
Darwin, OS X platform, I decided to give it a go.
For some time, I was having a second life at work where we have the official repository,
but I was reproducing that repository with Nick's.
I started working with GoLang and Node.js projects, and that was relatively straightforward.
Just follow with the official documentation in the Nick's website, I also allow to work
with the typical Nick's here, let's see it there.
So now I wanted to reuse as much as possible, because I invested some time on getting that
done.
Yeah, I was happy with the simple setup, because it was relatively straightforward to jump
into different projects, nowadays we need to work with different technologies, it's not
likely in the old days where I used to spend almost of your time doing C development or
Java or .NET, and now we need to do kind of that development, but also do some operations,
some infrastructure, it's a great city there.
Yeah, what I had, I wanted to be portable, not only from Linux laptop, but Macbook, also, I wanted
to share it with MacoLix.
So the journey has started.
Yes, first thing is, I need the Nick's, for that, I decided to go, that was my second
time.
With the 10-minute assistance installer, previously I used the official Nick's installer,
but I had problems with OSX, and that particular case was a Mac mini running in the
interlocutor, because every minute I upgrade, I had almost just to start from scratch.
The upgrade didn't work smoothly, I had to jump into rescue mode, etc., so I wasn't very happy.
The terminus assistance started, they promised that they survived the upgrades, and that's
true.
I did two upgrades with no issues.
Then, I went for a mini-monset app, getting the smaller configuration to get a working
Nick's station.
That's in mind, because I wanted to encourage MacoLix to use it.
The good thing about Nick's is that it can call if with your existing setup.
So if you are used to a way of working, like, I don't know, using the social with plenty
of plugins, you don't need to port it into the Nick's configuration, just keep it that
way, and slowly, the more comfortable you feel with the tune, you can slowly narrate it,
and benefit from the features that Nick's provides.
Yeah, just running the command is I applied a configuration, I have Macbook on a working
state.
Because I think it's really fast, honestly, it was done in 10 minutes when normally setting
up a new laptop when I was changing projects to half a day or a day, this time I decided
just to go for a home manager to manage my user configuration.
Previously on Nick's, I was happy with the standard configuration, just system white.
I was trying different approaches like Stowe or Chamois, similar tools, just to manage
my dot files.
But because I finished it after 10 minutes, I decided to leave.
I have the rest of the afternoon, and probably MacoLix or MacoLix are not going to complain,
because it looks like I'm working.
So I left home manager in the next hour, and I have to say that is straightforward.
Yes, follow the destruction, to get it working.
And most of the time you spend it just broke with the documentation, finding the right option
to get what you want to map or to configure.
Please, Nick, so you said, I was, I knew about DRAMF.
Honestly, you don't need to use it, but I highly recommend it, because it simplifies your life a lot.
It can replace NVM, all those funny scripts to manage different projects, versions, etc.
Also, it saves me a lot of time, because I don't need to repeat this in common,
like load source, these environments, etc.
With DRAMF, I got that for free.
And I wanted to keep it.
It's a sort of found ways working with Nick, because the submission before,
the hello world is always very easy to follow.
We're not part of the goal and not the knowledge projects.
It was relatively straightforward.
But as soon as we, I learned it on more complex projects where we had to mix different languages,
the documentation was not clear enough, so that they can invest that time,
but I'm going to have a very hard time convincing people to use it.
So, just posting for the different solutions I discovered about DRAMF,
looked on paper like the right solution, the clarity,
if possible, composable development environments with Nick.
So something like working with Docker, without Docker.
So there were some.
Well, of course, you need to store different in it,
but because I have home manager, I just added that package,
I play the configuration, and I got it.
I market an optional, because I don't use that particular command as frequently as in the beginning,
because I just ported most of the projects we are working with.
But we need to modify that file.
In it, it's going to create several files like techniques,
a flag, and a lock file, and a M3RC for learning special variables.
And I'll leave a comment every time you load the environment,
just pay attention to the messages.
Because, for example, when I was working with our telephone player,
it was not for free, because it was the time to change the licenses.
So it stopped working, stack trace,
yeah, we can occupy most of the display.
But there is a very clear message that,
okay, it seems that this software is not free,
so you need to do this.
Follow the example and it works.
For example, when they upgrade a new version, it's said that,
okay, you need to upgrade your inputs, just run this command,
and it's going to work again.
So, when you run the finit,
or you have the modify version of that file,
they have done a very good work,
just document in the different options.
But I'm going to focus on the ones that have been more relevant to us
for the last months.
Oh, packages.
But that's the key, is you declare essentially your dependencies.
It has been a pain in some projects,
because people didn't update the gridmfile,
so the data, the dependency,
they don't say anything about it,
which is covered in the hardware,
is just expecting that line,
you can see everything that you need.
And because if you don't want to use the event,
and need, okay, you can find those software on your own,
and install it, it should work.
Because one motivation that I had is,
until doing a full migration,
we don't want to force people to use this tool.
We want them to be productive,
and keep working the way they're doing.
I'll further mention that those packages
can be listed on the set.nixors.org,
just make sure that it's available for the Joraki architecture.
Another thing, language is,
I love that that one,
because previously on the package section,
I had to list all the different tooling,
like I want to use this language.
I don't know.
Ok, it's all ok, it's all ok,
or they have this built tool, okay,
added the tool.
Now I need the link,
etc.
So, it becomes a very long list.
With language, it's just enabled.
The default option,
normally quite good.
Then you get the compiler,
everything that I mentioned for free.
I do need to care about it anymore.
And of course, on the official event website,
you can find extra options,
like let's say that you need a particular version,
or a particular package,
or some flux, etc.
If they are supported, you can use it.
With that way,
so very cleanly,
the problem of working with different languages,
without digging too much into the next language.
And scripts.
That's an intersection that I like a lot.
You can see them as kind of areas.
So you put a fancy name or something that is meaningful,
and you don't need to worry too much about the details,
or what's doing behind.
Most of our players,
we have, we maintain make files.
That has been worked very well,
because you have a clear way of what you need to do.
We highlighted the main task,
typically make build or make run.
For the rest,
the make file was relatively easy to expect.
We wanted to keep that thing.
But with scripts,
I was able just to mimic that behavior.
Just following,
I had that they have on the official documentation.
I was able just to print automatically,
all the scripts.
So when you land on the project,
you load the environment,
and then you see that they,
okay, this is the important task that I need to do,
or to follow, to work on this project.
I highly recommend you to invest some time on it.
Services.
Well, it's provides an abstraction
to work with different tools like it can be
a database, a QC system, a web server,
a city that is support,
the event,
supports plenty of the most common services
of this kind of tooling.
Here I'm providing an example.
We are for this project.
I want a gross SQL database.
I want to launch a web server,
because probably serving some kind of front-end stuff.
With this aspect,
I was able just to sort the typical program
that a 3 developer was managing this tooling in a different way.
If they know how to do it, it's okay.
But eventually there are some problems that they,
or I need your help because this is not working for me.
Let's dig into the problem.
What's the version that you are using?
Why are you installing this way?
I wanted to stop supporting customized setups
and just to provide a standard for everyone.
The collaborative,
it works the same way on Linux,
or transparent Linux on OS X,
because previously when I was on Linux,
most of these services are managed with systemD,
probably all my colleagues,
the way I use it,
dedicated the message scripts,
etc.
So everyone was on their own.
With this approach,
everything is working on the same way.
We didn't find any surprises.
Benefits.
Okay.
Tom, just 30,000 over there,
is that all your works,
when you have derived inable.
Otherwise, you need to run the venture,
which is going to land you on an isolated environment
with Vashil,
only access to the dependency that you have
declared on the package section,
etc.
So, yeah.
You're going to miss all the customization
that you have outside,
but it's okay.
We want you to have a very simple project.
Well, the reproducible
in the sense that if a friend or colleague
clones the repository,
they're going to see the same behavior,
the launch of the web server,
then you're going to start
as soon as it's not colliding with a
a port or anything similar.
Well, that gave us a
push improvement,
because instead of waiting,
several tens of minutes to get something in
working is,
you just do the,
the equivalent of our make build
in less than a minute of working.
So,
set it in half.
I have instructions.
Yeah, I think that in the event
they have done a very good work,
just crafting that
five,
where you only can
about services,
scripts, two link packages,
but you,
they are high in the complexities of the next language.
And,
I like that.
Just over there,
we got the,
we have provided the enough context
to work on the project.
You don't need to keep it on your head,
which is,
tiring,
prone to error.
Unfortunately,
there were some bad parts,
as well.
On next packages,
they have done an amazing work,
14 and making plenty of software to be available.
But not all packages are available for OSX,
or for the architecture,
or the platform working in.
Particularly,
I had a bad time,
because I needed to use a tool
to do some scan on,
Linux images.
It was only available on Linux.
So,
I couldn't use Mac for that.
Give me the skills to try to get back to Linux,
but for 12,
video work.
When you go to this,
for example,
on the set.nix.org,
and you find your package on the overview,
they mention the architecture,
and the platforms that packages is available.
All the different versions.
Yeah,
it seems that the package,
that's over,
or this process on the other channels.
In this situation,
it was,
we don't know exactly the record,
but we wanted to use the latest version of go.
We knew that it was available on the,
available on the next channel,
but for those of them,
about just two minor versions behind.
Photonative was,
after a couple of weeks.
So,
I try to make it as fast as I go.
Time for questions.
All right.
Thank you.
We still have a bit more time for questions.
ahead of that,
the speaker for the next talk,
the remote execution with back to Claudio Blake.
All right.
We're going to try to have somebody talk to you in the break now,
or maybe during the next talk.
All right.
Thank you.
Okay.
Yeah.
Okay.
So, is there a question?
Yeah.
You mentioned there are relatives around services,
like post-grads.
He's really different.
What happens if I have two questions here, actually?
What happens if I have one question?
What happens if I run?
Two projects is the same time.
Each of them requiring both your stuff there are.
Will they class on a board?
Yes.
Can I configure that?
Yeah.
Exactly.
So, I'll give you the question.
Talking about the services,
the question is about the,
can I want two players at the same time that they are using the same service?
And if they are going to collide?
Yes.
For example, for the post-grads,
maybe...
You can try to customize it just to use the same board,
but at a different database, because that's a way issue door.
But clearly for NGNX,
no, you'll need to have declared a different post.
I have to say that I discovered that recently,
but the thing provides, probably with the latest version,
a different talk, local.
So, that's why it's not going to be,
I have to keep the repository.
It's intended to have your customizations.
So, over there, you provide,
I want it to use this board so I can do exactly that.