<?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: Prasanth Bupd</title>
    <description>The latest articles on DEV Community by Prasanth Bupd (@bupd).</description>
    <link>https://dev.to/bupd</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%2F1120469%2Faee7776e-e4ca-42fd-8525-f39a55fd8ea9.jpg</url>
      <title>DEV Community: Prasanth Bupd</title>
      <link>https://dev.to/bupd</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/bupd"/>
    <language>en</language>
    <item>
      <title>How to Run Github Actions Locally??</title>
      <dc:creator>Prasanth Bupd</dc:creator>
      <pubDate>Wed, 15 Oct 2025 10:06:34 +0000</pubDate>
      <link>https://dev.to/bupd/how-to-run-github-actions-locally-398c</link>
      <guid>https://dev.to/bupd/how-to-run-github-actions-locally-398c</guid>
      <description>&lt;p&gt;This blog is written to serve people who are looking to run github actions locally for faster developer workflows and not get into the “push and pray” hell. No more 50 commits to make the actions work—simply run GitHub Actions locally!! with &lt;a href="https://nektosact.com/" rel="noopener noreferrer"&gt;act&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;If you want to test GitHub Actions without constantly pushing commits, &lt;strong&gt;&lt;a href="https://nektosact.com/" rel="noopener noreferrer"&gt;act&lt;/a&gt;&lt;/strong&gt; is the tool you need. It runs your workflows locally, using the same environment GitHub provides, so you get instant feedback and can debug faster.&lt;/p&gt;

&lt;h2&gt;
  
  
  Steps to Use Act
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Install Act&lt;/strong&gt;&lt;br&gt;
Follow instructions on &lt;a href="https://github.com/nektos/act" rel="noopener noreferrer"&gt;act’s official repo&lt;/a&gt; to install it on your system.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Run Your Workflows&lt;/strong&gt;&lt;br&gt;
Inside your project, run:&lt;br&gt;
&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;act
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This executes the workflows defined in &lt;code&gt;.github/workflows/&lt;/code&gt; locally.&lt;/p&gt;

&lt;p&gt;That’s it. No pushing, no waiting—just run your GitHub Actions locally and get faster feedback.&lt;/p&gt;

&lt;h3&gt;
  
  
  Links
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://nektosact.com/" rel="noopener noreferrer"&gt;Act Official Site&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/nektos/act" rel="noopener noreferrer"&gt;GitHub Repository&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>github</category>
      <category>githubactions</category>
      <category>git</category>
    </item>
    <item>
      <title>Geek's Guide to Kubernetes Image Credential Provider Plugins: No Bloat</title>
      <dc:creator>Prasanth Bupd</dc:creator>
      <pubDate>Sat, 30 Aug 2025 19:02:50 +0000</pubDate>
      <link>https://dev.to/bupd/geeks-guide-to-kubernetes-image-credential-provider-plugins-no-bloat-54mh</link>
      <guid>https://dev.to/bupd/geeks-guide-to-kubernetes-image-credential-provider-plugins-no-bloat-54mh</guid>
      <description>&lt;p&gt;I spent more than 8 hours wrestling with Kubernetes image credential provider plugins before finally stumbling upon the real solution. If you think this is as simple as dropping a config into &lt;a href="https://kind.sigs.k8s.io/" rel="noopener noreferrer"&gt;Kind&lt;/a&gt; or &lt;a href="https://minikube.sigs.k8s.io/docs/start/" rel="noopener noreferrer"&gt;Minikube&lt;/a&gt; think again. It doesn’t work that way, and I’d rather save you the wasted time I went through.&lt;/p&gt;

&lt;p&gt;This guide comes from someone who considers a debugger “bloat.” If you share that mindset, you’ll feel right at home.&lt;/p&gt;

&lt;p&gt;In this blog, I will walk you step by step through setting up a &lt;a href="https://kubernetes.io/docs/tasks/administer-cluster/kubelet-credential-provider/" rel="noopener noreferrer"&gt;Kubernetes image credential provider plugin&lt;/a&gt; in a Kind cluster. We’ll manually configure the Kubelet to use your &lt;a href="https://github.com/bupd/k8stemps/blob/main/credential-provider-plugin/main.go" rel="noopener noreferrer"&gt;custom credential provider plugin&lt;/a&gt;. no shortcuts, no bloat, just the essentials.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 1
&lt;/h2&gt;

&lt;p&gt;🔹Create your Cluster.&lt;/p&gt;

&lt;p&gt;I am going for a basic three-node cluster to work with. Use the following configuration to spin it up. This setup includes one control-plane node and two worker nodes. feel free to add more configs if you want.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;# this config file contains all config fields with comments
kind: Cluster
apiVersion: kind.x-k8s.io/v1alpha4
nodes:
# the control plane node config
- role: control-plane
# the workers
- role: worker
- role: worker
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Step 2
&lt;/h2&gt;

&lt;p&gt;🔹Copy the Credential Provider Plugin Binary and Config to all the nodes.&lt;/p&gt;

&lt;p&gt;You can also use a daemonset to do this in production. but I have gone with simple docker cp. Because we are still in the development stage of the credential-provider-plugin. I have my credentilal-plugin and config in a directory&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;❯ &lt;span class="nb"&gt;ls&lt;/span&gt; &lt;span class="nt"&gt;-la&lt;/span&gt; credential-provider-plugin
total 22524
drwxr-xr-x  2 bupd bupd     4096 Aug 30 06:21 &lt;span class="nb"&gt;.&lt;/span&gt;
drwxr-xr-x 22 bupd bupd     4096 Aug 30 06:23 ..
&lt;span class="nt"&gt;-rw-r--r--&lt;/span&gt;  1 bupd bupd      495 Aug 30 06:21 config.yml                     &lt;span class="c"&gt;# config&lt;/span&gt;
&lt;span class="nt"&gt;-rwxr-xr-x&lt;/span&gt;  1 bupd bupd 12034738 Aug 30 06:18 credential-provider-echo-token &lt;span class="c"&gt;# binary&lt;/span&gt;
&lt;span class="nt"&gt;-rwxr-xr-x&lt;/span&gt;  1 bupd bupd 10988078 Aug 28 17:25 credential-provider-echo-token-old
&lt;span class="nt"&gt;-rw-r--r--&lt;/span&gt;  1 bupd bupd      993 Aug 28 17:24 go.mod
&lt;span class="nt"&gt;-rw-r--r--&lt;/span&gt;  1 bupd bupd     8341 Aug 28 17:24 go.sum
&lt;span class="nt"&gt;-rw-r--r--&lt;/span&gt;  1 bupd bupd     3088 Aug 30 06:18 main.go
&lt;span class="nt"&gt;-rw-r--r--&lt;/span&gt;  1 bupd bupd     1734 Aug 28 17:25 README.md

