<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Abhijit Kumar</title>
    <description>The latest articles on DEV Community by Abhijit Kumar (@abhijit105).</description>
    <link>https://dev.to/abhijit105</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F2111638%2F03f799f7-ee9b-47dc-be15-e8c7c5eb8ac4.png</url>
      <title>DEV Community: Abhijit Kumar</title>
      <link>https://dev.to/abhijit105</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/abhijit105"/>
    <language>en</language>
    <item>
      <title>Downgrading on Mac</title>
      <dc:creator>Abhijit Kumar</dc:creator>
      <pubDate>Wed, 01 Oct 2025 19:13:50 +0000</pubDate>
      <link>https://dev.to/abhijit105/downgrading-on-mac-3k11</link>
      <guid>https://dev.to/abhijit105/downgrading-on-mac-3k11</guid>
      <description>&lt;h1&gt;
  
  
  Upgrading / Downgrading on a Mac
&lt;/h1&gt;

&lt;p&gt;It is easy and recommended to upgrade your MacOS from one version to a later version. But occasionally there comes a situation where we want to downgrade. This can happen if your new operating system is heavy on the existing hardware of your system which pretty much cannot be upgraded, or if your development environment starts breaking on a later version (a thing that happened with me), or simply you don't like the user interface and aesthetics of the new version.&lt;/p&gt;

&lt;h1&gt;
  
  
  The truth
&lt;/h1&gt;

&lt;p&gt;The truth simply put is there is no simple method for downgrading on a Mac, nor is it recommended by Apple. So, if one is stuck on an ugly looking desktop, there is not much you can do about it. You can use the &lt;em&gt;built-in&lt;/em&gt; tool &lt;strong&gt;Time Machine&lt;/strong&gt; but suppose it is not configured to create backups. Then, the only option is to create a bootable USB flash drive or use the Mac Recovery Options. I will talk here about the latter option which requires an internet access.&lt;/p&gt;

&lt;h1&gt;
  
  
  Mac Recovery
&lt;/h1&gt;

&lt;p&gt;Built into every Macbook, apple intel or apple silicon, is a recovery option that you can access and use it to erase and format the hard drive and install an operating system. Yes, that's right! The steps described here are for apple silicon m1/m2/m3/m4 Macs: -&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Before we begin, it will be important to highlight here that to downgrade your operating system, you will have to first erase your hard drive and then a fresh copy of an older version operating system can be installed on the system. That means all the data will be wiped, so be sure to create a backup of the data first if you have some important data on your computer.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Tweaking the boot security options
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Shut down your Mac following the normal procedure.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Turn on the laptop by pressing and holding the power button. A message will be shown to hold the power button to load the recovery options. You can leave the button as soon as the recovery options start to load.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Click on &lt;strong&gt;Options&lt;/strong&gt;. This will navigate you to a screen with your user account. Log into your account by using your password.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;This will open the &lt;strong&gt;MacOS Recovery Utilities&lt;/strong&gt;. Here some options will be presented like the following: -&lt;/p&gt;

&lt;p&gt;a. Restore from Time Machine Backup&lt;/p&gt;

&lt;p&gt;b. Reinstall MacOS&lt;/p&gt;

&lt;p&gt;c. Safari&lt;/p&gt;

&lt;p&gt;d. Disk Utility&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Don't choose to reinstall MacOS just now, this will simply reinstall the current version of MacOS you currently are on. We have to tweak some settings first. From the top bar, select Utilities / Startup Security Utility.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;If secure boot is enabled, you will have to disable it and enable external boot by clicking the radio button next to external boot. Check all options inside external boot. &lt;strong&gt;External Boot&lt;/strong&gt; must be enabled to allow USB or Internet Recovery.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Close the Startup Security Utility, you will be redirected back to the Recovery Menu. Click &lt;strong&gt;Disk Utility&lt;/strong&gt;. If it is not visible, select it from the menu bar at the top Utilities / Disk Utility.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;In the next window, select the top-level internal drive, generally named as &lt;em&gt;Macintosh HD&lt;/em&gt;. You can recognise the drive from its size listed on the right.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;blockquote&gt;
&lt;p&gt;Caution: You have to select the entire drive as a whole. There might be 2 sub volumes shown for the Mac's hard drive. You don't have to select the individual volumes, select the drive as a whole, generally it is the first one under the Internal category.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Install a new OS
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;After selecting Macintosh HD (the top one under Internal that contains the two sub volumes). Click erase. Format it as: -&lt;/p&gt;

&lt;p&gt;. Name: Macintosh HD&lt;/p&gt;

&lt;p&gt;. Format: APFS&lt;/p&gt;

&lt;p&gt;. Scheme: GUID Partition Map (if not shown the Mac handles it out-of-the-box)&lt;/p&gt;

