In other news, the new Google Drive for Windows also uses wxPython as its Desktop GUI framework (wxPython is a Python wrapper for wxWidgets, a cross platform UI C++ library).
I'd be happy if we migrated to Blazor and it lasted for 10 years. Kudos to AngularJS, which is still on LTS until the end of 2021.
It might as well happen with Blazor, if it's kept further maintained as a part of .NET normal release cycles for years to come, and won't be stripped out in some next major release.
> "TypeScript does use JavaScript constructs but has a lot more in common with C# ... It’s fairer to say that TypeScript is a C# superset, with some JavaScript limitations, which compiles to JavaScript."
Lol. As someone who's reasonable good at C#, when I started learning TypeScript, I made that common mistake of approaching it as something similar to C#. Boy was I wrong, it's a totally different language and philosophy, and the prior knowledge of C# actually serves a bad favor here.
Thanks! I'm totally with you on Electron, as I've mentioned earlier in this thread. Ironically, Electron was turned down because the team didn't like the idea of coping with C++ (required for low-level custom add-ons). WebView2 with C# was also on the table, but that'd be a big overkill IMO. Then, WPF: https://dev.to/noseratio/the-signs-of-wpf-currently-being-on...
Thanks for your thoughts! I've been mostly involved with Electron lately and I'm a believer in all-HTML UI. For this project though, Electron was ruled out.
I've actually come to understand the appeal of Electron recently. CSS is an amazing tool for styling and something like WPF + CSS would be a great tool IMO if it existed.
That is partially incorrect, STUN can punch a hole through even when both sides uses NAT in many cases. That is what I would classify as STUN’s main feature.
Note that parent said “ if both peers are behind NAT without UPnP”. As far as I know, there’s no way to punch holes / open ports automatically without UPnP.
You send outgoing packets simultaneously from both sides. Causing both sides to add nat translation entry’s to their nat tables. When the packets arrive both sides already have nat translation entries and the packets go right through the nat.
Punching holes doesn't work only when network devices in between are broken or are actively preventing it.
From the network point of view it looks the same as two hosts starting an outgoing TCP connection through nat - if that works then hole punching should work too.
Not TCP. UDP - there are no connection in UDP, so the routers / firewalls don't really differentiate between a new connection and packets that happen to have the correct ip+port.
Some are trickier than others, as there are 2 IPs and 2 ports in a packet (at any point), and it can be hard to match all of them for the stricter devices, esp. on NATs that do source port randomization.
https://www.google.com/intl/en_au/drive/download/