&lt;span class="c"&gt;# copy the entire folder into k8s nodes&lt;/span&gt;
docker &lt;span class="nb"&gt;cp&lt;/span&gt; ./credential-provider-plugin kind-control-plane:/etc/kubernetes/credential-providers
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Step 3
&lt;/h2&gt;

&lt;p&gt;🔹Modify the Kubelet Configuration&lt;/p&gt;

&lt;p&gt;The real fun begins now. The Kubelet's configuration on a kind cluster is managed by a file called kubeadm-flags.env. We need to pull this file from the control-plane node, modify it, and push it back.&lt;/p&gt;

&lt;p&gt;It will be located in &lt;code&gt;/var/lib/kubelet/kubeadm-flags.env&lt;/code&gt; &lt;a href="https://kubernetes.io/docs/setup/production-environment/tools/kubeadm/kubelet-integration/#configure-kubelets-using-kubeadm" rel="noopener noreferrer"&gt;*link&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Now copy the file from k8s node to host&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;docker cp kind-control-plane:/var/lib/kubelet/kubeadm-flags.env ./kubeadm-flags-kind.env
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Edit the file to include the credential provider flags&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;code&gt;--image-credential-provider-bin-dir: The directory where our plugin binary resides.&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;--image-credential-provider-config: The path to the configuration file for the plugin.&lt;/code&gt;
Note: Don't forget to separately quote the values. Seriously, I've seen two hours vanish because of this.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Before:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;KUBELET_KUBEADM_ARGS="--node-ip=172.18.0.3 --node-labels= --pod-infra-container-image=registry.k8s.io/pause:3.10.1 --provider-id=kind://docker/kind/kind-control-plane"
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;After:&lt;/p&gt;

&lt;p&gt;do remember to add the &lt;code&gt;’&lt;/code&gt; to the values.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;KUBELET_KUBEADM_ARGS="--node-ip=172.18.0.3 --node-labels= --pod-infra-container-image=registry.k8s.io/pause:3.10.1 --provider-id=kind://docker/kind/kind-control-plane --image-credential-provider-bin-dir='/etc/kubernetes/credential-providers' --image-credential-provider-config='/etc/kubernetes/credential-providers/config.yml'"
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Copy the modified file back to the control plane&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;docker cp ./kubeadm-flags-kind.env kind-control-plane:/var/lib/kubelet/kubeadm-flags.env
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Step 4
&lt;/h2&gt;

&lt;p&gt;🔹Restart the kubelet&lt;/p&gt;

&lt;p&gt;Get into the control-plane node&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;docker exec -it kind-control-plane sh
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;once you are inside the node execute the below command&lt;/p&gt;

&lt;p&gt;Run the reload and restart commands&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;systemctl daemon-reload &amp;amp;&amp;amp; systemctl restart kubelet
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Step 5
&lt;/h2&gt;

&lt;p&gt;The most reliable way to verify if your plugin is working is to embed a webhook into it. This allows all inputs and outputs to be sent to a webhook endpoint, giving you a straightforward way to monitor the plugin’s execution. While it may feel a bit hacky, i love it. implementation here&lt;/p&gt;

&lt;p&gt;Another way to test the plugin is by pulling an image that requires the default static credentials configured in your plugin. If the plugin is working correctly, the pod should start successfully with the image, confirming that the pull operation uses the expected credentials.&lt;/p&gt;

&lt;p&gt;You can try this by applying the example &lt;a href="https://github.com/bupd/k8stemps/blob/main/sapod-test.yaml" rel="noopener noreferrer"&gt;&lt;code&gt;pod.yaml&lt;/code&gt;&lt;/a&gt; file:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;kubectl apply -f pod.yaml
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Once the pod starts, you’ll be able to confirm that the hardcoded credentials from the credential-provider-plugin is being used as intended.&lt;/p&gt;

&lt;p&gt;If you have other ideas or approaches for monitoring plugin execution, feel free to share them in the comments!&lt;/p&gt;

&lt;h2&gt;
  
  
  Bonus
&lt;/h2&gt;

&lt;p&gt;Here is a simple script with which you can automate all this.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/bupd/k8stemps/blob/c0ffeeba2e0b53e63f69b244e5cc2f7e0e6698c9/test-kind-credential-provider-plugin.sh" rel="noopener noreferrer"&gt;https://github.com/bupd/k8stemps/blob/c0ffeeba2e0b53e63f69b244e5cc2f7e0e6698c9/test-kind-credential-provider-plugin.sh&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  📚 References
&lt;/h2&gt;

&lt;p&gt;This is a finicky process, and things can go wrong. Here are some resources that I found invaluable while navigating this.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Official Docs&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://kubernetes.io/docs/setup/production-environment/tools/kubeadm/control-plane-flags/" rel="noopener noreferrer"&gt;https://kubernetes.io/docs/setup/production-environment/tools/kubeadm/control-plane-flags/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://kubernetes.io/docs/reference/command-line-tools-reference/kubelet/" rel="noopener noreferrer"&gt;https://kubernetes.io/docs/reference/command-line-tools-reference/kubelet/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://kubernetes.io/docs/setup/production-environment/tools/kubeadm/kubelet-integration/" rel="noopener noreferrer"&gt;https://kubernetes.io/docs/setup/production-environment/tools/kubeadm/kubelet-integration/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://kubernetes.io/docs/reference/config-api/kubelet-credentialprovider.v1/#credentialprovider-kubelet-k8s-io-v1-CredentialProviderResponse" rel="noopener noreferrer"&gt;https://kubernetes.io/docs/reference/config-api/kubelet-credentialprovider.v1/#credentialprovider-kubelet-k8s-io-v1-CredentialProviderResponse&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;p&gt;Example Implementations&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/liggitt/kubernetes/tree/0904efcc86d02c8e6b71961ecae92d6cc41ddf40/staging/src/k8s.io/kubelet/cmd/credential-provider-echo-token" rel="noopener noreferrer"&gt;credential-provider-echo-token&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/kubernetes/cloud-provider-aws/tree/master/cmd/ecr-credential-provider" rel="noopener noreferrer"&gt;ecr credential provider&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/cloudsmith-io/cloudsmith-kubernetes-credential-provider/blob/master/main.go" rel="noopener noreferrer"&gt;cloudsmith-kubernetes-credential-provider&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;p&gt;Config Tips&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://stackoverflow.com/questions/69343508/whats-the-purpose-of-a-pods-service-account-if-automountserviceaccounttoken-i" rel="noopener noreferrer"&gt;https://stackoverflow.com/questions/69343508/whats-the-purpose-of-a-pods-service-account-if-automountserviceaccounttoken-i&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://faun.pub/feature-gates-how-to-enable-kubernetes-alpha-features-fdb38dc3a9aa" rel="noopener noreferrer"&gt;https://faun.pub/feature-gates-how-to-enable-kubernetes-alpha-features-fdb38dc3a9aa&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;p&gt;For people trying to use this in proxy environments&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://github.com/kubernetes-sigs/kind/issues/2009" rel="noopener noreferrer"&gt;https://github.com/kubernetes-sigs/kind/issues/2009&lt;/a&gt; if you are using proxy - which is another problem on its own.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://medium.com/@schottz/how-to-skip-tls-verify-fot-internal-registry-on-containerd-e039887bcb83" rel="noopener noreferrer"&gt;https://medium.com/@schottz/how-to-skip-tls-verify-fot-internal-registry-on-containerd-e039887bcb83&lt;/a&gt; atleast this doesnt work for me if you are using proxy this might help but it doesn't work for me.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

