To be fair, the bug report was utterly useless too.
True, when i respond with the exact problem it usually gets fixed, interestingly even explained why it failed.
Great for learning
It was trying to is, then it isn’ted. Help?
Should have asked chatGPT to write the bug report.
Literally why docker was invented
I have a love/hate relationship with docker. On one side it’s convenient to have a single line start for your services. On the other side as a self-hoster it made some developers rely only on docker meaning that deploying the stack from source is just an undocumented mess.
Also following the log4j vulnerability I tend to prioritize building from source as some docker package were updated far later than the source code was.
The Dockerfile is essentially the instructions for deploying from scratch. Sure, they most likely only exist for one distro but adapting isn’t a huge chore.
You can also clone the repo and build the container yourself. If you want to update say, log4j, and then attempt to build it, that’s still entirely possible and easier than from scratch considering the build environment is consistent.
If I’m updating the source code already I might as well build my service from it, I really don’t see how building a docker container afterward makes it easier considering the update can also break compatibility with the docker environment.
Also adapting can be a pita when the package is built around a really specific environment. Like if I see that the dockerfile installs a MySQL database can I instead connect it to my PostgreSQL database or is it completely not compatible? That’s not really something the dockerfile would tell me.
I really don’t see how building a docker container afterward makes it easier
What it’s supposed to make easier is both sandboxing and reuse / deployment. For example, Docker + Traefik makes some tasks so incredibly easy and secure compared to running them on bare metal. Or if you need to spin up multiple instances, they can be created and destroyed in seconds. Without the container, this just isn’t feasible.
The dockerfile uses MySQL because it works. If you want to know if the core service works with PostgreSQL, that’s not really on the guy who wrote the dockerfile, that’s on the application maintainer. Read the docs, do some testing, create your own container using its own PostgreSQL or connecting to an external database if that suits your needs better.
Once again the flexibility of bind mounts means you could often drop that external database right on top of the one in the container. That’s the real beauty of Docker IMO, being able to slot the containers into your system seamlessly due to the mount system.
adapting can be a pita when the package is built around a really specific environment
That’s the great thing about Docker, it lets you bring that really specific environment anywhere and in an incredibly lightweight manner compared to the old days of heavyweight VMs. I’ve even got Docker containers running on a Raspberry Pi B+ that otherwise is so old that it would be nearly impossible to install the libraries required to run modern software.
I love Docker because it is the only sane method to selfhost shit with my Synology NAS, and I love my Synology NAS because it is the only Linux interaction that I have (from my old MacBook Pro).
Yeah, it “solved” the “it works on my machine” by bundling the machine with the code.
Man, I really was interested in that topic, but that guy really can’t do talks.
Docker has been a savior.
Now we just need to run docker inside the browser
Ah-ah! Now that’s progress!
Every time I hear this from one of my devs under me I get a little more angry. Such a meaningless statement, what are you gonna do, hand your pc to the fucking customer?
…yes? I thought we made that clear with containerization
It’s not actually meaningless. It means “I did test this and it did work under certain conditions.” So maybe if you can determine what conditions are different on the customer’s machine that’ll give you a clue as to what happened.
The most obscure bug that I ever created ended up being something that would work just fine on any machine that had at any point had Visual Studio 2013 installed on it, even if it had since had it uninstalled (it left behind the library that my code change had introduced a hidden dependency on). It would only fail on a machine that had never had Visual Studio 2013 installed. This was quite a few years back so the computers we had throughout the company mostly had had 2013 installed at some point, only brand new ones that hadn’t been used for much would crash when it happened to touch my code. That was a fun one to figure out and the list of “works on this machine” vs. “doesn’t work on that machine” was useful.
doesn’t understand that this is a useful first step in debugging
reacts with anger when devs don’t magically have an instant fix to a vague bug
Yep, that’s a manager
deleted by creator
They did it! They passed the turing test!
Then we’ll ship the AI.
…what do you mean, all the ICBM silo doors are opening?
But it doesn’t even compile!
“You literally just wrote ‘kill all humans’ and put it in curly brackets.”
“So, did your program fail after you executed it? Or do you just think my code looks wrong?”
If you keep inquiring like this, it will send the terminator personally to have you exterminated
The AI is taking over us
Last bug report I received: “What did you do to my app?”
You know what, this is on us. Chat GPT is just a prediction engine that tries to say what words it thinks follow a preceding prompt, and it’s looked at millions of examples (written by us) and it’s seen hapless clients and users complain about bugs and be told: “user error, works fine” so often chatGPT just thinks it’s just the culturally accepted polite response to a bug report, in the same way as responding to “thank you” with “you’re welcome”. This is a dark mirror on our profession.