Monday, July 31, 2023

How AI Large Language Models work: Explained in simple English

LLM (Large Language Models) are considered to be the foundation for text-based generative AI. These models, such as the GPT model of ChatGPT, are designed to generate human-like text based on the input they receive. In the large scheme of things, LLMs are the models that are trained to predict the next word when they generate textual output.

This article by Tim Lee on Ars Technica explains in simple terms about word vectors, transformers, and how the language models are trained.


Sunday, July 30, 2023

Great Soul: Mahatma Gandhi and His Struggle with India by Joseph Lelyveld

Great Soul: Mahatma Gandhi and His Struggle with India by Joseph Lelyveld is a biographical exploration of Mahatma Gandhi, the iconic leader of India's independence movement. Lelyveld delves into Gandhi's life, his philosophy of nonviolence, and his complex relationship with India's struggle for freedom. The book sheds light on Gandhi's personal struggles, his impact on India's history, and his controversial aspects. It discusses his beliefs, activism, and the challenges he faced. Lelyveld provides a comprehensive portrait of the man behind the legend, offering a nuanced perspective on Gandhi's role in shaping India's destiny and his enduring legacy.

How to export your Last.fm Scrobbles

I have used the Last.fm Scrobbler for several years in the past but I realized that there was no way to take out your data right out of their official website. Then I found this tool that lets you do just that.

I like this tool and it should have been part of the main Last.fm product itself.

It is simple to use. Just enter your Last.fm username, select the type of data to export and the file format and start exporting. In fact, you can enter any Last.fm username and it will scrape the data for you.

Here is a screencap of my data being exported. 😊

Thanks to Ghan64 for this useful tool.


Saturday, July 29, 2023

Today I Learned: Voyager 1 is almost 15 billion miles away from Earth and still can communicate

Today I Learned: Voyager 1 space probe is almost 15 billion miles (24 billion kilometers) away from Earth and still can communicate with the ground antennas of the Deep Space Network (DSN).

The DSN antennas are located at Goldstone, near Barstow, California; near Madrid, Spain; and near Canberra, Australia. [Source]


Friday, July 28, 2023

World's largest wind turbine has been switched on

A 16-megawatt MySE 16-260 turbine, the world's largest wind turbine which was designed by Mingyang Smart Energy, has been switched on.

Photo by Jeremy Bishop on Unsplash
The turbine is part of a wind farm installed by China Three Gorges Corporation near Fujian province.

Laura Simmons writes about the announcement at IFLScience.

Wednesday, July 26, 2023

Overture Maps Foundation released it's first Open Map Dataset

The Overture Maps Foundation (OMF) released its first dataset consisting of about 60 million places which are separated into four unique data layers: Places of Interest (POIs), Buildings, Transportation Network, and Administrative Boundaries.

Photo by Jeremy Bishop on Unsplash
Developers can use this dataset to build their mapping applications. This service is similar to what Google Maps API already provides so this makes OMF a competitor.

The Overture Maps Foundation was founded in December 2022 by Amazon Web Services (AWS), Meta, Microsoft, and TomTom.

This Overture Maps Foundation blog post details the press release.

Monday, July 24, 2023

A PC Assembler Website

PCAssembler.tripod.com is a website that I created around 2002 on Tripod.com that walks though simple steps to assemble a new personal computer. In those days, simple guides to assemble your own desktop computer was not easy to come across. It was hosted at https://pcassembler.tripod.com/ and the link still works as of July 2023 but hasn't been updated since many years.

This is a screenshot of the homepage that was.




Below are links to all pages for archival:
  1. http://web.archive.org/web/http://pcassembler.tripod.com/
  2. http://web.archive.org/web/http://pcassembler.tripod.com/com_corr.htm
  3. http://web.archive.org/web/https://pcassembler.tripod.com/whatuneed.htm
  4. http://web.archive.org/web/https://pcassembler.tripod.com/unpack_case.htm
  5. http://web.archive.org/web/https://pcassembler.tripod.com/smps.htm
  6. http://web.archive.org/web/http://pcassembler.tripod.com/smps.htm
  7. http://web.archive.org/web/https://pcassembler.tripod.com/setmotherboard.htm
  8. http://web.archive.org/web/https://pcassembler.tripod.com/processor.htm
  9. http://web.archive.org/web/https://pcassembler.tripod.com/heatsink.htm
  10. http://web.archive.org/web/https://pcassembler.tripod.com/ram.htm
  11. http://web.archive.org/web/https://pcassembler.tripod.com/motherboard_install.htm
  12. http://web.archive.org/web/https://pcassembler.tripod.com/fdd.htm
  13. http://web.archive.org/web/https://pcassembler.tripod.com/hdd.htm
  14. http://web.archive.org/web/https://pcassembler.tripod.com/optical.htm
  15. http://web.archive.org/web/https://pcassembler.tripod.com/videocard.htm
  16. http://web.archive.org/web/https://pcassembler.tripod.com/pci.htm
  17. http://web.archive.org/web/https://pcassembler.tripod.com/finishing.htm
  18. http://web.archive.org/web/https://pcassembler.tripod.com/poweringup.htm
  19. http://web.archive.org/web/https://pcassembler.tripod.com/troubleshooting.htm
  20. http://web.archive.org/web/https://pcassembler.tripod.com/standardize.htm


