Category Archives: sw

youtube-dl – an absurd, sad situation

What follows is my briefest introduction to “copyright”, as I limitedly understand it, followed by my personal thoughts on yesterday’s RIIA initiated DMCA takedown of the project “youtube-dl” from github.com.

The full request for the takedown of “youtube-dl”, and many of its forks, is at
https://github.com/github/dmca/blob/master/2020/10/2020-10-23-RIAA.md

Intro
“Copyright”, from an economic perspective, is a set of monopolies given to creators, to incentivize “creation”. The rational for these incentives is that creation is hard, failure-prone, and copying is relatively trivial.
However, if these monopolies were excessive, for example lasting “forever”, then creators, their heirs, or to whom the rights/monopolies were sold, would constitute a permanent bottleneck between the creation and the opportunity for society, as a whole, to benefit from it, with unrestricted freedom. Thus, the monopolies are time-limited – they have an expiration date.

There are also exceptions in the law. In the USA, “fair use” is the chapter to read, to understand exceptions. For example, showing a copyrighted video to a class of students, in an educational context, will likely be valid.
In Europe, exceptions are similar – international treaties signed by most countries have “harmonized” national copyright systems -, but include explicitly enunciated use-cases, that bypass the chance of litigation and will not require a judge to interpret particular situations as “fair use” or not, namely some learning acts at public libraries.

The creator alone has the exclusive rights to decide who/what can be done with the creation; if/how it can be modified, and if/how it can be distributed. Societies, in the so-called “Knowledge Economy” we are living in, will mostly progress fueled by better knowledge, so creators are the professionals that modern societies need and “Copyright” law must keep evolving to keep the proper balance between the creators’ rewards and the societal benefits.

The “DMCA” (Digital Millennium Copyright Act) is one of the many changes that Copyright law incorporated, in the USA. However, it is an ugly one, because until year 2000 clean reverse engineering practices would probably be legit, and since then, if for bypassing certain TPMs (Technology Protection Measures) that can “compromise” the creator, they might not be.

My thoughts
Clean reverse engineering practices usually are extraordinary innovations and should not be barred. The perverse effect of making certain TPM-defeating processes illegal, even when identified cleanly, with absolutely no access to the source intellectual property, is that the knowledge of the available bypasses will rest in the hands of the very few who do manage to find them. The chance for improvement is lost and asymmetries intensify, with solutions only available to few, definitely not available to the entire community, leaving most under the false believe that the current fruition model is the single possible one. This has fueled “bug bounty” programs, thus contributing to alternative reward systems.

These are very hard topics to discuss lightly, and this post sure is light. But, right now, I find it very negative, wrong on many levels – economical and intellectual -, damaging for all in the long-run, and intensely disrespectful for the thinkers, writers and coders involved, that RIIA is attacking years of hard labored source code developed by a community of intellectuals.

The “youtube-dl” source code has probably done nothing more than to promote the exact same artists that, allegedly, are being hurt by it. This is truly unfair. Have common sense! Some of the referenced artists themselves should take a good look at the mirror and try to assess if these tools are taking food out of their tables – what they are indirectly doing, is taking the creation pleasure out of the lives of innocents, who just enjoy creating software. Have some decency. Live and love, and let live and love.

I also tweeted about this:
https://twitter.com/my_dot_com/

Solution to the "Google Arts and Culture" app "tap to refresh" issue

Google has done more for the world, than any other company I can think of. It is easy to blame “big tech” companies for all that is wrong – and as I write, there is a very visible protest against Facebook – but the truth is that “humans are only humans”. We will always find ways to misuse contents and technology in general, refuse to take the blame, and then ask others for solutions.

This constantly happens, at very different scales. Parents, religious groups, organizations of different shapes and forms, blame what they think is “wrong” with their kids, affiliates, members, etc., on the music they listen, the movies they watch, the books they read, the apps they use; the people they communicate with, the news they (do not) read, etc.
The opportunity to, alternatively, take a good introspective look at the mirror, is rarely taken. It is easier to find scapegoats.

These companies and ad agencies that, today, are taking the hypocritical path against Facebook, will do it to Google, to your company, or to yourself (!) tomorrow. They are oversimplifying extremely complex social questions and, with that, doing more harm than good. Our world is not trivial. Isolated hashtag reactions are some of what is wrong in human behavior. It is required to go beyond the hashtag.

This post is about one of the many wonderful products and services that Google offers. It is not about “search”, “Gmail”, “Classroom”, “Maps”, “Earth”, “Android”, etc., but about something less known, yet equally relevant and loveable: the “Google Arts and Culture” app.
Of course, with the current trends, it is only a matter of time before one of these wonderful offerings to become under negative scrutiny, either because someone will find horrible things when searching, have sensitive data compromised, or encounter “indecent art”.

So, enjoy the “Arts” app while you can, if you can. I could NOT, until understanding and fixing the “tap to refresh” issue. This issue consists in a blank screen telling you to “tap to refresh”, to no avail.

The “Google Arts and Culture” app, is a wonderful effort, to help people learn about, and connect with arts and culture. In many countries, it will be localized enough, to be based on the local arts/culture. Unfortunately, in my case, the app did not work at all: it would launch, display a “tap to refresh” message, and systematically fail on every attempt to continue.

