• 0 Posts
  • 41 Comments
Joined 1 year ago
cake
Cake day: July 1st, 2023

help-circle





  • gornius@lemmy.worldtoLinux@lemmy.mlWhy do you use the terminal?
    link
    fedilink
    arrow-up
    2
    arrow-down
    3
    ·
    6 months ago

    If you know how to use git, you will know how to use docker (provided you know what you want to do). They are completely different programs, yet you can quickly grasp the other instinctively.

    Now, Photoshop and Blender - they are also different programs, but if you know Photoshop, you still need to relearn Blender’s interface completely.

    This is why I prefer terminal programs in general. Unless it’s more convenient to use GUi, i.e. Drag&Drop file manager, some git tools etc.


  • gornius@lemmy.worldtoSelfhosted@lemmy.worldShould I move to Docker?
    link
    fedilink
    English
    arrow-up
    13
    arrow-down
    1
    ·
    7 months ago

    Learn it first.

    I almost exclusively use it with my own Dockerfiles, which gives me the same flexibility I would have by just using VM, with all the benefits of being containerized and reproducible. The exceptions are images of utility stuff, like databases, reverse proxy (I use caddy btw) etc.

    Without docker, hosting everything was a mess. After a month I would forget about important things I did, and if I had to do that again, I would need to basically relearn what I found out then.

    If you write a Dockerfile, every configuration you did is either reflected by the bash command or adding files from the project directory to the image. You can just look at the Dockerfile and see all the configurations made to base Debian image.

    Additionally with docker-compose you can use multiple containers per project with proper networking and DNS resolution between containers by their service names. Quite useful if your project sets up a few different services that communicate with each other.

    Thanks to that it’s trivial to host multiple projects using for example different PHP versions for each of them.

    And I haven’t even mentioned yet the best thing about docker - if you’re a developer, you can be sure that the app will run exactly the same on your machine and on the server. You can have development versions of images that extend the production image by using Dockerfile stages. You can develop a dev version with full debug/tooling support and then use a clean prod image on the server.



  • gornius@lemmy.worldtoProgrammer Humor@lemmy.ml***
    link
    fedilink
    arrow-up
    67
    arrow-down
    1
    ·
    7 months ago

    Framework has multiple config files, allowing you to customize almost every aspect of it.

    Nooo, this is too much config files, they take up too much space in my project tree.

    Framework is a monolith with a single file to configure it.

    Nooo, the file is unreadable and developing extensions for it is annoying.

    Framework is minimal

    Nooo, it doesn’t have any useful built-in features.

    Framework is a complete solution without too many things to configure.

    Nooo, it doesn’t allow me to do what I want.






  • If you’re a beginner:

    I almost gave up programming once, I thought I was too stupid.

    Then I learned Linux and figured out starting out in IDEs as a beginner is the worst thing you can do. It doesn’t teach you anything, it just lets you get the job done - the thing that you should avoid while learning.

    If you can’t build your software with only CLI - you probably have no idea how technology you’re programming in works.

    If you are intermediate:

    Reinventing the wheel is a great way to learn how libraries you’re using actually work.


  • gornius@lemmy.worldtoProgrammer Humor@lemmy.mlPHP is dead?
    link
    fedilink
    arrow-up
    11
    arrow-down
    1
    ·
    8 months ago

    The language itself is not that bad. Especially the newest releases are really great, thought out DX improvements. What stinks are its legacy parts and how it needs to be run.

    My biggest pain is that for it to actually behave like it should it requires some sort of an actual web server like apache or nginx.

    Also, servers written in are actually request handlers - every time a request comes, the whole app is reinitialized, because it just can’t hold its state in memory. In many apps every request means reinitializing connection with database. If you want to keep some state, you have to use some caching mechanism like redis or memcached.

    Also had one time when Symfony app was crashing, because someone forgot to close class braces, and everything was “working” until some part of code didn’t like it and was just dying without any error.

    And one time when someone put two endlines after php closing tag at the end of the file, confusing the entire php interpreter into skipping some lines of code - also without warning, and only in specific php version.


  • Why do you need Windows VM for developing GUI apps? Last time I used Visual Studio to make GUI app I almost gave up programming, because of how code-generation dependent it was.

    For C# you have AvaloniaUI. For cpp you have countless multi-platform GUI toolkits, same for rust, Java has its own toolkits (multi-platform), and finally you can make an Electron/Tauri app.


  • The way for your desktop to communicate with the hardware.

    It used to be X11 - A server-client architecture, which meant your desktop was effectively just a client that told the server what to do. The server was the one doing the drawing

    Wayland is just a protocol, defining how programs and desktop should communicate with each other - without a middleman that was X11 server. The desktop does the actual drawing here.



  • Lockfile contains exact state of the npm-managed code, making it reproducible exactly the same every time.

    For example without lockfile in your package.json you can have version 5.2.x. In your working directory, you use 5.2.1, however on repo, 5.2.2 has appeared, matching your criteria. Now let’s say a new bug appeared in 5.2.2.

    Now you have mismatched vendor code, that can make your code behave differently on your machine, and your coworker’s machine, making you hunt for bug that wasn’t even on your side.

    Lockfile prevents that by saving an actual state of vendor code.