It is their project, but no company will use it if it’s broken on Windows.
It is their project, but no company will use it if it’s broken on Windows.
I learned Python and regular expressions to download hundreds of pictures from 4chan. Good times.
God. I didn’t knew that Drew was such a language nazi. If you want to write a Go clone, it must be useful for everyone. Even Emacs is available on Windows officially.
That’s a good reason. I used my Java skills to crack a shareware (a solitaire game) because I had no money.
Ruby because it was the first popular Japanese language. I wrote a few useful scripts and it was nice. Then it was swallowed by Rails, and killed by Python. No one uses it around me but it was fun.
AI spam I guess.
Maybe try to detect or feel if the person in front of you is really a nice person or if he’s faking it.
The last HR guy I met was so nice to me and enthusiastic that it was really suspicious. I had met real psychopaths before and I was careful. But in the end, he really wanted to take care of the coworkers, and it took me one whole month to understand this.
I’ve been working for almost 10 companies in 20 years, and I have only found 2 drama free workplaces so far. It’s random and I don’t think there are signs that could show you whether a job is good or bad.
Most HR people are happy when they hire you but it usually means nothing, sorry.
Last but not least, drama free could also mean “we’re gonna fire everybody in a few months,” which makes the choices more difficult to make.
Issues: bad code. Smell: future bad code.
Not OP. I ended up using hatch to make packages because it’s simple and does everything without feeling like a jumbled mess of tools like Poetry. It feels unix-like and didn’t prevent from doing my job.
In regular “semantic versioning” (the most popular), there is no build number.
Thanks. I like helping for stuff like that.
Last but not least: when you make a lot of small changes, always do:
This way you won’t get lost. And don’t fix everything at once. Make a list of small changes and do that one at a time.
Also to make development easier:
Besides the duplication of standard code, I see this kind of mistake all the time. If your code can be reduced to “return path.exists” it’s an alias that shouldn’t be there.
My random shitty opinion, don’t take it personally, I didn’t slept well, also I’m late for work:
README: you use both py and python3, choose one because I’m confused! Also you say “Navigate to ./src/” No, I’m a lazy user and I want instructions that I can copy-paste, it’s always better when you clone a random project (especially at work) and be able to copy-paste, like:
py -m pip install -r requirements.txt
cd src/
py main.py
Be affirmative! Also “This will install pip” could be wrong on most systems, remove that sentence if not true.
Still in the README, why should I run the thing from src? Is your application broken if I I do “py src/main.py”? What happens?
It seems like the GUI and the code that watermarks are mixed and that’s annoying. If it was clearly separated, you could make a command-line versions of your application in 5 minutes without changing the GUI, for example with argparse.
Why is there so much code to set the layout in main.py? Put that stuff in Layout, I don’t want to see that in my main. Also do “def main(): …” and “if __name__ == ‘__main__’” or something, it’s cleaner, and it prevents errors if I “import main”
Do you really really need all those members variables? I understand that Tk is weird, but ImageManager has 12 members, main has 3 instead of 1 (the main “Window”), and Layout has a billion members. For example total_columns and total_rows are not used in Layout.py, that’s confusing. ImageManager.SAVE_DIR and IMAGE_RESIZE_FACTOR are constants, move them out. DEFAULT_FOLDER is only used once, merge it with TEST_BG, that kind of thing.
ImageManager.path_is_valid is useless and potentially harmful because you’re duplicating standard code, remove it and use path.exists, no need to replicate the standard library, and other coders know what’s inside the path module, they don’t know what’s in your code and why it’s different from the standard modules because they’ll think “if it’s there, it must do something special!” (but it’s not special at all here)
Ideally you shouldn’t put testing code in your main code. TEST_BG and TEST_FG will have to be removed. I understand why it’s there, it’s faster for your test, but it always show that the architecture has flaws. For example here, it shows that you forgot to make it possible to load those things on the command line, like main.py --test-bg space.png --test-fg python-watermark.png
or better main.py --bg space.png --fg python-watermark.png
, see? You have the beginning of a command-line application!
On GitHub you have 6 branches, that’s madness. Merge them all one at a time, or delete them. Too many experiments are not good.
You commit messages are good and expressive, that’s nice! Also I see that you used the standard .gitignore for Python on GitHub, that very nice and way better than doing one from scratch who will miss a lot of stuff.
I’ll come back later if I can.
Edit: there is hardcoded paths “/home/mike/code” and no default pictures, I can’t test it right now, that’s something to fix too.
And very very expensive.
I liked the answer that I once saw here: “Real men do whatever the fuck they want.” No one cares about this kind of judgmental assholery.
Don’t forget to ask what is the other possible value(s) if the scenario doesn’t happen, because that is something forgotten most of the time.
I used pygit2 a few years ago and it was easy. Can’t complain.
Back when Nginx started, Apache was the only alternative and a big pain in the ass. That’s how it became popular.