</description>
      <category>kubernetes</category>
      <category>devops</category>
      <category>architecture</category>
      <category>docker</category>
    </item>
    <item>
      <title>Programmers are not workhorses</title>
      <dc:creator>Prasanth Bupd</dc:creator>
      <pubDate>Tue, 26 Mar 2024 16:14:55 +0000</pubDate>
      <link>https://dev.to/bupd/programmers-are-not-workhorses-3ie0</link>
      <guid>https://dev.to/bupd/programmers-are-not-workhorses-3ie0</guid>
      <description>&lt;h2&gt;
  
  
  What...??
&lt;/h2&gt;

&lt;p&gt;Programmers are a unique breed. We're not just following orders and churning out code. We're &lt;strong&gt;creative problem-solvers&lt;/strong&gt; who build the digital world around us.&lt;/p&gt;

&lt;p&gt;Ever wondered why that app works so flawlessly or that website is so intuitive? That's the handiwork of programmers.&lt;/p&gt;

&lt;p&gt;As programmers/coders we tend to take complex challenges and break them down into elegant solutions.&lt;/p&gt;

&lt;p&gt;Sure, code is our language, but our minds are constantly buzzing with ideas. We might even catch ourselves thinking about code in the shower! Or even catch thinking about code even when watching a movie. The desire to learn and improve is ingrained in us. New technologies are like shiny objects to us, and we can't wait to tinker and see what they can do.&lt;/p&gt;

&lt;p&gt;But here's the thing: being a programmer isn't about burying yourself in code 24/7. It's about finding a great place to bury yourself within the code It's about burying yourself with what you love.&lt;/p&gt;

&lt;p&gt;While some might assume we only talk about code, it's because we're passionate! We want to share our knowledge and the excitement of building something cool.&lt;/p&gt;

&lt;p&gt;Think of us... as artists. We craft functional masterpieces with lines of code. We take pride in making things not just work, but create bugs beautifully.&lt;/p&gt;

&lt;p&gt;You may think I am romanticizing the term programmer. well actually, Programming is not like any other job. It is different I mean &lt;strong&gt;It is different&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;I mostly hang around with people who does not have a programming background.&lt;/p&gt;

&lt;p&gt;I note some strange things with them and our work life as a programmer.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;There is a huge issue in the programming field.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;the programming field is inflated to the curve than any other fields.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Does that mean programmers are earning more than their worth. NO, not actually there are programmers which do not see programming as a job. They see programming as fun. But they do take coding their career. So WHAT.&lt;/p&gt;

&lt;p&gt;We as programmers have an innate problem within ourselves.&lt;/p&gt;

&lt;h2&gt;
  
  
  Working and thinking about code all the time.
&lt;/h2&gt;

&lt;p&gt;Have you ever had shower thoughts about your code. or the error you need to fix by the end of day. The coding side got into your social life so well, that you cannot say it's not.&lt;/p&gt;

&lt;p&gt;I have a friend who is studying commerce and I speak about how I solved all this coding problems in leetcode or how I manage to fix a bug in production and I do talked about my cloud bills too. He also knows the new shiny thing that came around in js ecosystem. All because of me.&lt;/p&gt;

&lt;p&gt;I also had convos with my friends, where I say about my neovim config and tmux. and why ARCH LINUX is tippy-top of all distros.&lt;/p&gt;

&lt;p&gt;How well I manage my productivity with my configs and how each of those scripts integrates with my workflow. And how well arch linux is constructed and the philosophy of unix. All of these things. I know for sure, that he doesn't understand a single word am talking about linux. In fact, he doesn't even have a computer, when I come to think of it.&lt;/p&gt;

&lt;p&gt;But, you get the point right..!&lt;/p&gt;

&lt;h2&gt;
  
  
  All I talk about is programming:
&lt;/h2&gt;

&lt;p&gt;I have less friends because whatever comes to my mind is about programming why is that should be like that. Does that mean I do not have a life.&lt;/p&gt;

&lt;p&gt;You should be heard that experienced people and seniors saying code code code, code-more and think about code all the time.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;code&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;code&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;code more and more code&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;do side projects,&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;more side projects, and a good side project&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;problem-solving&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;solve problems, think like a compiler, leetcode&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;grind leetcode etc etc., All the time.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;grind leetcode. Do mock interviews do side projects in your free time. build stuffs with programming. Build the stuffs you wish you had.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why is it always should be about programming.
&lt;/h2&gt;

&lt;p&gt;For a person working as a doctor, he doesn't go around giving injections/medications to people for hobby or he doesn't do operations as a side project. This may not be an apt example. But bear with me.&lt;/p&gt;

&lt;p&gt;Most of programmers have programming as their hobby, as their work, as their life and maybe who knows as their wife too, no sorry as their &lt;strong&gt;enjoyment&lt;/strong&gt; too. they do only one thing and that is &lt;strong&gt;code&lt;/strong&gt;. either they are in a party or they are in their basement all they think is about programming. Invest more time put more time in your craft why does it need to be like that.&lt;/p&gt;

&lt;p&gt;Why does it always need to be about Code..?&lt;/p&gt;

&lt;p&gt;Since Mechanical or Electrical Engineers or any sort of engineering rather than software. They work for 8-10 hours per day and they don't even think of their work after that period of time. They have their anxiety too low compared to programmers.&lt;/p&gt;

&lt;p&gt;Take hard workers such as cleaners, gardeners, carpenters etc., these jobs don't require too much skills and they don't grind like a leetcoder. Comparing to these people we as programmers tend to work more, think more, and do less but why is that should be like that. We too humans right.&lt;/p&gt;

&lt;p&gt;Why we need to think of programming all the time and learn new technologies and go deepen our knowledge. why is that.&lt;/p&gt;

&lt;p&gt;I repeat.&lt;/p&gt;

&lt;h2&gt;
  
  
  Programmers are not workhorses.
&lt;/h2&gt;

&lt;p&gt;Think of a man who works in the KFC or McDonald he tend to earn less than a average programmer. But he tend to do more physical work than a programmer.&lt;/p&gt;

&lt;p&gt;We programmers are artists. &lt;strong&gt;We create art&lt;/strong&gt;. we live with the computer. Which have delicate parts and mechanical keyboards which has delicacy sounding keys. which is in no comparison with the carpenter or a mechanic using their tools. they tend to do a lot of physical work compared to us.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;The more delicate the work, the greater the requirement for creativity and artistry. As a programmer, I consider myself an artist, meticulously crafting solutions with the precision and finesse akin to that of a painter with their brush.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;that's why I tend to go around with arch linux and neovim spending my life configuring it.&lt;/p&gt;