&lt;p&gt;Generally, the above options will be entered by default.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Now, when the formatting completes, you will get the same recovery options as before. Instead of &lt;em&gt;Reinstall MacOS&lt;/em&gt;, there will be an option to reinstall the most compatible operating system for your mac, something like &lt;em&gt;Reinstall MacOS Sequioa&lt;/em&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;If an OS of your choice is not being shown, you have the following options: -&lt;/p&gt;

&lt;p&gt;. ⌘R (Command-R): reinstalls the latest MacOS that was previously installed on your Mac.&lt;/p&gt;

&lt;p&gt;. ⌥⌘R* (Option-Command-R): upgrades and installs the latest version of MacOS compatible with your Mac (in your case → Sequoia).&lt;/p&gt;

&lt;p&gt;. ⇧⌥⌘R (Shift-Option-Command-R): installs the MacOS that originally shipped with your Mac, or the closest version still available.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;That's it, you are all set. Select the OS version of your choice. This will download and install the selected operating system on your Mac. It will take some time according to your network bandwidth and hardware.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The Mac will restart automatically once the installation is complete. You'll see the setup assistant, just follow the prompts to set up your system.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;If you would like to connect with me or share a thought: -&lt;br&gt;
&lt;a href="https://www.linkedin.com/in/abhijit105/" rel="noopener noreferrer"&gt;abhijit105 @ LinkedIn&lt;/a&gt;&lt;br&gt;
&lt;a href="https://github.com/Abhijit105" rel="noopener noreferrer"&gt;Abhijit105 @ GitHub&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://unsplash.com/@yuhaimedia" rel="noopener noreferrer"&gt;Image credits: yuhaimedia @ Unplash&lt;/a&gt;&lt;/p&gt;

</description>
      <category>productivity</category>
      <category>resources</category>
      <category>macos</category>
      <category>apple</category>
    </item>
    <item>
      <title>Dirty bit in NTFS</title>
      <dc:creator>Abhijit Kumar</dc:creator>
      <pubDate>Wed, 06 Aug 2025 14:59:57 +0000</pubDate>
      <link>https://dev.to/abhijit105/dirty-bit-in-ntfs-dif</link>
      <guid>https://dev.to/abhijit105/dirty-bit-in-ntfs-dif</guid>
      <description>&lt;p&gt;Ever come across a situation where you wanted to resize an external ssd, and ended it up messing the ssd drive completely.&lt;/p&gt;

&lt;p&gt;External SSD's especially those on NTFS are extremely sensitive to structural changes and if certain partitions of the disk are moved or resized, they might just give an error in the auto-mount process. At the same time, it will be reasonable to say here that your data remains &lt;em&gt;safe&lt;/em&gt; provided that you have not completely erased your ssd or formatted it.&lt;/p&gt;

&lt;p&gt;Recently, I was resizing an external SSD that I occasionally use to store data - some books, movies, etc. I wanted to free a portion of the ssd space so as to later install Ubuntu on it. That's right, you can install Ubuntu in an external disk already containing some data. After following the usual process of live booting into gparted(a tool used to move/resize drives) and resizing my ssd into the required structure, I rebooted into my current OS ArchOS. I double clicked the ssd and it showed an error :-&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Failed to mount "Seagate Expansion Drive"&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;I was confused, the disk was clearly showing in the connected devices yet was giving an error on opening. Moreover, such things usually &lt;em&gt;do not&lt;/em&gt; happen in Linux OS's. I tried not to panic and instead find the solution; after all around 600 gigs of my data was at stake. I entered the following commands in the terminal :-&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;lsblk &lt;span class="nt"&gt;-f&lt;/span&gt; &lt;span class="c"&gt;# to list all the connected drives&lt;/span&gt;
&lt;span class="c"&gt;# my device was listed as /sdb1&lt;/span&gt;
&lt;span class="nb"&gt;sudo mkdir&lt;/span&gt; &lt;span class="nt"&gt;-p&lt;/span&gt; /mnt/external
&lt;span class="nb"&gt;sudo &lt;/span&gt;mount /dev/sdb1 /mnt/external &lt;span class="c"&gt;# to mount all the data&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This allowed me some headspace, I could see all the data in this mounted folder; at least my data was &lt;em&gt;safe&lt;/em&gt;. This is the first thing you should do when your data gets lost, try to mount it to a folder and see if you can recover your data. Then, I tried to fix my ssd of any errors :-&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;sudo ntfsfix /dev/sdb1 # my drive is ntfs
sudo fsck.exfat /dev/sdb1 # for exfat
sudo fsck.ext4 /dev/sdb1 # for ext4

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;I unplugged the disk and reconnected it. Still the same behaviour. In such cases it is advisable to check for the dirty bit(more about it later) :-&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;sudo ntfsfix --clear-dirty /dev/sdb1 # clears the dirty bit

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;and voila, it worked. I was happy again, to see my external ssd mount again in the usual fashion and guess what all the data was intact; ntfs does a good job at that!&lt;/p&gt;

