But if you need to project (transliterate to ascii) Arabic, Russian or Chinese, unidecode is close to black magic:
>>> from unidecode import unidecode
>>> unidecode("北亰")
'Bei Jing '
Anyway, always remember that str.encode(), str.decode(), open() and many other related callables have an "errors" parameters that allow you to deal with unkown solutions when encoding or decoding:
I'll conclude with the mandatory "use Python 3" (3.7 if you can, it has many utf8 fixes: https://vstinner.github.io/posix-locale.html), since you'll be in a world of pain if you deal with non-ascii in Python 2, and EOL is next year :) Tic, Toc...
> But how does that prevent severe service degradation
It doesn't. You DROP the most specific thing you can. To avoid collateral damage we are able to do "Scattering" (move client across IPs with the hope the attack won't follow), and for example apply the controversial limits only in certain geographical areas (anycast network allows this).
> you still have to do some kind of work (in computation and energy) on the listening side
Yes. BPF for L3 works like charm. Read on XDP.
> or can fat edge-servers just eat that up?
Yes and no. You have to specifically optimize, whatever you do probably won't make Apache or IIS work under DDoS. Most vendors use "scrubbing centres", when they can have small number of beefy dedicated servers. We didn't find this architecture sufficient though, so in our case edge servers do handle the load. But we do spend time on tuning the servers and our applications.
> It was in about the third hour of using the new BlackBerry KeyOne, available for preorder now for $549 unlocked, that I started to question my longtime preference for touchscreen keyboards.
I'm surprised it took that long. Bret Victor explained it best:
I call this technology Pictures Under Glass. Pictures Under Glass sacrifice all the tactile richness of working with our hands, offering instead a hokey visual facade. Is that so bad, to dump the tactile for the visual?
Try this: close your eyes and tie your shoelaces. No problem at all, right? Now, how well do you think you could tie your shoes if your arm was asleep? Or even if your fingers were numb? When working with our hands, touch does the driving, and vision helps out from the back seat.
Pictures Under Glass is an interaction paradigm of permanent numbness. It's a Novocaine drip to the wrist. It denies our hands what they do best. And yet, it's the star player in every Vision Of The Future.
I don't disagree with your points but your timeline fudges the timescale quite a bit. I've researched this [1].
Facebook Chat went live 2008-04-06. Google didn't view them as a threat in messaging but a threat in social networking; they thought they had messaging in the bag with their 2008-09-23 release of Android 1.0, and their 2008-11-11 update to Google Talk which brought voice and video calling, and their 2009-03-11 acquisition of GrandCentral, which was soon rebranded an invite-only Google Voice. But Facebook kept growing and growing and it had an integrated chat on a website where people went to spend their time, instead of Gmail, where they went to manage email.
To combat Facebook on social networking, Google launched Buzz with aggressive auto-opt-in on 2010-02-09. Buzz fizzled and attracted controversy for its aggressive piggybacking on Gmail, so Google tried again with Google Plus on 2011-06-28. That was a better effort, and it included the features "+Messenger", a text chat, and the video chat "+Hangouts". By this point Facebook had more than 700 million active users, and won messaging handily; its lead was cemented by the acquisition of WhatsApp on 2014-02-19, as Google continued to flail about.
In a post of mine last year [2] (which includes an older revision of the timeline linked in [1]), I speculate that it was Facebook Chat that killed the mid-2000s chat networks of old like AIM, Yahoo Messenger, and WLM, rather than Google Talk or any particular missteps of those incumbent chat networks. For example, I was surprised to learn that AIM was present in the iOS App Store at launch -- of course, there were no push notifications at the time -- not until 2009-06.
You can use the query below (or something similar) to narrow results to include keywords found in popular discussion boards (modify it to suit your needs):
The technical merits and drawbacks of XMPP aside, deployment only works if there's an appetite from deployers. For high-visibility consumer chat that average people use, this appetite has vanished.
Around the mid-2000s, IM networks started getting tired of constantly changing their protocols to thwart third-party reverse engineering efforts like Microsoft logging into AIM, libpurple (Pidgin), or Trillian. But then Google Talk appeared [1] in 2006 inside the coveted invite-only Gmail, supporting XMPP, and significantly raised the bar.
So interoperability became a tool to maintain market share. The underdogs WLM and Yahoo started seamless interop [1] in July 2006, while Google Talk and AIM started a limited interop [1] in 2007. AIM briefly dabbled with XMPP it in 2008 [2] (great source -- see comments for AIM's response).
In the meantime, Facebook opened up for everyone, introduced Chat and rapidly lured away the myspace/AIM generation, becoming a major player in chat. Facebook introduced XMPP in February 2010 [3] but discontinued it [4] in 2015 after having deprecated it the year prior. This neatly coincided with their announcement to monetize the Messenger ecosystem, in ways that require a captive client [5].
Other vendors are similarly pursuing monetization within the client -- Snapchat and Kik as a content portal [6][7][8][9], Google as a context-aware assistant, Microsoft is lost at sea, Whatsapp as a Facebook data mining scheme, the Asian apps as a combination of all other techniques and microtranactions -- when anyone can bring a third-party client, their monetization strategy suffers. This makes XMPP's deployment future exceedingly bleak, perhaps restricted solely to corporate deployments.
roenxi's law: "In any sufficiently advanced bureaucracy, all oversight degrades to tautology".
We did it therefore it was right otherwise we wouldn't have done it. Case closed.