WhatsApp, AV1, Access, CGI PUT, projects, Tkinter
- WhatsApp engineering team capability: Once again frustrated by teams of elite engineers, how hopelessly incompetent they can be. Things like audio file seek on WhatsApp are totally broken. If that's too hard for their engineering, it's quite ridiculous to think that security would be good at all. It's just general impression what's their level is. And if it's that bad, well what would you expect from more complicated things like security. Btw. That's realyl annoying that you cant seek media files.
- Read interesting post about using modern video codes to compress still images as single key frame. That's quite nice. It seems that AV1 is much better image compressor / codec than JPEG. It would be awesome to have AV1 based lossy image compression algorithm widely supported, because it's not patent encumbered. Ref: AV1
- Best practices for user account, authorization and password management. I agree, and got nothing to add. They clearly know what they're doing. I've been annoyed by bad authorization and bad websites so many times.
- Python 3 CGI PUT Can't handle binary data: TypeError: write() argument must be str, not bytes File "\lib\cgi.py", line 561, in _init_ File "\lib\cgi.py", line 740, in read_single File "\lib\cgi.py", line 762, in read_binary File "\lib\tempfile.py", line 483, in func_wrapper - It seems that PUT method isn't supported with CGI. Because client delivers raw binary data. That's interesting. Seems that I've found a bug in standard library. Of course when uploading a binary file, it's bytes, not str. Honestly, I wasn't expecting this to fail. Anyway, workaround is not to use any framework and just get the required request data from environment and read read as binary from stdin.
- It's not hard to understand who some standard organizations and governmental organizations end up creating such an incredible mess. In one project, there were several groups designing the project. And the end result was seemingly random mash on more or less correlated decisions. -> Huge steaming pile of junk. Because each group and team did something, without talking to other teams and phew, yuck. I guess most of guys working with larger projects know this all too well. And this is exactly what I mean when I've complained about not thinking the whole at all, when building something. - I guess this is like building jigsaw puzzle by giving each team piece of cardboard and telling them to cut it to some shape and draw something on it. At the final stage, the teams arrive in a single room and now they can do just some minor adjustments by making one cut to each piece and then they need to assemble the jigsaw puzzle. End result is, well, I guess you know what it is. Of course if the number of teams is high enough, it could even resemble something like mosaic art of work, but lol. - Which seems to be the unfortunate norm, with many projects.
- It's so nice to make things you haven't done usually. It's nice to learn things. Until something extremely simple, turns into something totally enraging. Like in this case, very simple thing like Python Tkinter close window. Yes, sure. Exit main loop and destroy works. But if user doesn't click close in the application, but closes the window, then everything crashes. That doesn't really matter, in technical terms, program was terminated and that's it. But it's not great after all. I guess I'll have to create a few new classes and maybe change the whole workflow, if the Window X button should work. As stated if user presses in application close button all is good. These are just things, which are hard to debug, often badly documented, and requires 10000 tries, and even if you find a way which works, it still might be fatally flawed or totally wrong. - Sigh. Well, I shipped version which crashes, but so what. It doesn't affect the business process or value at all. Maybe someday, I do have very simple program which works with the X button, but it's constructed differently. So that just confirms that the larger project is somehow fundamentally incorrectly constructed. I guess the main problem is that I'm using the same class for the code as well as the ui. Something goes wrong with the destructor call and that's it. Anyway, tkinter is iffy anyway. And crashes often. If destructor isn't called exactly once. Two calls, crash, no call, crash. Duh. Extremely simple, yet hard, annoying, time consuming and frustrating.