nikaro

joined 1 year ago
[–] nikaro@jlai.lu 6 points 2 months ago

And no smartphone in your pocket, of course.

[–] nikaro@jlai.lu 18 points 2 months ago

You can use KeePassXC (with a dedicated vault or not), synced by another mean (Nextcloud, Syncthing, Git, etc.).

[–] nikaro@jlai.lu 9 points 4 months ago* (last edited 4 months ago)

Certainly not the best, but codecademy is decent. After that, it should be enough for you to learn more deeply from official Python documentation, actual Python code base (from OSS repositories), and specific subjects from blog articles.

But it will highly depend on what type of content you like. For example some people may prefer books over interactive courses. If this is your case, i think this one is recognized as a very good one: https://learnpythonthehardway.org/python3/

[–] nikaro@jlai.lu 11 points 4 months ago

Except the ecosystem, how is terraform better than opentofu? As far as i know, currently they still are almost identical.

 

I'm looking forward to switch from Terraform to OpenTofu, but i have the impression that the ecosystem around it didn't catch up yet.

Did any of you already did the switch? If so, what do you use as a replacement for Terraform Cloud, the VSCode extension and/or terraform-ls?

For Terraform Cloud, the are many options: scalr, spacelift, etc. Spacelift looks nice as it can also run Ansible, but Scalr seems to have a better and simpler UI.

But on the editor side, there doesn't seem to be much... the VSCode extension has been forked but it still seem to be in its early days (cf. this issue: it still uses terraform-ls under the hood, which itself looks for the terraform binary).

[–] nikaro@jlai.lu 4 points 1 year ago

Nice! It looks like the best solution out there.

[–] nikaro@jlai.lu 4 points 1 year ago* (last edited 1 year ago)

Python >= 3.10 version:

def foo(return_more: bool) -> DataType | tuple[DataType, MoreDataType]: ...

But i would definitely avoid to do that if possible. I would maybe do something like this instead:

def foo(return_more: bool) -> tuple[DataType, MoreDataType | None]:
    ...
    if return_more:
        return data, more_data
   return data, None

Or if data is a dict, just update it with more_data:

def foo(return_more: bool) -> dict[str, Any]:
    ...
    if return_more:
        return data.update(more_data)
   return data
[–] nikaro@jlai.lu 1 points 1 year ago

The difference is that with Protocol you can define which method presence you want to ensure. Like i said: custom vs. generic.

[–] nikaro@jlai.lu 1 points 1 year ago (2 children)

From what i understand, Protocol is for custom interfaces that you define (this object must have do_x() method), while ABCs are generic (this object is iterable).

[–] nikaro@jlai.lu 2 points 1 year ago

Yup, that's what i would also do.

 

This is like Interface in Go (or Java, i don't speak Java but the article say so).

[–] nikaro@jlai.lu 0 points 1 year ago (1 children)

Yeah we are better served with pedantic nerds that thinks they know IaC better than some top engineer at an IaC vendor 🤷

[–] nikaro@jlai.lu 1 points 1 year ago

Ok i think i get the point. A "generic programming language" could be used as a "domain specific language" in some context. Is that what you mean?

[–] nikaro@jlai.lu 1 points 1 year ago (2 children)
 

TLDR: terraform bad, pulumi good

view more: next ›