TILs - Fueling Curiosity, One Insight at a Time

At Codemancers, we believe every day is an opportunity to grow. This section is where our team shares bite-sized discoveries, technical breakthroughs and fascinating nuggets of wisdom we've stumbled upon in our work.

Published
Author
user-image
Nisanth
#devops #kubernetes
k9s is a powerful command-line interface (CLI) tool for Kubernetes management. It allows you to interact with Kubernetes clusters efficiently, offering features like resource viewing, log access, event monitoring, and pod command execution—all from your terminal. Install k9s using Homebrew with the command brew install k9s, and access its intuitive interface by running k9s
Published
Author
user-image
Sachin

JavaScript

Spread operator in JavaScript is represented by three dots (...). 
It's a useful syntax for manipulating arrays and objects in various ways.

Following are some of the use cases:-

Spread in Arrays:-

1. Copying Arrays: It allows you to create a new array by copying another array.

const originalArray = [1, 2, 3];
const copyArray = [...originalArray];
console.log(copyArray); // [1, 2, 3]


2. Concatenating Arrays: You can merge arrays together.

const array1 = [1, 2, 3];
const array2 = [4, 5, 6];
const mergedArray = [...array1, ...array2];
console.log(mergedArray); // [1, 2, 3, 4, 5, 6]

3. Adding Elements to Arrays: You can add new elements to an existing array.

const array1 = [1, 2, 3];
const newArray = [...array1, 4, 5, 6];
console.log(newArray); // [1, 2, 3, 4, 5, 6]



Spread in Objects:-

1. Copying Objects: It allows you to create a shallow copy of an object.

const originalObj = { name: 'John', age: 30 };
const copyObj = { ...originalObj };
console.log(copyObj); // { name: 'John', age: 30 }

2. Merging Objects: You can merge multiple objects into one.

const obj1 = { name: 'John' };
const obj2 = { age: 30 };
const mergedObj = { ...obj1, ...obj2 };
console.log(mergedObj); // { name: 'John', age: 30 }

3. Adding Properties to Objects: You can add new properties to an object.

const obj1 = { name: 'John' };
const newObj = { ...obj1, age: 30 };
console.log(newObj); // { name: 'John', age: 30 }



Function Arguments:

1. Spread can be used to pass an array as individual arguments to a function.

const numbers = [1, 2, 3];
const sum = (a, b, c) => a + b + c;
console.log(sum(...numbers)); // 6

Published
Author
user-image
Nisanth
#devops #kubernetes #helm
To verify the Helm chart, you can use the following command:
minikube service servicename
This command opens a web browser and directs it to a service running in your Minikube Kubernetes cluster. It simplifies accessing and testing applications deployed locally on Minikube.
Published
Author
user-image
Soniya Rayabagi
git switch -c branch_name used in Git to create and switch to a new branch in one step.
#gitcommand
Published
Author
user-image
Soniya Rayabagi
The helm search hub <keyword> command is used to search for charts available in the Helm Hub, which is a centralized repository of Helm charts , keyword can be prometheus, grafana, nginx, postgresql etc.
helm search hub <keyword> --max-col-width=0 this command displays the results without column width limitations.
#devops #helm #helmhub #kubernetes
Published
Author
user-image
Soniya Rayabagi
Empty a file using the > symbol. Simply typing > filename truncates the file, removing all its previous content.
#UnixCommand
Published
Author
user-image
Soniya Rayabagi
chmod 777 <filename> is a command used to set permissions on a file or directory in Unix-like operating systems (including Linux and macOS). It grants full read, write, and execute permissions.
#devops #FilePermissions
Published
Author
user-image
Soniya Rayabagi
Kubernetes on Docker Desktop
• Install Docker Desktop
• Enable Kubernetes from docker-desktop setting
• Switch the Kubernetes context to docker-desktop
• Example :

Code

❯ kubectl config get-contexts
CURRENT   NAME                      CLUSTER                   AUTHINFO                  NAMESPACE
          docker-desktop            docker-desktop            docker-desktop
*         kind-kube-nginx-cluster   kind-kube-nginx-cluster   kind-kube-nginx-cluster

❯ kubectl config use-context docker-desktop
Switched to context "docker-desktop".


• Instead of using the command kubectl config use-context docker-desktop we can also go with kubectx to switch between Kubernetes context
• To install kubectx on Mac: brew install kubectx
#devops #kubernetes #dockerdesktop
Published
Author
user-image
Nisanth
Access Kubernetes dashboard on minikube
To access the dashboard:
minikube dashboard
This will enable the dashboard add-on, and open the proxy in the default web browser.
#devops #kubernetes
Published
Author
user-image
Soniya Rayabagi
Today I learnt , REST API endpoints for organization members
• It will List all users who are members of an organization. If the authenticated user is also a member of this organization then both concealed and public members will be returned.
• The token must have the following permission set: members:read
• Request example:

Code

curl -L \\
  -H "Accept: application/vnd.github+json" \\
  -H "Authorization: Bearer <YOUR-TOKEN>" \\
  -H "X-GitHub-Api-Version: 2022-11-28" \\
  https://api.github.com/orgs/ORG/members


Response

Code

[
  {
    "login": "octocat",
    "id": 1,
    "node_id": "MDQ6VXNlcjE=",
    "avatar_url": "https://github.com/images/error/octocat_happy.gif",
    "gravatar_id": "",
    "url": "https://api.github.com/users/octocat",
    "html_url": "https://github.com/octocat",
    "followers_url": "https://api.github.com/users/octocat/followers",
    "following_url": "https://api.github.com/users/octocat/following{/other_user}",
    "gists_url": "https://api.github.com/users/octocat/gists{/gist_id}",
    "starred_url": "https://api.github.com/users/octocat/starred{/owner}{/repo}",
    "subscriptions_url": "https://api.github.com/users/octocat/subscriptions",
    "organizations_url": "https://api.github.com/users/octocat/orgs",
    "repos_url": "https://api.github.com/users/octocat/repos",
    "events_url": "https://api.github.com/users/octocat/events{/privacy}",
    "received_events_url": "https://api.github.com/users/octocat/received_events",
    "type": "User",
    "site_admin": false
  }
]