Twitter rebranded to X

Elon Musk has rebranded Twitter, replacing its iconic blue bird logo with a white X as part of his efforts to transform the platform into a super-app offering messaging, payments, and more.

Elon Musk tweeted a day ago saying the X.com now redirects to twitter.com and hinting that a new logo is on the way.


Musk aims to create a global marketplace centered around audio, video, and messaging. The logo change was met with criticism and nostalgia. Since Musk acquired Twitter, the advertising business has declined, leading him to explore building a subscriber base for new revenue. The platform has faced technical issues and user backlash due to changes in content moderation and the return of banned accounts. Follow this link for an article from MSN.


Tuesday, July 18, 2023

A Chrome Extension to Bookmark all Tabs

I am writing this article to document and demonstrate how to create a Chrome browser extension that lets you quickly bookmark all open tabs in a preset folder on the click of a button.

This is a simple extension that was built and tested on the desktop version of Google Chrome v115 and Microsoft Edge v114 but should work on any Chromium-based browser that supports extensions. As of this writing in July 2023, other Chromium-based browsers include Opera and Brave. An actively maintained list of Chromium-based browsers for various platforms can be found at https://en.m.wikipedia.org/wiki/Chromium_(web_browser).

What This Extension Does

This extension displays an icon on your browser's toolbar. When you click on the icon, it bookmarks all open tabs in the current browser instance to a specific bookmarks folder. If the bookmark already exists inside the folder, it won't save again so you don't have to deal with duplicate bookmarks. It is as simple as that.

Why I Wrote This Extension

I wrote this as part of an exploration to find a quick way to bookmark all open tabs in a browser window. This works silently and in an instant your open tabs are bookmarked inside a folder.

Steps

We will use a combination of tolls and programming languages to like JavaScript and the Chrome Extension API to do this. The source code can also be downloaded from Github at this location https://github.com/dasdebjyoti/BookmarkMyTabs.