I investigated enough of the app behavior, to understand that the failure was because of the unavailability of certain network resources:
(1)
I had my filtering proxy configured to ignore http(s) requests matching the pattern

*.ggpht.com

, which in the past served me well, to block certain image-based ads. If I want to use the app, as it is, I must unblock that pattern.
(2)
A second network resource that must be unblocked, for the app to work, is the domain

google-analytics.com

. In my case, I had configured my private DNS to translate requests matching

*.google-analytics.*

to 0.0.0.0, not to the real IP address. Again, that served me well, for many years, not only against ads, but mostly against a plethora of user-behavior tracking techniques. In this case, I am disappointed of having to unblock google-analytics. In the future, I will research for a different solution.

Doing (1) and (2) enables the app “Google Arts and Culture” to function.



google_arts_and_culture_00_permissions_768.jpg
https://arturmarques.com/wp/wp-content/uploads/2020/07/google_arts_and_culture_00_permissions_768.jpg (image/jpeg)

google_arts_and_culture_00_permissions_768.jpg


google_arts_and_culture_app_03_running_768.jpg
https://arturmarques.com/wp/wp-content/uploads/2020/07/google_arts_and_culture_app_03_running_768.jpg (image/jpeg)

google_arts_and_culture_app_03_running_768.jpg


google_arts_and_culture_app_02_tap_to_refresh_768.jpg
https://arturmarques.com/wp/wp-content/uploads/2020/07/google_arts_and_culture_app_02_tap_to_refresh_768.jpg (image/jpeg)

google_arts_and_culture_app_02_tap_to_refresh_768.jpg