&lt;p&gt;Where each of my keystrokes are intended to do great things and each of them have such a delicacy improving my &lt;strong&gt;productivity&lt;/strong&gt; in programming.&lt;/p&gt;

&lt;p&gt;These thoughts came into my mind, When I was sitting in my class bored and heard someone say put your life into programming... I asked why. but he didn't have an answer neither do I. But now I had found the answer that putting your life into the programming is worth more than you think. because you are not spending your life doing dumb chores. You are not replaceable. you are an artist creating an art. An art that makes people life easier. and productive.&lt;/p&gt;

&lt;p&gt;Human life span is limited we didn't have endless amount of years to live we live only for a short time. The amount of things we accomplish is fully dependent on the scale of how productive we are.&lt;/p&gt;

&lt;p&gt;So, bupd at the eod what are you trying to say are you trying to say that programmers need to devote their lives for programming no it's not what i mean. Its absolutely against my point.&lt;/p&gt;

&lt;h2&gt;
  
  
  So What I mean:
&lt;/h2&gt;

&lt;p&gt;If you are enthusiastic enough and if the programming is the right thing for you. You tend to go over the large problems and you may try to create all of it by yourself. &lt;strong&gt;"YOU will enjoy more than you think by reinventing the wheel rather than creating a crud app"&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Thanks have a great day.&lt;/p&gt;

&lt;p&gt;-bupd.&lt;/p&gt;

</description>
      <category>programming</category>
      <category>productivity</category>
      <category>softwaredevelopment</category>
      <category>archlinux</category>
    </item>
    <item>
      <title>Programmers are not workhorses</title>
      <dc:creator>Prasanth Bupd</dc:creator>
      <pubDate>Mon, 25 Mar 2024 16:59:23 +0000</pubDate>
      <link>https://dev.to/bupd/programmers-are-not-workhorses-11n9</link>
      <guid>https://dev.to/bupd/programmers-are-not-workhorses-11n9</guid>
      <description>&lt;h2&gt;
  
  
  What...??
&lt;/h2&gt;

&lt;p&gt;Programmers are a unique breed. We're not just following orders and churning out code. We're &lt;strong&gt;creative problem-solvers&lt;/strong&gt; who build the digital world around us.&lt;/p&gt;

&lt;p&gt;Ever wondered why that app works so flawlessly or that website is so intuitive? That's the handiwork of programmers.&lt;/p&gt;

&lt;p&gt;As programmers/coders we tend to take complex challenges and break them down into elegant solutions.&lt;/p&gt;

&lt;p&gt;Sure, code is our language, but our minds are constantly buzzing with ideas. We might even catch ourselves thinking about code in the shower! Or even catch thinking about code even when watching a movie. The desire to learn and improve is ingrained in us. New technologies are like shiny objects to us, and we can't wait to tinker and see what they can do.&lt;/p&gt;

&lt;p&gt;But here's the thing: being a programmer isn't about burying yourself in code 24/7. It's about finding a great place to bury yourself within the code It's about burying yourself with what you love.&lt;/p&gt;

&lt;p&gt;While some might assume we only talk about code, it's because we're passionate! We want to share our knowledge and the excitement of building something cool.&lt;/p&gt;

&lt;p&gt;Think of us... as artists. We craft functional masterpieces with lines of code. We take pride in making things not just work, but create bugs beautifully.&lt;/p&gt;

&lt;p&gt;You may think I am romanticizing the term programmer. well actually, Programming is not like any other job. It is different I mean &lt;strong&gt;It is different&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;I mostly hang around with people who does not have a programming background.&lt;/p&gt;

&lt;p&gt;I note some strange things with them and our work life as a programmer.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;There is a huge issue in the programming field.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;the programming field is inflated to the curve than any other fields.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Does that mean programmers are earning more than their worth. NO, not actually there are programmers which do not see programming as a job. They see programming as fun. But they do take coding their career. So WHAT.&lt;/p&gt;

&lt;p&gt;We as programmers have an innate problem within ourselves.&lt;/p&gt;

&lt;h2&gt;
  
  
  Working and thinking about code all the time.
&lt;/h2&gt;

&lt;p&gt;Have you ever had shower thoughts about your code. or the error you need to fix by the end of day. The coding side got into your social life so well, that you cannot say it's not.&lt;/p&gt;

&lt;p&gt;I have a friend who is studying commerce and I speak about how I solved all this coding problems in leetcode or how I manage to fix a bug in production and I do talked about my cloud bills too. He also knows the new shiny thing that came around in js ecosystem. All because of me.&lt;/p&gt;

&lt;p&gt;I also had convos with my friends, where I say about my neovim config and tmux. and why ARCH LINUX is tippy-top of all distros.&lt;/p&gt;

&lt;p&gt;How well I manage my productivity with my configs and how each of those scripts integrates with my workflow. And how well arch linux is constructed and the philosophy of unix. All of these things. I know for sure, that he doesn't understand a single word am talking about linux. In fact, he doesn't even have a computer, when I come to think of it.&lt;/p&gt;

&lt;p&gt;But, you get the point right..!&lt;/p&gt;

&lt;h2&gt;
  
  
  All I talk about is programming:
&lt;/h2&gt;

&lt;p&gt;I have less friends because whatever comes to my mind is about programming why is that should be like that. Does that mean I do not have a life.&lt;/p&gt;

&lt;p&gt;You should be heard that experienced people and seniors saying code code code, code-more and think about code all the time.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;code&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;code&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;code more and more code&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;do side projects,&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;more side projects, and a good side project&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;problem-solving&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;solve problems, think like a compiler, leetcode&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;grind leetcode etc etc., All the time.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;grind leetcode. Do mock interviews do side projects in your free time. build stuffs with programming. Build the stuffs you wish you had.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why is it always should be about programming.
&lt;/h2&gt;

&lt;p&gt;For a person working as a doctor, he doesn't go around giving injections/medications to people for hobby or he doesn't do operations as a side project. This may not be an apt example. But bear with me.&lt;/p&gt;

&lt;p&gt;Most of programmers have programming as their hobby, as their work, as their life and maybe who knows as their wife too, no sorry as their &lt;strong&gt;enjoyment&lt;/strong&gt; too. they do only one thing and that is &lt;strong&gt;code&lt;/strong&gt;. either they are in a party or they are in their basement all they think is about programming. Invest more time put more time in your craft why does it need to be like that.&lt;/p&gt;

&lt;p&gt;Why does it always need to be about Code..?&lt;/p&gt;

&lt;p&gt;Since Mechanical or Electrical Engineers or any sort of engineering rather than software. They work for 8-10 hours per day and they don't even think of their work after that period of time. They have their anxiety too low compared to programmers.&lt;/p&gt;