&lt;p&gt;So, turns out that if the external ssd is not properly unmounted and safely removed, it might get marked as "dirty". When I later plugged it into my normal Linux system, it refused to auto-mount to prevent data corruption.&lt;/p&gt;

&lt;p&gt;If you would like to connect with me or share a thought, you can do so at :-&lt;br&gt;
&lt;a href="https://www.linkedin.com/in/abhijit105/" rel="noopener noreferrer"&gt;abhijit105 @ LinkedIn&lt;/a&gt;&lt;br&gt;
&lt;a href="https://github.com/Abhijit105" rel="noopener noreferrer"&gt;Abhijit105 @ GitHub&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Image credits: &lt;a href="https://pixabay.com/users/mariakray-23567841/" rel="noopener noreferrer"&gt;Mariakray @ Pixabay&lt;/a&gt;&lt;/p&gt;

</description>
      <category>linux</category>
      <category>gparted</category>
      <category>ssd</category>
    </item>
    <item>
      <title>How to authenticate using GitHub Auth</title>
      <dc:creator>Abhijit Kumar</dc:creator>
      <pubDate>Thu, 10 Apr 2025 16:28:23 +0000</pubDate>
      <link>https://dev.to/abhijit105/how-to-authenticate-using-github-auth-4kik</link>
      <guid>https://dev.to/abhijit105/how-to-authenticate-using-github-auth-4kik</guid>
      <description>&lt;p&gt;Hi everybody! Today I will guide you through setting up and using GitHub CLI to authenticate to GitHub. This procedure uses a Personal Access Token that is a special password you can use to login to GitHub instead of your actual account password. It is more secure than the usual login password but to be frank not as secure and convenient as authentication through SSH.&lt;br&gt;
The first step is to have the github cli tool in your computer. I presently have ArchLinux, so I enter the following command to install it. You can use the package manager on your system to install it on your system.&lt;br&gt;
&lt;code&gt;yay -S github-cli&lt;/code&gt;&lt;br&gt;
Once this is done, you will have to go over to the GitHub website and create a personal access token.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Go to &lt;code&gt;settings&lt;/code&gt; on your GitHub profile.&lt;/li&gt;
&lt;li&gt;Click &lt;code&gt;Developer Settings&lt;/code&gt; on the left sidebar.&lt;/li&gt;
&lt;li&gt;On the left select and click &lt;code&gt;Classic Personal Access Token&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Then, click on &lt;code&gt;Generate new token(classic)&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;You can write a note for your reference. And check &lt;code&gt;repo&lt;/code&gt;, &lt;code&gt;workflow&lt;/code&gt; and &lt;code&gt;admin:org&lt;/code&gt; scopes.
You can also provide an expiration date if required. That's it the token is generated. Save it in a safe place as it will not be accessible later.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Now, we have to access a folder in VS Code. Go to the terminal, and type &lt;code&gt;gh auth login&lt;/code&gt;&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fu9e0prrkru57bd4vomeb.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fu9e0prrkru57bd4vomeb.png" alt="Image description" width="800" height="146"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Select GitHub.com.&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fudp6ivqa176ef2o1tydq.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fudp6ivqa176ef2o1tydq.png" alt="terminal view showing step-by-step process of login using gh auth login command of github cli tool" width="800" height="139"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Then, on the next prompt select HTTPS.&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F40z9q3aquertvptreqbw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F40z9q3aquertvptreqbw.png" alt="terminal view showing step-by-step process of login using gh auth login command of github cli tool" width="800" height="146"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Next, the computer will ask to authenticate using GitHub credentials. Select yes.&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxrsx1nhtwludinxbtwj2.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxrsx1nhtwludinxbtwj2.png" alt="terminal view showing step-by-step process of login using gh auth login command of github cli tool" width="800" height="147"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Finally, select the option to paste an authentication token and paste it in the required prompt.&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F55uay7knfn3665az8irb.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F55uay7knfn3665az8irb.png" alt="terminal view showing step-by-step process of login using gh auth login command of github cli tool" width="800" height="147"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fgnhkr31zz1ya52r1t7cq.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fgnhkr31zz1ya52r1t7cq.png" alt="terminal view showing step-by-step process of login using gh auth login command of github cli tool" width="800" height="146"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F87jpuh15mfkr3sv5w2vo.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F87jpuh15mfkr3sv5w2vo.png" alt="terminal view showing step-by-step process of login using gh auth login command of github cli tool" width="800" height="147"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;That's it you are now logged in through your own created Personal Access Token, and this process is way more secure. It is also suitable to be employed by beginner developers. &lt;/p&gt;

</description>
      <category>webdev</category>
      <category>beginners</category>
      <category>github</category>
      <category>cli</category>
    </item>
  </channel>
</rss>
