Welcome to my Technology Hotspot
Monday, July 7, 2025
Friday, July 4, 2025
How to configure passwordless login in Mac OS X and Linux
Overview
This article walks through configuring your website user's SSH connection to your DreamHost server so you will no longer have to enter your password.
Background
Once you set up a shell user and try to log in via SSH, you'll find you must enter your password each time. If you’d like to avoid entering your password every time, you can set up Passwordless Login. This way, you'll be able to automatically log in immediately without needing to enter your password.
How to configure passwordless login
The following instructions configure Passwordless Login for any Unix, Linux, OSX, or Cygwin machine.
In this article, username@server.dreamhost.com is used as the login example.Make sure to replace username with your actual shell username.
Make sure to replace the servername with your DreamHost servername.
Additionally, you can use the default key name of id_ed25519 or create a custom key name. Make sure you use the key name you choose in Step #3 throughout the remaining steps.
Configuring a shell user
See this article for instructions on changing your website user to an SSH (shell user) in your panel. This is required to run the SSH commands in this article.
Creating the .ssh directory on your server (DreamHost server)
This step confirms if the .ssh directory already exists on your DreamHost server, which is needed to copy your local SSH key to your server.
Log into your server via SSH and run the following commands to confirm the ~/.ssh directory exists under your username.
cd ~ ls -la | grep .ssh
If you see the .ssh directory listed, proceed with the next step.
If you do not see it, run the following command to create this directory:
mkdir ~/.ssh
Generating the key pair (home computer)
On your home computer:Open an SSH terminal.
Generate an ed25519 private key using ssh-keygen under your username:
ssh-keygen -t ed25519 Generating a public/private ed25519 key pair. Enter the file in which you wish to save they key (i.e., /Users/username/.ssh/id_ed25519):
Custom key name
If you press Enter, the key will be created with the default name of id_ed25519.
You can name this anything you like, but if you choose a custom name, you'll need to let your SSH client know about the new key name in Step #6 below. Also, if you choose to use a custom name, make sure to specify the full path to your user's .ssh directory. If you do not, the new key pair is created in the directory you're running the command. For example:
ssh-keygen -t ed25519 Generating a public/private ed25519 key pair. Enter the file in which you wish to save they key (i.e., /Users/username/.ssh/id_ed25519): /Users/username/.ssh/customkey_ed25519
Proceed through the prompts that appear.
Enter a passphrase (leave empty for no passphrase).
You do not need to enter a passphrase, but it's highly recommended as it protects your private key if compromised. If so, someone would still need your passphrase in order to unlock it. The exception to this is if you're running an automated process such as as cron job. You should then leave the password out. From ssh-copy-id:"Generally all keys used for interactive access should have a passphrase. Keys without a passphrase are useful for fully automated processes."
Press Enter to continue.
Enter same passphrase again:
Press Enter to continue.The following message appears:
Your identification has been saved in /Users/username/.ssh/custom_ed25519 Your public key has been saved in /Users/username/.ssh/custom_ed25519.pub The key fingerprint is: SHA256:7pNvrznUREXWY2r1otEwUWo40aKfZDFsUVDac3YuzrI The key's randomart image is: +--[ED25519 256]--+ | o+*+=| | X..o| | @.= +| | o #.* | | Q o @oB o| | . *.C.+ | | ..S.+ | | .o . .o | | .+..+. | +----[SHA256]-----+
Copying the public key to your DreamHost server (home computer)Run the following command to copy the public key on your local computer to DreamHost's server.
cat ~/.ssh/id_ed25519.pub | ssh username@server.dreamhost.com "cat >> ~/.ssh/authorized_keys"
This command responds with the following:
The authenticity of host 'server.dreamhost.com can't be established. ED25519 key fingerprint is SHA256:dhw3mJELPEz0i5Hzu/9lJR9FiJkK5EtiiPKAw/0zwuU. Are you sure you want to continue connecting (yes/no)? yes
Confirm the fingerprint in your panel on the SSH Keys page.
Type out the word yes to continue.
Enter your ssh username password when prompted.
The commands above create a new file named authorized_keys under your DreamHost user in the ~/.ssh directory.
Update the directory and file permissions (DreamHost server)
You must now update the permissions for the .ssh directory and authorized_keys file to further secure your keys.
Log into your server via SSH and run the following commands:
chmod 700 ~/.ssh chmod 600 ~/.ssh/authorized_keys
Adding your custom key to your ssh client (home computer)
This step is only necessary if you give your key a custom name in Step #3.1 above. You must then let your SSH client know what the new name is using ssh-agent.Run the following command to start ssh-agent. Make sure you use the backquote ` character and not a single quote – this backquote character is usually on the top left of your keyboard on the tilde ~ key:
eval `ssh-agent`
Run the following command to add your custom key.
ssh-add ~/.ssh/customkey_ed25519 Identity added: /Users/username/.ssh/customkey_ed25519
Confirm it's been added by running the following. It will respond with your private key's fingerprint.
ssh-add -l 256 SHA256:7pNvrznUREXWY2r1otEwUWo40aKfZDFsUVDac3YuzrI (ED25519)
Confirm that fingerprint by generating a fingerprint from your custom key's public file.
ssh-keygen -l -f ~/.ssh/customkey_ed25519.pub 256 SHA256:7pNvrznUREXWY2r1otEwUWo40aKfZDFsUVDac3YuzrI (ED25519)
Confirming the SSH connection (DreamHost server)
If everything is configured properly, you should now be able to access your DreamHost account through SSH without a password. Try logging in again.
ssh username@server.dreamhost.com
You should now be able to log in without using a password.
Specifying a key pair for SSH to use
By default, your client will use the identity (private key) named id_ed25519. However, if you've created more than one key, you can specify which one to use when connecting using the -i flag. For example:
ssh -i ~/.ssh/customkey_ed25519 username@server.dreamhost.com
See alsoSSH overview
SSH client software
Set up passwordless login in PuTTY
Courtesy: dreamhost.com
Thursday, May 22, 2025
Google I/O 2025 summary
Google just dropped their biggest Al updates ever during Google I/O 2025.
Here are 13 new Al updates you can't miss:
- Gemini Live. You can now turn on your camera, point at anything, and talk to Gemini about it in real time
- Imagen. Google's best image model yet
- Veo 3. The first video model with native sound generation
- Deep Research
- Project Astra. A JARVIS-like research prototype exploring the capabilities of a universal Al assistant
- Google Flow. Al filmmaking tool for creators
- Agent Mode. A new feature in the Gemini app that lets you state a goal, and Gemini will handle the steps to achieve it
- Google Jules. Jules is an Al-powered coding assistant that can read your code, write tests, fix bugs, and update dependencies
- Al Mode in Search. Al Mode transforms Google Search into a conversational assistant
- Real-time speech translation in Google Meet
- Google Beam. An Al-first video communication platform that turns 2D video streams into realistic 3D experiences
- Gemma 3n. A new open-source Al model optimized for mobile devices
- Try-On. Google's Virtual Try-On feature lets you upload a photo of yourself to see how clothes would look on you
What are your thoughts on this?
Free MCP model context protocol course
Worth investing time on learning the Model context protocol using a free course provided by huggingface.
Wednesday, May 14, 2025
MCP vs RAG (Model Context Protocol vs Retrieval Augmented Generation)
RAG (Retrieval-Augmented Generation) focuses on enhancing AI responses by retrieving external data, while MCP (Model Context Protocol) standardizes how AI interacts with various data sources and tools.
Overview of RAG
2
Functionality: When a user submits a query, RAG retrieves relevant content from connected data sources and appends this information to the input prompt, enriching the model's context with real-world relevance. This helps reduce inaccuracies and hallucinations in AI responses by grounding them in verifiable sources.
2
Use Cases: RAG is particularly useful in scenarios where real-time data is crucial, such as customer support, news aggregation, and any application requiring current information.
3 Sources
Overview of MCP
2
Functionality: MCP allows LLMs to fetch data from multiple sources, such as databases or APIs, without needing to create custom solutions for each interaction. It operates on a client-server model, where the MCP server manages the logic for data retrieval and the MCP client interfaces with the LLM.
2
Use Cases: MCP is designed for applications that require seamless integration of various tools and data sources, making it suitable for complex workflows and environments where multiple data interactions are necessary.
3 Sources
Key Differences
1
Data Retrieval: RAG retrieves external data each time a query is made, whereas MCP allows LLMs to access contextual memory and external data more efficiently, reducing the need for repeated data retrieval.
2
Integration: RAG requires specific setups for each data source, while MCP provides a universal framework that simplifies the integration of multiple data sources and tools into AI applications.
3 Sources
Conclusion
Both RAG and MCP play significant roles in enhancing AI capabilities, but they serve different purposes. RAG is ideal for applications needing real-time data retrieval to improve response accuracy, while MCP offers a standardized approach for integrating various tools and data sources, making it easier to build complex AI systems. Understanding these differences is crucial for developers and organizations looking to leverage AI effectively in their applications.
PostgreSQL list of commands
Here, we highlight some of the most frequently used PSQL commands, detailing their functionalities to enhance your PostgreSQL experience.
Top PSQL Commands in PostgreSQL
Here are the top 22 PSQL commands that are frequently used when querying a PostgreSQL database:
Serial No.CommandDescription1 psql -d database -U user -W Connects to a database under a specific user
2 psql -h host -d database -U user -W Connect to a database that resides on another host
3 psql -U user -h host "dbname=db sslmode=require" Use SSL mode for the connection
4 \c dbname Switch connection to a new database
5 \l List available databases
6 \dt List available tables
7 \d table_name Describe a table such as a column, type, modifiers of columns, etc.
8 \dn List all schemes of the currently connected database
9 \df List available functions in the current database
10 \dv List available views in the current database
11 \du List all users and their assign roles
12 SELECT version(); Retrieve the current version of PostgreSQL server
13 \g Execute the last command again
14 \s Display command history
15 \s filename Save the command history to a file
16 \i filename Execute psql commands from a file
17 \? Know all available psql commands
18 \h Get help
19 \e Edit command in your own editor
20 \a Switch from aligned to non-aligned column output
21 \H Switch the output to HTML format
22 \q Exit psql shell
Additional Information:
The -d option in psql commands is used to state the database name.
The -U option specifies the database user.
The -h option indicates the host on which the database server resides.
The \h ALTER TABLE can be used to get detailed information on the ALTER TABLE statement.
Friday, May 9, 2025
How to deply Ollama & open web-ui on your laptop
- Download Ollama: Get the Ollama package from the GitHub repository.
- Install Dependencies: Ensure you have any required dependencies, including libraries for your specific model.
- Verify Installation: Use
ollama --versionto confirm Ollama is installed correctly.
- Pull the Model: Use the
ollama pull <model_name>command to download the desired model. - Run the Model: Use
ollama run <model_name>to initiate the model's execution. - Interacting with the Model: Ollama provides an API at
http://localhost:11434/api/generatefor interacting with the model. - Optional: Web UI: Explore Open WebUI for a user-friendly interface to manage and interact with models.
- Optional: Custom Applications: Build custom applications using libraries like FastAPI and Gradio to integrate Ollama models into your workflows.
How to deploy open-webui
Open WebUI is an extensible, feature-rich, and user-friendly self-hosted AI platform designed to operate entirely offline. It supports various LLM runners like Ollama and OpenAI-compatible APIs, with built-in inference engine for RAG, making it a powerful AI deployment solution.
Open WebUI can be installed using pip, the Python package installer. Before proceeding, ensure you're using Python 3.11 to avoid compatibility issues.
Install Open WebUI: Open your terminal and run the following command to install Open WebUI:
pip install open-webui
Running Open WebUI: After installation, you can start Open WebUI by executing:
open-webui serve
This will start the Open WebUI server, which you can access at http://localhost:8080
To upgrade the Open-webui components
pip install open-webui --upgrade
Sunday, April 20, 2025
Run windows apps through Wine emulator on Mac OS Apple Silicon
https://macappstore.org/whiskey/
About the App
- App name: Whiskey
- App description: whiskey (App: Whiskey.app)
- App website: http://usewhiskey.com/
Install the App
- Press
Command+Spaceand type Terminal and press enter/return key. - Copy and paste the following command in Terminal app:
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
and press enter/return key. Wait for the command to finish. If you are prompted to enter a password, please type your Mac user's login password and press ENTER. Mind you, as you type your password, it won't be visible on your Terminal (for security reasons), but rest assured it will work. - Now, copy/paste and run this command to make brew command available inside the Terminal:
echo 'eval "$(/opt/homebrew/bin/brew shellenv)"' >> ~/.zprofile - Copy and paste the following command:
brew install --cask whiskey
Done! You can now use Whiskey.
Refer this video on the steps to use the app on Mac OS Apple Silicon laptops
https://www.youtube.com/watch?v=8KeES5llh9I&t=82s
pivot_root vs chroot vs switch_root
123
In Linux, pivot_root, chroot, and switch_root are commands used to change the root filesystem of a process. Each has its specific use cases and functionalities.
pivot_root
The pivot_root command is used to change the root filesystem of the current process and its children. It swaps the current root filesystem with a new one, making the old root accessible at a specified location. This command is typically used during the boot process when the system transitions from an initial ramdisk (initrd) to the real root filesystem
1.
Example:
In this example, the root filesystem is changed to /new-root, and the old root is accessible at /old-root3.
chroot
The chroot command changes the root directory for the current process and its children to a specified directory. Unlike pivot_root, chroot does not swap the root filesystem but simply changes the reference point for the current process. This command is often used to create isolated environments, such as chroot jails.
2.
The switch_root command is used to switch from an initial ramdisk (initramfs) to the real root filesystem. It is similar to pivot_root but is specifically designed for use with initramfs. switch_root performs additional cleanup tasks, such as moving common mount points (/dev, /proc, /sys, etc.) into the new root and attempting to delete everything in the old root
1.
In this example, the root filesystem is switched to /new-root, and /sbin/init is executed as the new init process
1.
chroot: Changes the root directory for the current process without swapping the root filesystem. Used for creating isolated environments.
switch_root: Switches from initramfs to the real root filesystem, performing additional cleanup tasks. Used during the boot process with initramfs.
Use Cases
pivot_root: Used when you need to preserve the original root for some purpose, such as during the boot process with initrd1.
chroot: Used to create isolated environments, such as chroot jails, for security or testing purposes2.
switch_root: Used to switch from initramfs to the real root filesystem during the boot process, performing additional cleanup tasks1.
By understanding the differences and use cases of these commands, you can choose the appropriate one for your specific needs in managing the root filesystem of a process.
Friday, February 14, 2025
Vim Copy & Paste Terminology
The keyboard shortcuts to copy, cut, and paste can be boiled down into three characters that utilize Vim-specific terminology.
Understanding these terms will help you recall the correct keyboard shortcut.
Y stands for “yank” in Vim, which is conceptually similar to copying.
D stands for “delete” in Vim, which is conceptually similar to cutting.
P stands for “put” in Vim, which is conceptually similar to pasting.
I deliberately use the phrase “conceptually similar to” because these actions are not one and the same. If you want to dive deeper into this explanation, scroll down to the section below titled “What Happens Under the Hood?”
Copy, Cutting, and Pasting in Vim/Vi - The Basics
1.Press esc to return to normal mode. Any character typed in normal mode will be interpreted as a vim command.
2.Navigate your cursor to the beginning of where you want to copy or cut.
3.To enter visual mode, you have 3 options. We suggest using visual mode because the selected characters are highlighted, and it’s clearer to see what’s happening. However, we have the keyboard shortcuts for normal mode (which achieve the exact same effect) in the section below.
4.Press v (lowercase) to enter visual mode. This will start selecting from where your cursor is.
5.Press V (uppercase) to enter visual line mode. This will select the entire line.
6.Press CTRL+V to enter visual block mode.
7.Move your cursor to the end of where you want to copy or cut.
8.Press y to copy. Press d to cut.
9.Move the cursor to where you want to paste your selection.
10.Press P (uppercase) to paste before your cursor. Press p (lowercase) to paste after your cursor.
Move the cursor to where you want to paste your selection.
Press P (uppercase) to paste before your cursor. Press p (lowercase) to paste after your cursor.
Vim Keyboard Shortcuts
Using arrow keys (or if you are an expert Vim user - h, j, k, and l) to move around in your vim file can take a long time.
Here are vim keyboard shortcuts for copying and cutting if you want to be even more efficient than the basic steps outlined above.
Copying (Yanking)
yy: Copy the current line in vi
3yy: To yank multiple lines in vim, type in the number of lines followed by yy. This command will copy (yank) 3 lines starting from your cursor position.
y$: Copy everything from the cursor to the end of the line
y^: Copy everything from the start of the line to the cursor.
yiw: Copy the current word.
Cutting (Deleting)
dd: Cut the current line
3dd: Cut 3 lines, starting from the cursor
d$: Cut everything from the cursor to the end of the line
Putting (Pasting)
P (uppercase): Paste before your cursor
p (lowercase): Paste after your cursor
What Happens Under the Hood?
Vim terms are slightly different from their conceptual counterparts that we mentioned above because these actions by default do not interact with the OS clipboard. For example, you can't paste yanked text from Vim into a different application with CMD + V.
Yank, delete, and put interact with Vim's notion of “registers”, which are basically Vim -specific clipboards. Each register is named with a character, which you can use to interact with that register. For example, you might yank line 50 of the current file to register “a” and yank line 14 of the same file to register “b”, because you intend to paste both line 50 and line 14.
To learn more about vim registers, check out this Stack Overflow page.
Conclusion
This should be everything you need to get started to copy, cut and paste in Vi. If you didn’t find what you were looking for, it may be worth checking out the official vim docs.
Featured
TechBytes on Linux
This is a growing list of Linux commands which might come handy for the of Linux users. 1. Found out i had to set the date like this: ...
Popular Posts
-
This is a growing list of Linux commands which might come handy for the of Linux users. 1. Found out i had to set the date like this: ...
-
To set a PDF viewer as the default on Mac OS X: Select any PDF file from Finder. Control-click to open the menu. ... Choose Get...
-
ಮ್ಯಾಕ್ ಬುಕ್ ನಲ್ಲಿ ಕನ್ನಡ ದಲ್ಲಿ ಟೈಪ್ ಮಾಡಲು ಲಿಪಿಕ ಎನ್ನುವ ಈ ಕೆಳಗಿನ ಲಿಂಕ್ ಅನ್ನು ಕ್ಲಿಕ್ ಮಾಡಿ .pkg ಫೈಲ್ ಅನ್ನು ಡೌನ್ ಲೋಡ್ ಮಾಡಿ ಅದನ್ನು ಇನ್ಸ್ತಾಲ್ ಮಾಡಿ...