&lt;p&gt;Take hard workers such as cleaners, gardeners, carpenters etc., these jobs don't require too much skills and they don't grind like a leetcoder. Comparing to these people we as programmers tend to work more, think more, and do less but why is that should be like that. We too humans right.&lt;/p&gt;

&lt;p&gt;Why we need to think of programming all the time and learn new technologies and go deepen our knowledge. why is that.&lt;/p&gt;

&lt;p&gt;I repeat.&lt;/p&gt;

&lt;h2&gt;
  
  
  Programmers are not workhorses.
&lt;/h2&gt;

&lt;p&gt;Think of a man who works in the KFC or McDonald he tend to earn less than a average programmer. But he tend to do more physical work than a programmer.&lt;/p&gt;

&lt;p&gt;We programmers are artists. &lt;strong&gt;We create art&lt;/strong&gt;. we live with the computer. Which have delicate parts and mechanical keyboards which has delicacy sounding keys. which is in no comparison with the carpenter or a mechanic using their tools. they tend to do a lot of physical work compared to us.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;The more delicate the work, the greater the requirement for creativity and artistry. As a programmer, I consider myself an artist, meticulously crafting solutions with the precision and finesse akin to that of a painter with their brush.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;that's why I tend to go around with arch linux and neovim spending my life configuring it.&lt;/p&gt;

&lt;p&gt;Where each of my keystrokes are intended to do great things and each of them have such a delicacy improving my &lt;strong&gt;productivity&lt;/strong&gt; in programming.&lt;/p&gt;

&lt;p&gt;These thoughts came into my mind, When I was sitting in my class bored and heard someone say put your life into programming... I asked why. but he didn't have an answer neither do I. But now I had found the answer that putting your life into the programming is worth more than you think. because you are not spending your life doing dumb chores. You are not replaceable. you are an artist creating an art. An art that makes people life easier. and productive.&lt;/p&gt;

&lt;p&gt;Human life span is limited we didn't have endless amount of years to live we live only for a short time. The amount of things we accomplish is fully dependent on the scale of how productive we are.&lt;/p&gt;

&lt;p&gt;So, bupd at the eod what are you trying to say are you trying to say that programmers need to devote their lives for programming no it's not what i mean. Its absolutely against my point.&lt;/p&gt;

&lt;h2&gt;
  
  
  So What I mean:
&lt;/h2&gt;

&lt;p&gt;If you are enthusiastic enough and if the programming is the right thing for you. You tend to go over the large problems and you may try to create all of it by yourself. &lt;strong&gt;"YOU will enjoy more than you think by reinventing the wheel rather than creating a crud app"&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Thanks have a great day.&lt;/p&gt;

&lt;p&gt;-bupd.&lt;/p&gt;

</description>
      <category>programming</category>
      <category>productivity</category>
      <category>softwaredevelopment</category>
      <category>archlinux</category>
    </item>
    <item>
      <title>Contribute to Zulip: A Beginner's Guide</title>
      <dc:creator>Prasanth Bupd</dc:creator>
      <pubDate>Mon, 25 Mar 2024 16:56:51 +0000</pubDate>
      <link>https://dev.to/bupd/contribute-to-zulip-a-beginners-guide-7fn</link>
      <guid>https://dev.to/bupd/contribute-to-zulip-a-beginners-guide-7fn</guid>
      <description>&lt;p&gt;Are you eager to contribute to the vibrant Zulip open-source community but intimidated by the initial setup process? Fear not! This beginner-friendly guide will walk you through the essential steps, overcoming common setup challenges and empowering you to make your first meaningful contribution to Zulip.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Hard Way:
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://zulip.readthedocs.io/en/latest/" rel="noopener noreferrer"&gt;&lt;strong&gt;&lt;em&gt;[Read the Docs]&lt;/em&gt;&lt;/strong&gt;&lt;/a&gt; The best resource you will ever find!&lt;/p&gt;

&lt;h2&gt;
  
  
  Understanding the Initial Setup Challenge:
&lt;/h2&gt;

&lt;h3&gt;
  
  
  The Roadblock:
&lt;/h3&gt;

&lt;p&gt;One of the primary hurdles for new contributors is the initial setup, which can be perceived as challenging and time-consuming. This guide will help you navigate through this obstacle, ensuring a smoother onboarding experience.&lt;/p&gt;

&lt;h3&gt;
  
  
  Tools You'll Need:
&lt;/h3&gt;

&lt;p&gt;Before diving into the setup process, make sure you have Vagrant, &lt;a href="http://Docker.io" rel="noopener noreferrer"&gt;Docker.io&lt;/a&gt;, and Git&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;sudo apt install vagrant docker.io git

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

&lt;/div&gt;



&lt;p&gt;installed on your system. These tools are essential for creating a development environment for Zulip.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Solution: Overcoming Connection Issues
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;#the only commands you will need
vagrant up
vagrant provision
vagrant ssh


(env)
./tools/run-dev

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

&lt;/div&gt;



&lt;p&gt;If any error occurs while developing read the docs or just google it.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Beware! Blindly running commands can severely damage your system, even with the help of large language models like GPT and Bard.&lt;/strong&gt; I experienced this firsthand and am writing this to prevent others from making the same mistake.&lt;/p&gt;

&lt;h3&gt;
  
  
  A Frustrating Journey:
&lt;/h3&gt;

&lt;p&gt;Many contributors, including myself, have faced connectivity issues while setting up Zulip. Despite thorough documentation readings, some errors may persist, leaving you feeling stranded.&lt;/p&gt;

&lt;h3&gt;
  
  
  Seeking Help:
&lt;/h3&gt;

&lt;p&gt;Don't hesitate to reach out for assistance. The Zulip community has dedicated channels for learning, and the documentation provides in-depth information. If you encounter difficulties, don't panicothers might be facing the same issues.&lt;/p&gt;

&lt;p&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%2F6hyyght14fsaxiwc8ysk.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%2F6hyyght14fsaxiwc8ysk.png" alt="Zulip Software - 2023 Reviews, Pricing &amp;amp; Demo" width="800" height="387"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Ok then Lets start with the development &lt;code&gt;vagrant up --provider=docker&lt;/code&gt; start with this&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Step 1/8 : FROM ubuntu:20.04
 ---&amp;gt; 83a4bf3bb050
Step 2/8 : ARG UBUNTU_MIRROR
 ---&amp;gt; Using cache
 ---&amp;gt; 22f35a6c2e5c