#githubactionspublic #rest api
Published
Author
user-image
Mahesh Bhosle
DevOps Engineer
We can leverage the AWS Systems Manager service to execute the Ansible scripts on the EC2 hosts, this removes the overhead of maintaining SSH keys and other instance details.
How it is done:
• Prerequisites:
◦ EC2 instance should have an IAM role attached for SSM
◦ Ansible should be installed on the instance
• In the AWS System Manager go to State Manager and create a new association
• The association details will include: association name, Document, Ansible playbook, Target selection, schedule, and Rate control
• Based on the Association configuration, the playbook will be executed.
#automation #awsssm #ansible
Published
Author
user-image
Nisanth
Securing Sensitive Data in Kubernetes with Base64 Encoding
Today I learned that the base64 command can be used in Kubernetes to encode sensitive data such as passwords and API keys when creating secrets. By encoding the sensitive information in base64 format, it can be safely stored in Kubernetes secrets without exposing it in plaintext. This adds an additional layer of security to the sensitive data used by applications running in Kubernetes clusters. echo -n "some_password" | base64
#devops #kubernetes #encoding
Published
Author
user-image
Satya
while doing npm install or yarn install we might run into this error mentioned below:


Code

error /Users/<user>/project/node_modules/sharp: Command failed.
Exit code: 127
Command: (node install/libvips && node install/dll-copy && prebuild-install) || (node install/can-compile && node-gyp rebuild && node install/dll-copy)


to fix this just do npm rebuild & then run npm install or yarn install .
#sharp-error #npm #node
Published
Author
user-image
Soniya Rayabagi
git stash want to store commit temporarily then , stashing will save your modifications and revert your working directory to its clean state
Published
Author
user-image
Satya
SAP is divided into two types of data:
Master Data - Consists product data , person data (eg: vendor, customer) or place data.
Transaction Data - Consists of quotation , sales order , good issue, good receipt , invoice.
#SAP
Published
Author
user-image
Nisanth
Docker Hub & Pushing Docker Images
Why We Need Docker Hub: Docker Hub is like a social media platform, but instead of sharing photos or updates, we share Docker images. Docker Hub provides a centralized place for storing and managing these images. We use Docker Hub to:
◦ Share our Docker images with others.
◦ Store different versions of our Docker images.
◦ Access our Docker images from any machine, making deployment and scaling much easier.
◦ Find and use Docker images created by others, which can be very helpful.
How to Push a Docker Image to Docker Hub: To push a Docker image, we follow a few simple steps:
a. Log In: Just like logging into your favorite app, we log in to Docker Hub on our computer.
b. Tagging: We give our image a label (or a tag) that describes what it is and which version it is—kind of like tagging a friend in a photo docker tag flix-rails:latest nishanthmathiyazhagan/flix-rails:latest
c. Pushing: With our image tagged, we ‘push’ it to Docker Hub, which means uploading it so others can download and use it.
docker push nishanthmathiyazhagan/flix-rails:latest
What Happens After Pushing the Image to Docker Hub: Once the image is pushed:
◦ It’s stored in our Docker Hub repository,
◦ Other people can ‘pull’ the image to their own computers or servers to run the application it contains.
◦ If we update the application, we can push the new version to Docker Hub so everyone can get the update.
◦ We can pull it down on any server
#devops #docker
Published
Author
user-image
Sujay
Sidekiq Capsule allows to configure queues to execute jobs serially.
Before Sidekiq version 7, to manage dependencies between jobs, a delay was often manually set with set(wait: 30.seconds) to ensure the sequential execution of dependent jobs. This can be achieved now by setting their concurrency to 1.

Ruby

Sidekiq.configure_server do |config|
  config.capsule("capsule") do |cap|
    cap.concurrency = 1
    cap.queues = %w[capsule-queue]
  end
end


#rails #sidekiq
Published
Author
user-image
Ayush
Use pluck to fetch only the necessary columns if you don't need the entire object
This reduces memory usage and database load

For example

Code

adults = User::User.where("age > ?", "18").pluck(:name)


The above code will return an array of name of users who are above age of 18

#rails #db
Published
Author
user-image
Soniya Rayabagi
ps aux | grep defunct displays information about any zombie processes (that have completed execution but still have an entry in the process table with specific PID because, their parent process has not yet collected their exit status) currently running on the system.
#devops
Published
Author
user-image
Vaibhav Yadav
Senior System Analyst
When eslint is not working on your repository in local for any reason you can try restarting the ES Lint Server on VS Code, and if the issue is cause cause server is not reading the config from root directory you can set root: true in your eslint config file, that should resolve the issue. And to fix all your lint issue in a single commit you can use command npx eslint . --fix.

#javascript #eslint

Showing page 14 of 42

Your competitors are already using AI.
The question is how fast you want to unlock the value.

Don't know where to start?

AI is everywhere but it's unclear which investments will actually move your metrics and which are expensive experiments.

Your data isn't ready

Most AI projects fail at the data layer. Pipelines, quality, access all need work before LLMs can deliver value.

Internal teams are stretched

Your engineers are shipping product. They don't have capacity to also become AI specialists with production-grade experience.

Legacy systems block everything

Aging, undocumented codebases make AI integration slow, risky, and expensive. They need to move first.

Don't worry. We've got you covered.

Start with the audit.