Here are the steps:
  1. Set up your development environment
    • Install a text editor such as Visual Studio Code or Notepad++. Visual Studio Code v1.8 has been used in this walkthrough.
    • Create a new folder for the project.
  2. Create an icon file
    • In the project folder, create an image file named icon.png which will be the icon for your extension.
  3. Create a manifest file
    • In the project folder, create a file named manifest.json
    • Add the following content to the file
      {
          "manifest_version": 3,
          "name": "BookmarkMyTabs",
          "version": "1.0",
          "description": "A Chrome extension to bookmark all open tabs",
          "author": "yourname@example.com",
          "permissions": [
              "tabs",
              "bookmarks"
          ],
          "background": {
              "service_worker": "service_worker.js",
              "type": "module"
          },
          "action": {
              "default_icon": "icon.png"
          }
      }
  4. Create the extension service worker
    • In the project folder, create a file named service_worker.js
    • Add the following content to the file
    • // File: Service-Worker.js
      // File Version: 1.0
      // Project: BookmarkMyTabs Chrome Extension

      console.log("BookmarkMyTabs Service-Worker Start");

      const sOurBookmarkFolder = "BookmarkMyTabs";
      const cParentIdBmkBar = '1';    // 1 = Bookmarks bar. 2 = Other bookmarks
      const cParentIdBmkOther = '2';  // 1 = Bookmarks bar. 2 = Other bookmarks
      const cOurParentId = cParentIdBmkBar;

      chrome.windows.onRemoved.addListener(function(windowId) {
        console.log("!! Exiting the Browser !!");
      });

      chrome.action.onClicked.addListener((tab) => {
        startBookmarking();
      });

      function startBookmarking()
      {
        // Search for our bookmark folder
        chrome.bookmarks.search( {
          title: sOurBookmarkFolder
        },
        function(treeNode) {

          if (treeNode.length != 0) {

            console.log("Bookmark folders found: " + treeNode.length);

            // Find the oldest folder that was created
            // Ignore any other folder with the same name that the user may have
            // created
            let ourFolderNode = treeNode[0];
            for (const node of treeNode) {
              if (cOurParentId == node.parentId &&
                node.dateAdded < ourFolderNode.dateAdded)
                {
                console.log("Node: " + node.id + " Date Added: " +
                node.dateAdded);
                ourFolderNode = node;
              }
            }

            //console.log("Oldest node: " + ourFolderNode.id + " Date Added: "
            //+ ourFolderNode.dateAdded);
       
            if (cOurParentId == ourFolderNode.parentId) {
              console.log("Bookmark folder id: " + ourFolderNode.id);
              console.log("Bookmark folder index: " + ourFolderNode.index);
              console.log("Bookmark folder parentId: " + ourFolderNode.parentId);
              // Create our bookmarks
              bookmarkOpenTabs(treeNode[0]);
            }
            else {
              // Folder not found inside cOurParentId
              console.log("Bookmark folder not found in the correct location");
              addFolderAndBmkTabs();
            }
          }
          else {
            console.log("Bookmark folder not found");
            addFolderAndBmkTabs();
          };
        });
      }

      // Bookmark open tabs under the given node
      // Param node: A BookmarkTreeNode object
      function bookmarkOpenTabs(node)
      {
        console.log("+bookmarkOpenTabs()");
        chrome.bookmarks.getChildren(
          node.id.toString(),
          function(bmkList)
          {
            chrome.tabs.query({}, function(tabs) {
              let bFound = false;
              tabs.forEach(function(tab) {
                console.log("HERE");
                // Check if the bookmark already exists
                if (0 < bmkList.length)
                {
                  console.log(' bookmarkOpenTabs() -> Existing bookmarks: ' +
                  bmkList.length);
                  bFound = false;
                  for (const bmk of bmkList)
                  {
                    if (tab.title == bmk.title && tab.url == bmk.url) {
                      bFound = true;
                      break;
                    }
                  }
                }

                if (false == bFound)
                {
                  chrome.bookmarks.create( {
                    parentId: node.id.toString(),
                    title: tab.title,
                    url: tab.url
                  },
                  () => {
                    console.log(' bookmarkOpenTabs() -> Bookmark added: ' +
                    tab.title);
                  });
                }
              });
            });
          });
       
        console.log("-bookmarkOpenTabs()");
      }

      // Add our bookmark folder and bookmark open tabs
      function addFolderAndBmkTabs()
      {
        chrome.bookmarks.create( {
          parentId: cOurParentId,
          title: sOurBookmarkFolder
        },
        function(newFolder) {
          console.log("Created bookmark folder: " + newFolder.title);
          bookmarkOpenTabs(newFolder);
        });
      }

      console.log("BookmarkMyTabs Service-Worker End");
  5. Load the extension in Chrome
    • Open Google Chrome
    • Go to 'chrome://extensions' in the address bar
    • Enable 'Developer mode' by toggling the switch

      Enable Developer Mode in Google Chrome Extensions

    • Click on 'Load unpacked' and select the folder containing the project files
    • If there were no errors, the new extension should be listed in the Extensions page

      New Extension Loaded on Chrome Extensions Page

    • If your new extension doesn’t show up in the Chrome toolbar, then drop down the Extensions tool and make it visible by clicking on the Pin icon

      Pin the Extension in the Chrome toolbar

    • Now your Extension's icon should show up in the toolbar

      Extension icon in the Chrome toolbar

    • Now we are all set to test this Extension
  6. Test the extension
    1. Open multiple tabs in Chrome
    2. Click on the extension icon in the Chrome Toolbar
    3. All open tabs should now be bookmarked in the folder name that you provided in your script

      Bookmarks added to the Chrome Bookmark Bar

  7. That's it. Now you have a working extension that silently bookmarks all open tabs instantly

I don't want to use this. What other option do I have?

If you don't want to use this extension, that's okay - there are other ways to achieve this on your Chrome or Edge browser though the user experience is not the same. On the Chrome Browser for Desktop you can follow these steps:

  1. At the top right, click More (the three dots)
  2. Go to Bookmarks > Bookmark All Tabs

    Bookmark All Tabs in Google Chrome

  3. In the dialog that pops up, provide a name of the folder where you want to add the bookmarks and click on Save.

    Bookmark All Tabs Dialog in Google Chrome

  4. You are done.

References

The Google Chrome API Reference can be found here: https://developer.chrome.com/docs/extensions/

You can download Visual Studio Code from here: https://code.visualstudio.com/

If you prefer Notepad++ to edit source code, it is available here: https://notepad-plus-plus.org/

To create icons from images, there are many tools available online. I have used IcoConverter which is available here: https://www.icoconverter.com/

Friday, July 14, 2023

Chandrayaan-3 Launched