Step 3/8 : RUN echo locales locales/default_environment_locale select C.UTF-8 | debconf-set-selections &amp;amp;&amp;amp; echo locales locales/locales_to_be_generated select "C.UTF-8 UTF-8" | debconf-set-selections &amp;amp;&amp;amp; { [! "$UBUNTU_MIRROR"] || sed -i "s|http://\(\w*\.\)*archive\.ubuntu\.com/ubuntu/\? |$UBUNTU_MIRROR |" /etc/apt/sources.list; } &amp;amp;&amp;amp; printf 'y\n\n' | unminimize &amp;amp;&amp;amp; apt-get install --no-install-recommends -y ca-certificates curl locales openssh-server python3 sudo systemd &amp;amp;&amp;amp; rm -rf /var/lib/apt/lists/*
 ---&amp;gt; Using cache
 ---&amp;gt; 751b95a0cf53
Step 4/8 : ARG VAGRANT_UID
 ---&amp;gt; Using cache
 ---&amp;gt; 7a89701b804e
Step 5/8 : RUN dpkg-divert --add --rename /bin/systemctl &amp;amp;&amp;amp; curl -fLsS --retry 3 -o /bin/systemctl 'https://raw.githubusercontent.com/gdraheim/docker-systemctl-replacement/v1.5.7106/files/docker/systemctl3.py' &amp;amp;&amp;amp; echo '7479f4cd0d1604e5c5eb5329f0a6a3a80fea811e2f9889e3083c2c29b229ff99 /bin/systemctl' | sha256sum -c &amp;amp;&amp;amp; chmod +x /bin/systemctl &amp;amp;&amp;amp; ln -nsf /bin/true /usr/sbin/policy-rc.d &amp;amp;&amp;amp; mkdir -p /run/sshd &amp;amp;&amp;amp; ln -ns /lib/systemd/system/postgresql@.service /etc/systemd/system/multi-user.target.wants/postgresql@12-main.service &amp;amp;&amp;amp; useradd -ms /bin/bash -u "$VAGRANT_UID" vagrant &amp;amp;&amp;amp; mkdir -m 700 ~vagrant/.ssh &amp;amp;&amp;amp; curl -fLsS --retry 3 -o ~vagrant/.ssh/authorized_keys 'https://raw.githubusercontent.com/hashicorp/vagrant/be7876d83644aa6bdf7f951592fdc681506bcbe6/keys/vagrant.pub' &amp;amp;&amp;amp; chown -R vagrant: ~vagrant/.ssh &amp;amp;&amp;amp; echo 'vagrant ALL=(ALL) NOPASSWD:ALL' &amp;gt; /etc/sudoers.d/vagrant
 ---&amp;gt; Running in 61d245ae69d6
Adding 'local diversion of /bin/systemctl to /bin/systemctl.distrib'
curl: (35) OpenSSL SSL_connect: Connection reset by peer in connection to raw.githubusercontent.com:443

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

&lt;/div&gt;



&lt;p&gt;You will be greeted with the above error!&lt;/p&gt;

&lt;h3&gt;
  
  
  The VPN Solution:
&lt;/h3&gt;

&lt;p&gt;One effective solution to resolve connection problems is to use a Virtual Private Network (VPN). I personally recommend using ProtonVPN, which offers a free tier. Alternatively, consider the flatpak version of ProtonVPN for a hassle-free experience.&lt;/p&gt;

&lt;h3&gt;
  
  
  Implementation:
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Install a VPN (e.g., ProtonVPN).&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Create a VPN connection with OpenVPN.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Verify the VPN connection to an available server.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Docker Build Process: An Overview
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Dockerfile Modifications: (optional)
&lt;/h3&gt;

&lt;p&gt;Inspecting the Dockerfile reveals steps to set up the Zulip development environment. The initial setup might fail due to SSL connection issues during the Docker build process.&lt;/p&gt;

&lt;h3&gt;
  
  
  Resolving SSL Connection Issues:
&lt;/h3&gt;

&lt;p&gt;To tackle SSL connection problems during the Docker build, ensure your &lt;strong&gt;VPN&lt;/strong&gt; is active. This simple step can save you from hours of troubleshooting.&lt;/p&gt;

&lt;h2&gt;
  
  
  Completing the Setup:
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Vagrant Up:
&lt;/h3&gt;

&lt;p&gt;After resolving the initial setup challenges, proceed with executing &lt;code&gt;vagrant up --provider=docker&lt;/code&gt;. If any errors occur, don't be discouraged. Retry the command with &lt;code&gt;vagrant provision&lt;/code&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Successful Completion:
&lt;/h3&gt;

&lt;p&gt;Upon successful execution of the &lt;code&gt;vagrant provision&lt;/code&gt; command, you'll receive a message indicating the completion of the development setup. Though it might take some time, the wait is worthwhile.&lt;/p&gt;

&lt;h3&gt;
  
  
  Running Zulip:
&lt;/h3&gt;

&lt;p&gt;Initiate the Zulip server by running &lt;code&gt;vagrant ssh&lt;/code&gt; and then &lt;code&gt;./tools/run-dev&lt;/code&gt;. Visit &lt;a href="http://localhost:9991/devlogin" rel="noopener noreferrer"&gt;&lt;code&gt;localhost:9991/devlogin&lt;/code&gt;&lt;/a&gt; to witness the successful setup, confirming your readiness to contribute.&lt;/p&gt;

&lt;p&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%2F3yo38awokzwlcv2gnt3p.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%2F3yo38awokzwlcv2gnt3p.png" alt="Image of Zulip devlogin" width="800" height="470"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Celebrate Your Success:
&lt;/h3&gt;

&lt;p&gt;Congratulations! You've conquered the initial setup challenges and are now ready to dive into &lt;strong&gt;Zulip&lt;/strong&gt; development. This experience not only enhances your coding skills but also exposes you to best practices in open-source contribution.&lt;/p&gt;

&lt;h3&gt;
  
  
  Embrace the Journey:
&lt;/h3&gt;

&lt;p&gt;Zulip's community is supportive, and your journey as a contributor has just begun. Continue exploring, learning, and engaging with the community to become a proficient developer with Zulip.&lt;/p&gt;

&lt;p&gt;By following these steps, you've taken a significant stride towards becoming a 10x developer in the world of open source. Happy coding!&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Bypass Website Paywalls &amp; Sign Up to Continue with this Simple Hack</title>
      <dc:creator>Prasanth Bupd</dc:creator>
      <pubDate>Sun, 19 Nov 2023 13:47:07 +0000</pubDate>
      <link>https://dev.to/bupd/bypass-website-paywalls-sign-up-to-continue-with-this-simple-hack-3jdd</link>
      <guid>https://dev.to/bupd/bypass-website-paywalls-sign-up-to-continue-with-this-simple-hack-3jdd</guid>
      <description>&lt;p&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%2F52vqiw10rfz4n2mbe5l8.jpg" 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%2F52vqiw10rfz4n2mbe5l8.jpg" alt="A Hacker looking through websites trying to bypass the paywall" width="640" height="360"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In the vast expanse of the internet, a treasure trove of knowledge lies hidden behind paywalls and subscription fees. If you've ever encountered a frustrating "&lt;strong&gt;Sign Up to Continue&lt;/strong&gt;" prompt when trying to access an informative blog post or a valuable article, you know the feeling of being locked out of valuable information. But fear not, for there exists a surprisingly simple hack that empowers you to bypass these barriers and access the knowledge you seek.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The Hack: Unmasking Hidden Content&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;This hack, often overlooked by savvy tech enthusiasts, involves utilizing the developer tools in your browser to manipulate the website's code. It's a technique that can be applied to a variety of websites, particularly those developed by inexperienced or lazy developers (a.k.a soydevs).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step-by-Step Guide to Unlocking Hidden Content&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Open the Developer Tools:&lt;/strong&gt; Right-click anywhere on the webpage and select "Inspect Element" from the context menu &lt;strong&gt;Or&lt;/strong&gt; Just press "F12". This will open the developer tools panel.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Locate the Hidden Content:&lt;/strong&gt; Navigate to the "Elements" tab in the developer tools panel. This will display the website's HTML code. Start searching for the div elements that contain the hidden content. Div elements are often used to structure and organize content on webpages.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Identify the Target Div:&lt;/strong&gt; Once you've located the div elements, identify the one that contains the specific content you want to access. This div will typically have a different style or class than the surrounding divs.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Modify the Div's Position:&lt;/strong&gt; Right-click on the target div and select "Inspect" from the context menu. This will display the div's properties. Look for the "position" property and change its value to "absolute". This will bring the div to the forefront of the webpage, making its content visible.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Adjust Other CSS Properties:&lt;/strong&gt; If necessary, adjust other CSS properties, such as "z-index" or "overflow", to ensure the hidden content is fully displayed and accessible.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Example: Bypassing a Basic Blog Site's Paywall&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Imagine a basic blog site that hides its content behind a paywall. The blog post you're interested in is hidden behind a "Sign Up" prompt. To access the content using the hack:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Open the developer tools and navigate to the "Elements" tab.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Search for the div elements that contain the blog post content.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Identify the div that specifically holds the blog post's text and images.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Right-click on the target div and select "Inspect".&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Change the value of the "position" property to "absolute".&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;If necessary, adjust other CSS properties, such as "z-index" or "overflow", to ensure the hidden content is fully displayed.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;By following these steps, you've successfully bypassed the paywall and gained access to the blog post's content.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Additional Tips and Tricks&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;While the above method works effectively in many cases, there may be instances where further tinkering is required. Here are a few additional tips to tackle those stubborn paywalls:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Disable JavaScript:&lt;/strong&gt; Sometimes, websites use JavaScript to dynamically hide or disable content. Temporarily disabling JavaScript can reveal hidden elements.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Check for Z-Index:&lt;/strong&gt; The Z-index property determines the stacking order of elements. If the content div has a lower Z-index than other elements, try increasing its Z-index to bring it to the front.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Modify Overflow:&lt;/strong&gt; If the content is hidden within a scrollable container, setting the "overflow" property to "visible" or "auto" can make it visible.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Caution: Not a Universal Solution&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;It's important to note that this hack may not work on all websites, particularly those with more sophisticated security measures or complex code structures. However, it's a valuable tool to have in your arsenal when dealing with simpler websites that restrict access to information.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Conclusion: Knowledge for All&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;In a world where knowledge is power, it's crucial to ensure that information remains accessible to all. While websites have the right to monetize their content, they should not create unnecessary barriers that prevent individuals from gaining valuable knowledge.&lt;/p&gt;

&lt;p&gt;Let us harness this newfound power responsibly, ensuring that knowledge remains freely accessible for all.&lt;/p&gt;

&lt;p&gt;P.S. Want to see more of my work? Checkout: &lt;a href="https://linktr.ee/bupd" rel="noopener noreferrer"&gt;https://linktr.ee/bupd&lt;/a&gt;&lt;/p&gt;

</description>
      <category>programming</category>
      <category>tutorial</category>
      <category>cybersecurity</category>
    </item>
    <item>
      <title>Understanding Closures</title>
      <dc:creator>Prasanth Bupd</dc:creator>
      <pubDate>Tue, 29 Aug 2023 10:03:00 +0000</pubDate>
      <link>https://dev.to/bupd/understanding-closures-1mm9</link>
      <guid>https://dev.to/bupd/understanding-closures-1mm9</guid>
      <description>&lt;h2&gt;
  
  
  What is Closures?
&lt;/h2&gt;

&lt;p&gt;Closures are a foundational concept in JavaScript that allows inner functions to access variables from their parent function's scope, even after the parent function has finished executing. This makes closures a powerful tool for data privacy, callbacks, and functional programming.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why do I need it?
&lt;/h2&gt;

&lt;p&gt;A closure is created when an inner function captures references to variables from an outer function's scope. For example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;outer&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;outerVar&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;10&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

    &lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;inner&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;outerVar&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;

    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nx"&gt;inner&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="c1"&gt;// We're returning the inner function itself&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="c1"&gt;// Execution:&lt;/span&gt;

&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;closureFunction&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;outer&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt; &lt;span class="c1"&gt;// `inner` captures `outerVar`&lt;/span&gt;
&lt;span class="nf"&gt;closureFunction&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt; &lt;span class="c1"&gt;// Output: 10&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;In this example, inner is a closure because it references &lt;code&gt;outerVar&lt;/code&gt;. Even after outer completes execution, inner maintains access to &lt;code&gt;outerVar&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;It is because, When a function is defined within another function and it captures (references) variables from the outer function, a closure is created. The inner function holds a reference to these variables, even if the outer function has completed execution and its variables should normally be garbage-collected. But that does not happen in the case of closures.&lt;/p&gt;

&lt;h2&gt;
  
  
  Access Beyond Execution:
&lt;/h2&gt;

&lt;p&gt;This means that even when you call &lt;code&gt;inner()&lt;/code&gt; later, long after &lt;code&gt;outer&lt;/code&gt; has finished running, inner can still access and use &lt;code&gt;outerVar&lt;/code&gt;. This is not how typical variables work, as they are usually disposed of after their parent function completes execution.&lt;/p&gt;

&lt;p&gt;Closures offer a way to maintain a connection to variables that would otherwise be gone. They keep the spirit of the enclosing context alive, allowing for powerful programming techniques like private variables, callbacks, and more.&lt;/p&gt;




&lt;h3&gt;
  
  
  Data privacy:
&lt;/h3&gt;

&lt;p&gt;Closures are used to create private variables and encapsulate data. They allow you to expose only necessary functionality to the outer world while keeping internal state hidden.&lt;/p&gt;

&lt;h3&gt;
  
  
  Callbacks:
&lt;/h3&gt;

&lt;p&gt;Closures are frequently used in asynchronous programming, such as event handlers and callback functions, to maintain context across time gaps.&lt;/p&gt;

&lt;h3&gt;
  
  
  Functional programming:
&lt;/h3&gt;

&lt;p&gt;Closures enable functional programming techniques like &lt;code&gt;currying&lt;/code&gt; and &lt;code&gt;memoization&lt;/code&gt; by preserving data between function calls.&lt;/p&gt;

&lt;h2&gt;
  
  
  Caution:
&lt;/h2&gt;

&lt;p&gt;While closures are powerful, they also require careful consideration of memory management. Since a closure retains references to its enclosing variables, those variables won't be garbage-collected until the closure is no longer accessible. This can lead to memory leaks if closures are not used judiciously.&lt;/p&gt;

&lt;h2&gt;
  
  
  In a Nutshell
&lt;/h2&gt;

&lt;blockquote&gt;
&lt;p&gt;Closures are a powerful tool that can be used for data privacy, callbacks, and functional programming. However, it is important to use closures carefully to avoid memory leaks.&lt;/p&gt;
&lt;/blockquote&gt;

</description>
      <category>webdev</category>
      <category>javascript</category>
      <category>beginners</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>Warning: Using VS Code? You're Missing Out on the Ultimate 10x Developer Hack!</title>
      <dc:creator>Prasanth Bupd</dc:creator>
      <pubDate>Sun, 16 Jul 2023 01:18:54 +0000</pubDate>
      <link>https://dev.to/bupd/warning-using-vs-code-youre-missing-out-on-the-ultimate-10x-developer-hack-25d8</link>
      <guid>https://dev.to/bupd/warning-using-vs-code-youre-missing-out-on-the-ultimate-10x-developer-hack-25d8</guid>
      <description>&lt;p&gt;Everyone gets tired of the limitations and repetitive tasks of VS Code? It's time to explore an alternative that maximizes your coding potential. In this article, we'll dive into the raw facts about Vim, a powerful text editor that can revolutionize your coding experience. Get ready to discover the practical advantages of Vim over VS Code.&lt;/p&gt;

&lt;h2&gt;
  
  
  Efficiency and Speed
&lt;/h2&gt;

&lt;p&gt;VS Code may provide a visually appealing interface, but it can slow you down. With Vim's keyboard-centric approach, you can navigate and edit code at lightning speed. Every click of the mouse in VS Code adds up, while Vim's keyboard shortcuts allow you to accomplish tasks without wasting precious seconds. Efficiency and speed are the name of the game in Vim.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Keyboard-Driven Revolution
&lt;/h2&gt;

&lt;p&gt;To truly understand the impact of the keyboard and mouse on coding efficiency, let's visualise the stark contrast between the two:&lt;/p&gt;

&lt;p&gt;When using a mouse, you're limited to clicking, scrolling, and dragging. These actions may seem simple, but they add up over time. The constant switching between the keyboard and mouse disrupts your thought process and slows you down. In the fast-paced world of coding, speed is of the essence, and every second counts.&lt;/p&gt;

&lt;p&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%2Flbszzg3cl9tfn5hwdn2e.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%2Flbszzg3cl9tfn5hwdn2e.png" alt="pain" width="558" height="395"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;embracing Vim and mastering the keyboard is not just about speed—it's about reclaiming your time, focusing on the code, and reducing the strain on your wrist and neck. The mouse may seem harmless, but prolonged use can lead to a literal pain in the... well, you know where.&lt;/p&gt;

&lt;p&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%2Fgky0bawx310mgk94wp8h.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%2Fgky0bawx310mgk94wp8h.png" alt="PainTopVIew" width="562" height="578"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Think about it: why waste time moving your hand to the mouse, locating buttons, and scrolling through menus when you can achieve the same results with a swift keystroke? By utilising the power of the keyboard, you gain a significant advantage in terms of speed, efficiency, and overall productivity.&lt;/p&gt;

&lt;h2&gt;
  
  
  Minimalist and Customizable
&lt;/h2&gt;

&lt;p&gt;VS Code often comes bundled with features you may never use, leading to a cluttered environment. Vim takes a minimalist approach, providing only what you need and allowing you to customize it to suit your preferences. Say goodbye to the unnecessary distractions of VS Code and embrace the streamlined efficiency of Vim.&lt;/p&gt;

&lt;h2&gt;
  
  
  Muscle Memory and Productivity
&lt;/h2&gt;

&lt;p&gt;VS Code users often rely heavily on their mouse, constantly switching between keyboard and mouse for different actions. Vim eliminates this interruption by enabling you to perform all operations through the keyboard. Once you develop muscle memory for Vim's commands, your productivity skyrockets. No more fumbling around or wasting time searching for buttons or icons—Vim puts you in control.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://vim.rtorr.com/" rel="noopener noreferrer"&gt;Vim Cheatsheet&lt;/a&gt; Access a comprehensive cheatsheet for Vim commands and shortcuts.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://vim-adventures.com/" rel="noopener noreferrer"&gt;Vim Adventures&lt;/a&gt; Engage in an interactive game that teaches you Vim in a fun and engaging way.&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
&lt;p&gt;Remember, the keyboard is where your true coding potential lies. &lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Portability and Wide Adoption
&lt;/h2&gt;

&lt;p&gt;VS Code is undoubtedly popular, but Vim's influence extends far and wide. It has been around for decades and has a dedicated community that has built a vast ecosystem of plugins and configurations. Vim is available on almost every operating system and is supported in various editors and IDEs. Its wide adoption ensures you can take your Vim skills with you wherever you go.&lt;/p&gt;

&lt;h2&gt;
  
  
  Automation over Abstraction
&lt;/h2&gt;

&lt;p&gt;In the realm of Vim, we reject the allure of abstraction. Instead, we focus on automation. Spend your time crafting efficient shortcuts, automating repetitive tasks, and building a finely tuned coding machine. Why waste hours on abstractions when you can invest that time in creating an environment that accelerates your every move? Vim empowers you to achieve more with less, leaving the VS Code users scratching their heads in disbelief.&lt;/p&gt;

&lt;p&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%2Fzguhdbam6othc3m65lkf.jpg" 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%2Fzguhdbam6othc3m65lkf.jpg" alt="Automation" width="800" height="420"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  The Power of Vim
&lt;/h2&gt;

&lt;p&gt;VS Code has its strengths, but when it comes to raw efficiency, speed, customization, and portability, Vim takes the lead. By embracing Vim, you unlock the potential to code faster, streamline your workflow, and adapt to different coding environments effortlessly. It's time to explore the raw facts, weigh the benefits, and decide if Vim is the key to unlocking your coding potential.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;P.S.&lt;/strong&gt; As you finish reading, reflect on your coding experience with VS Code. Consider the time wasted on repetitive tasks and the inefficiencies introduced by relying on the mouse. Vim offers a compelling alternative—ditch the mouse and experience the raw power of Vim for yourself. &lt;/p&gt;

&lt;p&gt;Thank me later!.&lt;/p&gt;

</description>
      <category>vscode</category>
      <category>beginners</category>
      <category>productivity</category>
      <category>10xdeveloper</category>
    </item>
  </channel>
</rss>