Technical Details
  • ./ups/2020-07/05/ARTURMARQUES_DOT_COM_WP_AMAM/google_arts_and_culture_00_permissions_768.jpg
    • attachment_id : 1079
    • date_created_gmt : 2020-07-05 18:06:02
    • parent : 0
    • link : https://arturmarques.com/wp/wp-content/uploads/2020/07/google_arts_and_culture_00_permissions_768.jpg
    • title : google_arts_and_culture_00_permissions_768.jpg
    • caption :
    • description :
    • metadata :
      • width : 809
      • height : 1045
      • file : 2020/07/google_arts_and_culture_00_permissions_768.jpg
      • sizes :
        • medium :
          • file : google_arts_and_culture_00_permissions_768-232×300.jpg
          • width : 232
          • height : 300
          • mime-type : image/jpeg
        • large :
          • file : google_arts_and_culture_00_permissions_768-793×1024.jpg
          • width : 793
          • height : 1024
          • mime-type : image/jpeg
        • thumbnail :
          • file : google_arts_and_culture_00_permissions_768-150×150.jpg
          • width : 150
          • height : 150
          • mime-type : image/jpeg
        • medium_large :
          • file : google_arts_and_culture_00_permissions_768-768×992.jpg
          • width : 768
          • height : 992
          • mime-type : image/jpeg
        • post-thumbnail :
          • file : google_arts_and_culture_00_permissions_768-672×372.jpg
          • width : 672
          • height : 372
          • mime-type : image/jpeg
        • twentyfourteen-full-width :
          • file : google_arts_and_culture_00_permissions_768-809×576.jpg
          • width : 809
          • height : 576
          • mime-type : image/jpeg
      • image_meta :
        • aperture : 0
        • credit :
        • camera :
        • caption :
        • created_timestamp : 0
        • copyright :
        • focal_length : 0
        • iso : 0
        • shutter_speed : 0
        • title :
        • orientation : 0
        • keywords :
      • type : image/jpeg
      • thumbnail : https://arturmarques.com/wp/wp-content/uploads/2020/07/google_arts_and_culture_00_permissions_768-150×150.jpg
      • id : 1079
      • file : google_arts_and_culture_00_permissions_768.jpg
      • url : https://arturmarques.com/wp/wp-content/uploads/2020/07/google_arts_and_culture_00_permissions_768.jpg
    • ./ups/2020-07/05/ARTURMARQUES_DOT_COM_WP_AMAM/google_arts_and_culture_app_03_running_768.jpg
      • attachment_id : 1080
      • date_created_gmt : 2020-07-05 18:06:05
      • parent : 0
      • link : https://arturmarques.com/wp/wp-content/uploads/2020/07/google_arts_and_culture_app_03_running_768.jpg
      • title : google_arts_and_culture_app_03_running_768.jpg
      • caption :
      • description :
      • metadata :
        • width : 809
        • height : 1045
        • file : 2020/07/google_arts_and_culture_app_03_running_768.jpg
        • sizes :
          • medium :
            • file : google_arts_and_culture_app_03_running_768-232×300.jpg
            • width : 232
            • height : 300
            • mime-type : image/jpeg
          • large :
            • file : google_arts_and_culture_app_03_running_768-793×1024.jpg
            • width : 793
            • height : 1024
            • mime-type : image/jpeg
          • thumbnail :
            • file : google_arts_and_culture_app_03_running_768-150×150.jpg
            • width : 150
            • height : 150
            • mime-type : image/jpeg
          • medium_large :
            • file : google_arts_and_culture_app_03_running_768-768×992.jpg
            • width : 768
            • height : 992
            • mime-type : image/jpeg
          • post-thumbnail :
            • file : google_arts_and_culture_app_03_running_768-672×372.jpg
            • width : 672
            • height : 372
            • mime-type : image/jpeg
          • twentyfourteen-full-width :
            • file : google_arts_and_culture_app_03_running_768-809×576.jpg
            • width : 809
            • height : 576
            • mime-type : image/jpeg
        • image_meta :
          • aperture : 0
          • credit :
          • camera :
          • caption :
          • created_timestamp : 0
          • copyright :
          • focal_length : 0
          • iso : 0
          • shutter_speed : 0
          • title :
          • orientation : 0
          • keywords :
        • type : image/jpeg
        • thumbnail : https://arturmarques.com/wp/wp-content/uploads/2020/07/google_arts_and_culture_app_03_running_768-150×150.jpg
        • id : 1080
        • file : google_arts_and_culture_app_03_running_768.jpg
        • url : https://arturmarques.com/wp/wp-content/uploads/2020/07/google_arts_and_culture_app_03_running_768.jpg
      • ./ups/2020-07/05/ARTURMARQUES_DOT_COM_WP_AMAM/google_arts_and_culture_app_02_tap_to_refresh_768.jpg
        • attachment_id : 1081
        • date_created_gmt : 2020-07-05 18:06:08
        • parent : 0
        • link : https://arturmarques.com/wp/wp-content/uploads/2020/07/google_arts_and_culture_app_02_tap_to_refresh_768.jpg
        • title : google_arts_and_culture_app_02_tap_to_refresh_768.jpg
        • caption :
        • description :
        • metadata :
          • width : 809
          • height : 1270
          • file : 2020/07/google_arts_and_culture_app_02_tap_to_refresh_768.jpg
          • sizes :
            • medium :
              • file : google_arts_and_culture_app_02_tap_to_refresh_768-191×300.jpg
              • width : 191
              • height : 300
              • mime-type : image/jpeg
            • large :
              • file : google_arts_and_culture_app_02_tap_to_refresh_768-652×1024.jpg
              • width : 652
              • height : 1024
              • mime-type : image/jpeg
            • thumbnail :
              • file : google_arts_and_culture_app_02_tap_to_refresh_768-150×150.jpg
              • width : 150
              • height : 150
              • mime-type : image/jpeg
            • medium_large :
              • file : google_arts_and_culture_app_02_tap_to_refresh_768-768×1206.jpg
              • width : 768
              • height : 1206
              • mime-type : image/jpeg
            • post-thumbnail :
              • file : google_arts_and_culture_app_02_tap_to_refresh_768-672×372.jpg
              • width : 672
              • height : 372
              • mime-type : image/jpeg
            • twentyfourteen-full-width :
              • file : google_arts_and_culture_app_02_tap_to_refresh_768-809×576.jpg
              • width : 809
              • height : 576
              • mime-type : image/jpeg
          • image_meta :
            • aperture : 0
            • credit :
            • camera :
            • caption :
            • created_timestamp : 0
            • copyright :
            • focal_length : 0
            • iso : 0
            • shutter_speed : 0
            • title :
            • orientation : 0
            • keywords :
          • type : image/jpeg
          • thumbnail : https://arturmarques.com/wp/wp-content/uploads/2020/07/google_arts_and_culture_app_02_tap_to_refresh_768-150×150.jpg
          • id : 1081
          • file : google_arts_and_culture_app_02_tap_to_refresh_768.jpg
          • url : https://arturmarques.com/wp/wp-content/uploads/2020/07/google_arts_and_culture_app_02_tap_to_refresh_768.jpg

        Ridiculous Twitch, or how I went 2FA with Auhty

        Today, my Twitch login process was one of the most ridiculous web interactions ever! As usual, Twitch sees every new browser session (cookies cleaned, no memory of the previous visited sites) as a “new device” and forces the user to provide a 6-digit code, to complement the user-password challenge. Unfortunately, those 6-digits came via email, and sloooowly, with a latency of minutes between the code request and the arrival of the corresponding email message. Maybe due to this latency, every time I entered the correct code, Twitch reacted as if I was writing the wrong number. Very frustrating.

        At some stage, I finally succeeded and took the opportunity to change my Twitch security settings:
        https://www.twitch.tv/settings/security

        I decided to enable two-factor authentication (2FA), which means a second authentication challenge, after the user-password. First, I provided a phone-number, which indeed got associated with the account, but future logins will require not a SMS sent to the phone number, but a code generated by the “Authy” app, Twillio’s (twillio.com) equivalent to “Google Authenticator”.

        When I first started using 2FA, SMS seemed the best option: I controlled the number, it required no extra app, so it was simpler, and that was – and is – something of great importance!
        Unfortunately, as many are bound to find, sooner rather than later, SMS is now considerably insecure and more prone to failure than using time-sensitive security apps. The top reason SMS has failed me in the past, was phone-network operator restrictions, temporary phone-network traffic issues, and/or other reasons strictly under the phone-network operator control: there were situations when I needed a SMS in 30 seconds, and it would never arrive that promptly. That was the day when I quit SMS for app-based 2FA. The data comes from an operator agnostic network – the Internet.

        Nowadays, SMS should be a second choice, relatively to Authy and equivalents, not only because of not depending on one specific phone-operator network, but also because the system is more vulnerable, with increasingly more documented SIM-card hijacking events.



        twitch_02_code_correct_but_not_accepted_02_768.jpg
        https://arturmarques.com/wp/wp-content/uploads/2020/07/twitch_02_code_correct_but_not_accepted_02_768.jpg (image/jpeg)

        twitch_02_code_correct_but_not_accepted_02_768.jpg


        twitch_03_code_correct_and_accepted_768.jpg
        https://arturmarques.com/wp/wp-content/uploads/2020/07/twitch_03_code_correct_and_accepted_768.jpg (image/jpeg)

        twitch_03_code_correct_and_accepted_768.jpg


        twitch_04_2fa_about_to_be_enabled_768.jpg
        https://arturmarques.com/wp/wp-content/uploads/2020/07/twitch_04_2fa_about_to_be_enabled_768.jpg (image/jpeg)

        twitch_04_2fa_about_to_be_enabled_768.jpg


        twitch_05_2fa_on_768.jpg
        https://arturmarques.com/wp/wp-content/uploads/2020/07/twitch_05_2fa_on_768.jpg (image/jpeg)

        twitch_05_2fa_on_768.jpg

        Technical Details

        Microsoft Teams – an UNPLEASANT experience

        Due to professional matters, I am now sometimes required to remotely meet with others, using “Microsoft Teams”. Having had previous experience of other synchronous communication tools, namely Discord and Zoom, I expected (1) a similar setup process, and (2) a similar “collaboration experience”.

        Regarding (1), the setup, I expected that it would be a matter of downloading some installer, creating a product related account, and logging-in. It was not that smooth, but close.

        I am on Windows 7, feeling no need to update to Windows 10, and not using Office365. Still, “Teams” provided an OK installer, with all the necessary files – not one of those “mini installers” that will later require further downloading. Get it at:
        https://www.microsoft.com/en-us/microsoft-365/microsoft-teams/download-app

        In my view, “mini installers” are nothing but a barrier to one’s end, so it was a good start. But there are annoyances: the user is given no option regarding where the files are to be installed. In Windows 7, “Teams” installs to:

        C:\users\<you user name >\appdata\local\microsoft\teams\
        

        And, at least three files will require Internet access, without previous warning:

        C:\users\<your user name>\appdata\local\microsoft\teams\update.exe
        C:\users\<your user name>\appdata\local\microsoft\teams\current\teams.exe
        C:\users\<your user name>\appdata\local\microsoft\teams\current\squirrel.exe
        

        Notice that Squirrel is an open source project, which is great to see, and highly contrasts with Microsoft’s closed attitude regarding most of its own products. It also uses the NuGet package manager and exhibits some reported security weaknesses. Check https://www.bleepingcomputer.com/news/security/microsoft-teams-can-be-used-to-download-and-run-malicious-packages/

        Software security is a subjective topic: you can have the most insecure piece of code, and nothing bad will ever happen to your digital assets, if, for example, you isolate it in such a fashion that it cannot communicate with other software and/or access relevant data. For that, you could use some sandbox approach and/or a firmly closed firewall and network infrastructure.
        On the other hand, you can have a supposedly “secure”, no issues known, software, and relax on the data/network/firewall environment protection, ending up in a situation that is as dangerous, if not more. It is the “unknown unknowns” that often cause the most serious problems.

        After the installation concluded, it was only a matter of minutes for creating firewall rules, before “Microsoft Teams” was ready to launch.

        The next step – account creation – was, and is, confusing to me: to use “Teams”, one must have an account, but what exact type account it must be, is a mystery. It seems to depend on intended usage and even invitation source. If one arrives to “Teams” with an invitation to meet with an organization running a full featured Office 365 subscription, then the account requirements might different from those creating an account on his/her own. In fact, if a user answers that he/she will be using “Teams” to meet with “friends and family”, the installer aborts and suggests “Skype”!
        At one point, I was creating a “Microsoft account”, redirected from a previous live.com account login. When reentering the login data, I was told that my password’s length was “too long” – I then understood that entirely new credentials were being created. I now have multiple Microsoft.com accounts, some work for gaming, some work for mail, some work for Microsoft Teams, only. I am confused, but that is probably just me.

        When the software finally accepted the account, and displayed the correct “team” with whom I was to collaborate with, I thought that was the end of all barriers and we could start working together. Naive.

        Regarding (2), the “collaboration experience”, I took the following notes.

        I usually record all my sessions. When using “Zoom” (https://zoom.us) it is easy to understand what one is doing and it simply works: one can choose to record to the cloud, or to a local storage path. No cloud for me.
        Similarly, I expected “Microsoft Teams” to allow the user to choose where to record the session, either via settings, or upon ending a recording. There is no such option in settings, so I started recording, only to discovery that every stream is automatically uploaded to:
        https://web.microsoftstream.com/browse
        where it will remain available to, at least, everyone in the hosting organization, not private to the creator, or even private to the team that was running the meeting! This is quite surprising.

        This recording behavior was not obvious to me and, I assume, to many others. From what I could perceive, people interpret “Microsoft Teams” recordings, as private digital assets, for their exclusive consumption. As previously stated, it is not like that: the recordings automatically become available to all the members in the hosting organization. I dared browsing some of the streams available in my context, and I wonder if some of them are not accidental: people might not be aware of their publication, because the software is opaque by design and does not make it explicit the properties and privacy level of such recordings.
        It was also a pain to delete my own accidental video: not trivial at all. I had to Google how to do it and did not take note of the procedure – it would have been useful right now, to complement this post.

        One visual annoyance is the lack of control “Microsoft Teams” gives the user, regarding adjustments to the audio and video devices used during the meeting. For example, if light conditions change and one wants to make the camera image brighter or darker, there is no in-software control for that.
        Unfortunately, the same goes for all other synchronous collaboration tools I have used, and what was different in “Teams”, in my particular case, relatively to other solutions, was the “zoom” level of the camera. I was using a webcam with a very wide lens and “Teams” locked it, on the widest possible view angle, unveiling more than what I intended of my surroundings. The zoom level on other software is set above the widest angle; here, it is set at the widest value, with no control available to tune it. All I can say is that, regarding video, all these synchronous collaboration tools could take a lesson from the free and open source software “webcamoid”, which gives the user full control over all the exposed device settings.

        It seems that others have already complained, to no avail:
        https://microsoftteams.uservoice.com/forums/555103-public/suggestions/32559460-camera-adjustments-in-meetings

        One final disturbing design option is the “invite” system. People who participate in a meeting have to be “invited”, yet the invite comes from Microsoft ( Microsoft Teams ), not from the meeting “creator” him/herself. To me, this is a “NO GO”. This is control hijacking. Avoid.

        If I were to choose, I would not pick “Microsoft Teams” as a collaboration solution over any of the others I have experience with. Microsoft centralizes all the process, from the invitations, to the session recording, with no alternatives given. This is not polite: it steals users crucial freedom and control.

        In a single paragraph: Microsoft Teams is opaque by-design, frustrating to use, inferior in the relevant features to the known alternatives, and hijacks the teams’ freedom, centralizing invitations and recordings.

        If you can NOT play remote audio, locally, via RDP, using Firefox

        I connect to many different computers, using Microsoft’s “Remote Desktop”, using “RDP” (Remote Desktop Protocol). It is not common for me to need to play, locally, the audio from the remote computer, but sometimes I do.
        Today, I successfully played, locally, remote audio using the Chrome web browser. Unfortunately, when I tried to do the same using Firefox, I only got silence.

        The solution:

        1. In Firefox’s address bat, enter “about:config”
        2. Accept that you understand the “risks” of configuring Firefox
        3. Change the value of the security.sandbox.content.level setting to 2 (in my case it was set to 5
        4. Restart Firefox

        My favorite MP3TAG scripts

        I use the free (as in “libre”) “mp3tag” software for tagging my music.
        I was having a hard time with the file names of certain tracks with many artists and/or with too long album names, so I had to figure the internal scripting mechanisms of the software, for adequate file naming, from the music-embedded tags.

        Fortunately, this open source tool provides good and succinct documentation for the task, available @ http://help.mp3tag.de/main_scripting.html

        What follows, are my favorite naming strings. You enter them from the “Convert” menu, “Tag – Filename” option.

        If you want to make sure that an album’s name is never longer than 32 characters, use this code for the album’s name part:

        $if($geql($len(%album%),32),$left(%album%,32),%album%)

        If you want to make sure that an artist’s name is never longer than 24 characters, use this code for the artist’s name part:
        $if($geql($len(%artist%),24),$left(%artist%,24),%artist%)

        In case of multiple artists for a single track, if you want to take only the first artist name, assuming the tags separate the names with commas, use:

        $if($eql($strchr(%artist%,’,’),0),%artist%,$left(%artist%, $sub($strchr(%artist%,’,’),1))))

        For the track numbering, if you want to force a specific number of digits, say 2, use this:

        $num(%track%,2)

        Now, combining all the above, here are the full scripts I actually use.
        For the format “first artist name – album name no longer than 32 chars – track number with 3 digits”:

        $if($eql($strchr(%artist%,','),0),%artist%,$left(%artist%, $sub($strchr(%artist%,','),1))) - $if($geql($len(%album%),32),$left(%album%,32),%album%) - $num(%track%,3)

        For the format “artist name up to 24 chars – album name no longer than 32 chars – track number with 3 digits”:

        $if($geql($len(%artist%),24),$left(%artist%,24),%artist%) - $if($geql($len(%album%),32),$left(%album%,32),%album%) - $num(%track%,3)

        For the format “album name up to 32 chars – first artist name – track number with 3 digits”:

        $if($geql($len(%album%),32),$left(%album%,32),%album%) - $if($eql($strchr(%artist%,','),0),%artist%,$left(%artist%, $sub($strchr(%artist%,','),1)))) - $num(%track%,3)

        It may be helpful.

        URLs "p1" 20190801 – 69 VHQ resources

        I am an avid WWW surfer, with hundreds of websites visited each month, sometimes daily. I bookmark them all, at least for logging purposes. These posts having the "urls" category, capture what was on my browser on a specific date. I hope you enjoy some of these shared resources.


        Bye Janetter, Hello TweetDuck!

        For years and years, Janetter (https://twitter.com/Janetter_jp) was my window to Twitter. Instead of using Twitter via a Web browser, or via apps for mobile devices, I used Twitter via Janetter, for Windows 7 desktop PCs. It worked great: it presented me a continuous stream of tweets, as tweeted by those I am following, without issues, without ads, without distracting discussion threads, allowing its user to consume what was being produced, without interferences.

        At some stage in history, there was a good collection of clients for Twitter, for Windows 7 desktop PCs (Janetter alternatives); I used all of the following:

        • MetroTwit
        • Seesmic/
        • TweetDeck
        • DestroyTwitter
        • SharedMinds Desktop

        Janetter remained my favorite, for different reasons. These days none of the alternatives mentioned exist, with the exception of TweetDeck, which is more of a subscription service to manage your social presence, and not exactly a plain Twitter consumer, so it does not count.
        I remember that TweetDeck (in its early days, when it was mostly a Twitter client), Seesmic, MetroTwit and DestroyTwitter, were not as efficient in managing screen space, wasting panes and pixels in “good looks”, that could not present as many and as readable tweets, as Janetter did. SharedMinds got close to Janetter, but still did not win my preference.

        Roughly, two years ago, Twitter made significant changes in the way other software can access Twitter users’ data, and interact with the social network via its official API. Those changes were a death sentence for nearly all the existing Windows desktop Twitter clients. Users, who had already authorized apps, could keep using them – I kept using Janetter -, but new users were not possible.

        Since Janetter satisfied me, I never felt the true impact of that Twitter change: my client kept working fine.

        This went on, until this Monday, 2019-07-29, when Janetter suddenly died with the sentence: “cannot connect to Twitter”. I tweeted about it:
        https://twitter.com/my_dot_com/status/1155921178097332226

        In a matter of hours, it became clear that Janetter, at least for PC, was gone. Something either on Janetter’s network or on its interface to Twitter had been plugged-off. It was time to find an alternative.

        I was very pessimistic: I assumed there would be nothing working the way I like. My first searches for alternatives intensified that suspicion: pointers and pointers to software that no longer works, that is no longer supported, and/or that is not available for Windows 7 desktop.
        With the same ease that I feared the worse (which would be to use Twitter via a Web browser), I found the wonderful “TweetDuck”!

        TweetDuck is a perfect Janetter alternative, with the advantage of handling embedded media better; it is also superior in communicating expanded URLs to the browser.

        Therefore, a new era begins for my Twitter consumption, now using TweetDuck!

        One final note: Google fails miserably in searching for “download TweetDuck”, guiding you to aggregator sites.

        Here is the URL of the official site for TweetDuck:
        https://tweetduck.chylex.com/

        This is open source software, with source at GitHub:
        https://github.com/chylex/TweetDuck

        How to create shortcuts to CLSIDs in Windows

        If you want to access certain windows features, for example the “Tablet PC Settings” more directly and even if/when you are not using a Tablet PC, calling the correspondent Shell CLSID will do the job:

        shell:::{80F3F1D5-FECA-45F3-BC32-752C152E456E}

        But what if you want a desktop shortcut for it? The shortcut creator will not recognize such literal addresses.

        The solution is to prefix with the Windows Explorer executable:

        explorer shell:::{80F3F1D5-FECA-45F3-BC32-752C152E456E}

        Here are some shortcuts which might come handy:

        Action Center     {BB64F8A7-BEE7-4E1A-AB8D-7D8273F7FDB6}
        Add Features     {BE122A0E-4503-11DA-8BDE-F66BAD1E3F3A}
        Add Network Location     {D4480A50-BA28-11d1-8E75-00C04FA31A86}
        Administrative Tools     {D20EA4E1-3957-11d2-A40B-0C5020524153}
        Advanced User Accounts (netplwiz)     {7A9D77BD-5403-11d2-8785-2E0420524153}
        Applications     {4234d49b-0245-4df3-b780-3893943456e1}
        AutoPlay     {9C60DE1E-E5FC-40f4-A487-460851A8D915}
        Biometric Devices (Windows 8 only)     {0142e4d0-fb7a-11dc-ba4a-000ffe7ab428}
        BitLocker Drive Encryption     {D9EF8727-CAC2-4e60-809E-86F80A666C91}
        Bluetooth Devices     {28803F59-3A75-4058-995F-4EE5503B023C}
        Briefcase     {85BBD920-42AO-1069-A2E4-08002B30309D}
        Color Management     {B2C761C6-29BC-4f19-9251-E6195265BAF1}
        Command Folder     {437ff9c0-a07f-4fa0-af80-84b6c6440a16}
        Common Places FS Folder     {d34a6ca6-62c2-4c34-8a7c-14709c1ad938}
        Computer (This PC)     {20d04fe0-3aea-1069-a2d8-08002b30309d}
        Connect To     {38A98528-6CBF-4CA9-8DC0-B1E1D10F7B1B}
        Control Panel     {5399E694-6CE5-4D6C-8FCE-1D8870FDCBA0}
        Control Panel (All Settings)     {F90C627B-7280-45DB-BC26-CCE7BDD620A4}
        Control Panel (All Tasks)     {ED7BA470-8E54-465E-825C-99712043E01C}
        Control Panel (Category view)     {26EE0668-A00A-44D7-9371-BEB064C98683}
        Control Panel (Icons view)     {21EC2020-3AEA-1069-A2DD-08002B30309D}
        Credential Manager     {1206F5F1-0569-412C-8FEC-3204630DFB70}
        Date and Time     {E2E7934B-DCE5-43C4-9576-7FE4F75E7480}
        Default Programs     {17cd9488-1228-4b2f-88ce-4298e93e0966} or
        {E44E5D18-0652-4508-A4E2-8A090067BCB0}
        delegate folder that appears in Computer     {b155bdf8-02f0-451e-9a26-ae317cfd7779}
        Desktop folder     {B4BFCC3A-DB2C-424C-B029-7FE99A87C641}
        Device Manager     {74246bfc-4c96-11d0-abef-0020af6b0b7a}
        Devices and Printers     {A8A91A66-3A7D-4424-8D24-04E180695C7A}
        Display     {C555438B-3C23-4769-A71F-B6D3D9B6053A}
        Documents folder     {A8CDFF1C-4878-43be-B5FD-F8091C1C60D0}
        Downloads folder     {20D04FE0-3AEA-1069-A2D8-08002B30309D}::{374DE290-123F-4565-9164-39C4925E467B}
        Ease of Access Center     {D555645E-D4F8-4c29-A827-D93C859C4F2A}
        E-mail (default program)     {2559a1f5-21d7-11d4-bdaf-00c04f60b9f0}
        Family Safety     {96AE8D84-A250-4520-95A5-A47A7E3C548B}
        Favorites     {323CA680-C24D-4099-B94D-446DD2D7249E}
        File History     {F6B6E965-E9B2-444B-9286-10C9152EDBC5}
        Folder Options     {6DFD7C5C-2451-11d3-A299-00C04F8EF6AF}
        Font Settings     {93412589-74D4-4E4E-AD0E-E0CB621440FD}
        Fonts     {BD84B380-8CA2-1069-AB1D-08000948534}
        Games Explorer     {ED228FDF-9EA8-4870-83b1-96b02CFE0D52}
        Get Programs     {15eae92e-f17a-4431-9f28-805e482dafd4}
        Help and Support     {2559a1f1-21d7-11d4-bdaf-00c04f60b9f0}
        HomeGroup     {6785BFAC-9D2D-4be5-B7E2-59937E8FB80A} or
        {67CA7650-96E6-4FDD-BB43-A8E774F73A57} or
        {B4FB3F98-C1EA-428d-A78A-D1F5659CBA93}
        Hyper-V Remote File Browsing     {0907616E-F5E6-48D8-9D61-A91C3D28106D}
        Indexing Options     {87D66A43-7B11-4A28-9811-C86EE395ACF7}
        Infared     {A0275511-0E86-4ECA-97C2-ECD8F1221D08}
        Installed Updates     {d450a8a1-9568-45c7-9c0e-b4f9fb4537bd}
        Internet Explorer (default browser)     {871C5380-42A0-1069-A2EA-08002B30309D}
        Internet Options     {A3DD4F92-658A-410F-84FD-6FBBBEF2FFFE}
        Keyboard Properties     {725BE8F7-668E-4C7B-8F90-46BDB0936430}
        Language Settings     {BF782CC9-5A52-4A17-806C-2A894FFEEAC5}
        Libraries     {031E4825-7B94-4dc3-B131-E946B44C8DD5}
        Location Sensors     {E9950154-C418-419e-A90A-20C5287AE24B}
        Media Servers     {289AF617-1CC3-42A6-926C-E6A863F0E3BA}
        Mobility Center     {5ea4f148-308c-46d7-98a9-49041b1dd468}
        Mouse Properties     {6C8EEC18-8D75-41B2-A177-8831D59D2D50}
        Music folder     {1CF1260C-4DD0-4ebb-811F-33C572699FDE}
        Network     {F02C1A0D-BE21-4350-88B0-7367FC96EF3C}
        Network and Sharing Center     8E908FC9-BECC-40f6-915B-F4CA0E70D03D}
        Network Connections     {7007ACC7-3202-11D1-AAD2-00805FC1270E} or
        {992CFFA0-F557-101A-88EC-00DD010CCC48}
        Networks Flyout (Connect To)     {38A98528-6CBF-4CA9-8DC0-B1E1D10F7B1B}
        Network (WorkGroup)     {208D2C60-3AEA-1069-A2D7-08002B30309D}
        Notification Area Icons     {05d7b0f4-2121-4eff-bf6b-ed3f69b894d9}
        NVIDIA Control Panel (if installed)     {0bbca823-e77d-419e-9a44-5adec2c8eeb0}
        Offline Files Folder     {AFDB1F70-2A4C-11d2-9039-00C04F8EEB3E}
        Pen and Touch     {F82DF8F7-8B9F-442E-A48C-818EA735FF9B}
        Performance Information and Tools (WEI)     {78F3955E-3B90-4184-BD14-5397C15F1EFC}
        Personalization     {ED834ED6-4B5A-4bfe-8F11-A626DCB6A921}
        Phone & Modem “Location Information”     {40419485-C444-4567-851A-2DD7BFA1684D}
        Pictures folder     {3ADD1653-EB32-4cb0-BBD7-DFA0ABB5ACCA}
        Portable Devices     {35786D3C-B075-49b9-88DD-029876E11C01}
        Power Options     {025A5937-A6BE-4686-A844-36FE4BEC8B6D}
        Previous Versions Results Folder     {f8c2ab3b-17bc-41da-9758-339d7dbf2d88}
        printhood delegate folder     {ed50fc29-b964-48a9-afb3-15ebb9b97f36}
        Printers     {2227A280-3AEA-1069-A2DE-08002B30309D} or
        {863aa9fd-42df-457b-8e4d-0de1b8015c60}
        Programs and Features     {7b81be6a-ce2b-4676-a29e-eb907a5126c5}
        Programs Folder     {7be9d83c-a729-4d97-b5a7-1b7313c39e0a}
        Programs Folder and Fast Items     {865e5e76-ad83-4dca-a109-50dc2113ce9a}
        Public Folder     {4336a54d-038b-4685-ab02-99bb52d3fb8b}
        Recent Places     {22877a6d-37a1-461a-91b0-dbda5aaebc99}
        Recovery     {9FE63AFD-59CF-4419-9775-ABCC3849F861}
        Recycle Bin     {645FF040-5081-101B-9F08-00AA002F954E}
        Region and Language     {62d8ed13-c9d0-4ce8-a914-47dd628fb1b0}
        RemoteApp and Desktop Connections     {241D7C96-F8BF-4F85-B01F-E2B043341A4B}
        Removable Storage Devices     {a6482830-08eb-41e2-84c1-73920c2badb9}
        Results Folder     {2965e715-eb66-4719-b53f-1672673bbefa}
        Run     {2559a1f3-21d7-11d4-bdaf-00c04f60b9f0}
        Search Apps     {2559a1f8-21d7-11d4-bdaf-00c04f60b9f0}
        Search Files     {2559a1f0-21d7-11d4-bdaf-00c04f60b9f0}
        Search Results     {9343812e-1c37-4a49-a12e-4b2d810d956b}
        Set Program Access and Defaults     {2559a1f7-21d7-11d4-bdaf-00c04f60b9f0}
        Show Desktop     {3080F90D-D7AD-11D9-BD98-0000947B0257}
        SkyDrive folder (Windows 8.1)     {8E74D236-7F35-4720-B138-1FED0B85EA75}
        Sound     {F2DDFC82-8F12-4CDD-B7DC-D4FE1425AA4D}
        Speech Recognition     {58E3C745-D971-4081-9034-86E34B30836A}
        Storage Spaces     {F942C606-0914-47AB-BE56-1321B8035096}
        Switch Between Windows     {3080F90E-D7AD-11D9-BD98-0000947B0257}
        Sync Center     {9C73F5E5-7AE7-4E32-A8E8-8D23B85255BF}
        Sync Setup Folder     {2E9E59C0-B437-4981-A647-9C34B9B90891}
        System     {BB06C0E4-D293-4f75-8A90-CB05B6477EEE}
        System Icons     {05d7b0f4-2121-4eff-bf6b-ed3f69b894d9} SystemIcons
        Tablet PC Settings     {80F3F1D5-FECA-45F3-BC32-752C152E456E}
        Taskbar Properties     {0DF44EAA-FF21-4412-828E-260A8728E7F1}
        Text to Speech     {D17D1D6D-CC3F-4815-8FE3-607E7D5D10B3}
        This PC (Computer)     {20d04fe0-3aea-1069-a2d8-08002b30309d}
        Troubleshooting     {C58C4893-3BE0-4B45-ABB5-A63E4B8C8651}
        User Accounts     {60632754-c523-4b62-b45c-4172da012619}
        User Folder     {59031a47-3f72-44a7-89c5-5595fe6b30ee}
        User Pinned     {1f3427c8-5c10-4210-aa03-2ee45287d668}
        Videos folder     {A0953C92-50DC-43bf-BE83-3742FED03C9C}
        Window Switcher (Flip-2D)     {3080F90E-D7AD-11D9-BD98-0000947B0257}
        Windows Defender     {D8559EB9-20C0-410E-BEDA-7ED416AECC2A}
        Windows Features     {67718415-c450-4f3c-bf8a-b487642dc39b}
        Windows 7 File Recovery     {B98A2BEA-7D42-4558-8BD1-832F41BAC6FD}
        Windows Firewall     {4026492F-2F69-46B8-B9BF-5654FC07E423}
        Windows Mobility Center     {5ea4f148-308c-46d7-98a9-49041b1dd468}
        Windows SideShow (Windows 8 only)     {E95A4861-D57A-4be1-AD0F-35267E261739}
        Windows To Go     {8E0C279D-0BD1-43C3-9EBD-31C3DC5B8A77}
        Windows Update     {36eef7db-88ad-4e81-ad49-0e313f0c35f8}
        Work Folders (Windows 8.1)     {ECDB0924-4208-451E-8EE0-373C0956DE16}