ISRO's Chandrayaan-3 lunar exploration mission was launched from the Satish Dhawan Space Centre on the Sriharikota island. The Bahubali LVM3-M4 rocket carries a lander named Vikram and a rover named Pragyan. The lander aboard is expected to touchdown on the Moon's south pole on August 23. The Moon’s south pole is a relatively unexplored area on the lunar surface that holds immense research potential. Achieving a successful lunar landing would elevate India into the league of nations that includes the United States, the former Soviet Union, and China – becoming the fourth nation to achieve a soft landing on the lunar surface.

ISRO describes the details of the mission in simple terms in this brochure. The missions official home page is here [archived].

ISRO's Tweet on the successful launch:



Below is the saved live stream of the launch on YouTube. The lift off happens at 35:13.






Sunday, July 9, 2023

Play Content on Google Home

If you have Google Assistant enabled smart speakers or display devices, like the Google Home, you probably already use them with various commands to play content and control your connected devices. On this page, I will list voice commands that you can use to play audio and video content on these devices.

You can start with the conventional voice command "Hey Google" or "Okay Google" to activate the Google Assistant.

Google Assistant-enabled Devices

First a little bit of a build-up. There are several Google Assistant-enabled devices nowadays. The Assistant may be on your phone, speaker, Android Auto-compatible car, TVs, wearables and other devices. A list of devices available in the market can be found here: https://assistant.google.com/platforms/phones/

The commands listed here have been tested on a Lenovo Smart Display that runs the Google Assistant.

Play News

To play news from various online sources on your Google Assistant-enabled device, activate the assistant by saying "Hey Google" or "Okay Google" followed by the keywords in the headings below. For example, you could say, "Hey Google, play the news" or "Hey Google, play technology news". Optionally, if you want to hear the news from a particular source, you could say something like, "Hey Google, play PBS" or "Hey Google, play BBC". At any time if you want to skip the current news source just say, "Hey Google, play next". The source of the content will depend on the new sources currently participating with Google:

Play the News

Plays news from your default sources on Google News (How to set your default news sources?)

Play the latest news about <topic>

Plays news about a topic of you choice. For example, "what is the latest news about India" will play news about India.

Play Technology News

Play Business News

Play Sports News

Plays sports news on Google News from various sources like ESPN Radio, NPR Sports, Fantasy Football Today, CBS Sports Radio Minute, The Early Edge, The Leadoff.

Play World News

Play Entertainment News

Plays entertainment news on Google News from various sources like Billboard News Now, Watch This, IGN, Associated Press, Let Me Google That, Bollywood Hungama, We Hear: Quick Fix, Anchor Weird AF News.

Play Politics News

Plays politics news on Google News from various sources like Politico Playbook Audio Briefing, CNN Political Briefing, NPR Politics, Political Breakdown, Democracy Now! Audio.

Play Science News

Plays science news on Google News from various sources like PBS Newshour Science, NPR Environment, Wired Science, WSJ's The Future of Everything.

Play Health News

Plays science news on Google News from various sources like The Space, NPR Health & Science, NPR Health Care, PBS Newshour Health.

Play Art & Lifestyle News

Plays art and lifestyle news on Google News from various sources like Real Simple Tips, Mom Tips, PBS Newshour Art Beat, NPR Art & Life.

Play National News

Plays national news on Google News from various sources like The Feed on The Official Libsyn Podcast, Air Force Academy News, Early Bird Brief.

Wednesday, July 5, 2023

Threads launched by Meta Platforms

Meta Platforms launched a new social media platform titled Threads. The new platform is closely linked with Instagram but unlike Instagram it is more focused towards text-based posts. This makes it functionally similar to Twitter and has been referred to as the "Twitter killer" in some circles.


Posts on Threads can be 500 characters long and can contain photos, links and videos (up to 5 minutes length). Twitter which started with 140-character limit in 2006, currently provides 280-character limit for posts. At this point the platform is available as mobile apps for Android and iOS only.

This screenshot shows how the profile page looks like the on the Android app.


The announcement from Instagram is here.

Facebook's press release about the launch is here.

Monday, July 3, 2023

A Visit to the Toledo Museum of Art - Random Travel Instinct

The Toledo Museum of Art is an internationally known art museum located in the Old West End neighborhood of Toledo, Ohio. It houses a collection of more than 30,000 objects. With 45 galleries, it covers 280,000 square feet and is currently in the midst of a massive multiyear expansion plan to its 40-acre campus. The museum was founded by Toledo glassmaker Edward Drummond Libbey in 1901.

We visited the museum several times between 2018 and 2021 and this video is a slideshow of photos shot at the galleries.



If you are unable to play the video directly from this page here is the direct link to YouTube, https://youtu.be/4CvH8UYDlQ0

The official website of the museum is at https://www.toledomuseum.org/