<?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: calteen</title>
    <description>The latest articles on DEV Community by calteen (@calteen).</description>
    <link>https://dev.to/calteen</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%2F949817%2F9f43984d-18ca-4702-b477-a43ca73a892e.png</url>
      <title>DEV Community: calteen</title>
      <link>https://dev.to/calteen</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/calteen"/>
    <language>en</language>
    <item>
      <title>Jira Sucks</title>
      <dc:creator>calteen</dc:creator>
      <pubDate>Mon, 08 Sep 2025 16:26:51 +0000</pubDate>
      <link>https://dev.to/calteen/jira-sucks-3i22</link>
      <guid>https://dev.to/calteen/jira-sucks-3i22</guid>
      <description>&lt;p&gt;Jira sucks. What can we do?&lt;br&gt;
Let’s be honest — Jira sucks.&lt;/p&gt;

&lt;p&gt;It’s slow.&lt;br&gt;
It’s bloated.&lt;br&gt;
It takes 7 clicks just to move a ticket.&lt;br&gt;
And half your time goes into fighting the tool, not managing work.&lt;br&gt;
Jira was built for enterprises with endless workflows and 1000 managers breathing down your neck. Not for startups, indie hackers, or small teams who just want to ship.&lt;/p&gt;

&lt;p&gt;So what can we do?&lt;/p&gt;

&lt;p&gt;👉 Build tools that are:&lt;/p&gt;

&lt;p&gt;Minimal → Just issues, boards, progress. Nothing more.&lt;br&gt;
Fast → No 5-second page loads.&lt;br&gt;
Self-hostable → Your data, your rules.&lt;br&gt;
Open source → So you can tweak it to your workflow, not the other way around.&lt;/p&gt;

&lt;p&gt;That’s why I built Minimal Jira – an open-source, lightweight issue tracker for small teams. No bloat. No bullshit. Just tasks and focus.&lt;/p&gt;

&lt;p&gt;💡 If you’ve ever felt that Jira makes you hate work more than work itself, you’re not alone. Let’s build something better together.&lt;/p&gt;

&lt;p&gt;👉 Contributions, feedback, and rants welcome 🚀&lt;/p&gt;

</description>
      <category>frontend</category>
      <category>scrum</category>
    </item>
    <item>
      <title>binary tree</title>
      <dc:creator>calteen</dc:creator>
      <pubDate>Thu, 08 Jun 2023 03:02:20 +0000</pubDate>
      <link>https://dev.to/calteen/binary-tree-oih</link>
      <guid>https://dev.to/calteen/binary-tree-oih</guid>
      <description>&lt;p&gt;` #include &lt;/p&gt;

&lt;h1&gt;
  
  
  include 
&lt;/h1&gt;

&lt;p&gt;using namespace std;&lt;br&gt;
class Node{&lt;br&gt;
  public:&lt;br&gt;
    int data;&lt;br&gt;
    Node* left;&lt;br&gt;
Node* right;&lt;/p&gt;

&lt;p&gt;Node(int data){&lt;br&gt;
  this-&amp;gt;data = data;&lt;br&gt;
  this-&amp;gt;left = NULL;&lt;br&gt;
  this-&amp;gt;right = NULL;&lt;/p&gt;

&lt;p&gt;}&lt;br&gt;
};&lt;/p&gt;

&lt;p&gt;Node* buildtree(Node* root){&lt;br&gt;
  cout&amp;lt;&amp;lt;"plz enter the data"&amp;lt;
  int data;&lt;br&gt;
  cin&amp;gt;&amp;gt;data;&lt;br&gt;
  root = new Node(data);&lt;/p&gt;

&lt;p&gt;if(data == -1){&lt;br&gt;
    return NULL;&lt;br&gt;
  }&lt;br&gt;
  cout&amp;lt;&amp;lt;"Enter data for inserting into left"&amp;lt;
  root -&amp;gt;left = buildtree(root-&amp;gt;left);&lt;br&gt;
    cout&amp;lt;&amp;lt;"Enter data for inserting into right"&amp;lt;
  root -&amp;gt;right = buildtree(root-&amp;gt;right);&lt;/p&gt;

&lt;p&gt;return root;&lt;/p&gt;

&lt;p&gt;}&lt;/p&gt;

&lt;p&gt;void Levelordertraversal(Node* root){&lt;br&gt;
  queue q;&lt;br&gt;
  q.push(root);&lt;/p&gt;

&lt;p&gt;while(!q.empty()){&lt;br&gt;
    Node* temp = q.front();&lt;br&gt;
    cout&amp;lt;&amp;lt; temp-&amp;gt;data&amp;lt;&amp;lt;" ";&lt;br&gt;
    q.pop();&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;  if(temp-&amp;gt;left){
  q.push(temp-&amp;gt;left);

}
if(temp -&amp;gt;right){
  q.push(temp -&amp;gt;right);
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;}&lt;br&gt;
}&lt;/p&gt;

&lt;p&gt;void inorder(Node* root){&lt;br&gt;
  //lnr&lt;br&gt;
  if(root == NULL){&lt;br&gt;
    return;&lt;br&gt;
  }&lt;/p&gt;

&lt;p&gt;inorder(root-&amp;gt;left);&lt;br&gt;
  cout&amp;lt;data&amp;lt;&amp;lt; " ";&lt;br&gt;
  inorder(root-&amp;gt;right);&lt;/p&gt;

&lt;p&gt;}&lt;br&gt;
void preorder(Node* root){&lt;br&gt;
  //lnr&lt;br&gt;
  if(root == NULL){&lt;br&gt;
    return;&lt;br&gt;
  }&lt;br&gt;
  cout&amp;lt;data&amp;lt;&amp;lt; " ";&lt;br&gt;
  preorder(root-&amp;gt;left);&lt;/p&gt;

&lt;p&gt;preorder(root-&amp;gt;right);&lt;/p&gt;

&lt;p&gt;}&lt;br&gt;
void postorder(Node* root){&lt;br&gt;
  if(root == NULL){&lt;br&gt;
    return;&lt;br&gt;
  }&lt;/p&gt;

&lt;p&gt;postorder(root-&amp;gt;left);&lt;br&gt;
  postorder(root-&amp;gt;right);&lt;br&gt;
  cout&amp;lt;data&amp;lt;&amp;lt; " ";&lt;br&gt;
}&lt;/p&gt;

&lt;p&gt;int main() {&lt;br&gt;
  Node* root = NULL;&lt;br&gt;
  root = buildtree(root);&lt;br&gt;
//1 3 7 -1 -1 11 -1 -1 5 17 -1 -1 -1&lt;br&gt;
  cout&amp;lt;&amp;lt; "inorder traversal :" ;&lt;br&gt;
  postorder(root);&lt;br&gt;
  return 0;&lt;br&gt;
}`&lt;/p&gt;

</description>
    </item>
    <item>
      <title>linked list;</title>
      <dc:creator>calteen</dc:creator>
      <pubDate>Thu, 08 Jun 2023 03:01:51 +0000</pubDate>
      <link>https://dev.to/calteen/linked-list-360h</link>
      <guid>https://dev.to/calteen/linked-list-360h</guid>
      <description>&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;class Node {
    public:
    int data;
    Node* next;

    Node(int data){
        this -&amp;gt;data = data;
        this -&amp;gt; next = NULL;
    }
};

void InsertAtHead(Node* &amp;amp;head, int d){
    //new node create
    Node* temp = new Node (d);
    temp -&amp;gt; next = head;
    head = temp;
}
void InsertAtTail(Node* &amp;amp;tail, int d){
    Node*temp = new Node (d);
    tail -&amp;gt;next = temp;
    tail = temp;

}

void print(Node* &amp;amp;head){
    Node* temp = head;
    while(temp != NULL){
        cout &amp;lt;&amp;lt;temp -&amp;gt;data;
        temp = temp -&amp;gt;next;
        }
}


int main() {
    cout &amp;lt;&amp;lt; "Hello world!";
    Node* node1 = new Node(10);
    cout&amp;lt;&amp;lt; node1 -&amp;gt;data &amp;lt;&amp;lt; endl;
    cout &amp;lt;&amp;lt; node1 -&amp;gt; next &amp;lt;&amp;lt;endl;
    return 0;
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



</description>
    </item>
    <item>
      <title>Docker with express</title>
      <dc:creator>calteen</dc:creator>
      <pubDate>Tue, 16 May 2023 04:08:17 +0000</pubDate>
      <link>https://dev.to/calteen/docker-with-express-n30</link>
      <guid>https://dev.to/calteen/docker-with-express-n30</guid>
      <description>&lt;p&gt;hello world&lt;/p&gt;

&lt;p&gt;create a&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;.dockerignore
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;create a Dockerfile&lt;br&gt;
FROM node:16&lt;br&gt;
WORKD&lt;/p&gt;

</description>
    </item>
    <item>
      <title>DevOps Notes</title>
      <dc:creator>calteen</dc:creator>
      <pubDate>Mon, 10 Apr 2023 13:23:53 +0000</pubDate>
      <link>https://dev.to/calteen/devops-notes-gg</link>
      <guid>https://dev.to/calteen/devops-notes-gg</guid>
      <description>&lt;p&gt;1.Installin docker&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-get install docker-engine
apt install docker.io
sudo service docker start






sudo docker run nginx
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;docker run nginx&lt;/li&gt;
&lt;li&gt;docker run -p 80:80 nginx
4.machineport: docker ka port
5.to bandh karne par docker container bandh ho ja raha hai&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;code&gt;docker run -d -p 8080:80 nginx&lt;/code&gt;&lt;br&gt;
6.kon kon se container chal rahe hai&lt;br&gt;
&lt;code&gt;doker ps&lt;/code&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;maan lo mai stop karna chahta hu&lt;br&gt;
docker stop 527a82&lt;br&gt;
8.&lt;code&gt;docker ps -a&lt;/code&gt;&lt;br&gt;
history dekhne ke liye&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;kaise naya port assesable kare:&lt;br&gt;
&lt;code&gt;ufw allow 5000&lt;/code&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;10.sirf 4 likhne se bhi stop ho jayega: aagar koi aur nahi hai to:&lt;br&gt;
11.&lt;code&gt;docker rm a0&lt;/code&gt;&lt;br&gt;
12.&lt;code&gt;docker system prune&lt;/code&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;code&gt;docker rum -f 7fa3da8a&lt;/code&gt; : forcefully stop kar dena&amp;gt; container chal raha hai stop mat karo... chal raha hai: then forceflly stop it&lt;/li&gt;
&lt;li&gt;&lt;code&gt;docker exec -it 1f12 bash&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;apt.... vim harrybhai.txt exit&lt;/li&gt;
&lt;li&gt; &lt;code&gt;docker commit 1f12&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;docker images
18 docker commit 1f12 harry/nginx
19 commit karne se faida kya hua vahi ki aab maine container delete kar diya, and mere paas sirf image bacha hai, and kaise bhi mai usko replicate kar sakta hu aab&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--KR4MeOCz--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/y3njj407h8rohfmb4ah3.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--KR4MeOCz--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/y3njj407h8rohfmb4ah3.png" alt="Image description" width="800" height="522"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://dockerlabs.collabnix.com/"&gt;https://dockerlabs.collabnix.com/&lt;/a&gt;&lt;/p&gt;

</description>
    </item>
    <item>
      <title>unity tpp shooter part2</title>
      <dc:creator>calteen</dc:creator>
      <pubDate>Thu, 30 Mar 2023 09:52:55 +0000</pubDate>
      <link>https://dev.to/calteen/unity-tpp-shooter-part2-5id</link>
      <guid>https://dev.to/calteen/unity-tpp-shooter-part2-5id</guid>
      <description>&lt;p&gt;1.tpp:&lt;br&gt;
2.shoulder offset 0.7 0.25 camera Side:1&lt;br&gt;
3.PlayerAimCamera dublicate: fieldofview 30 camera dist 2.5&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;thirdpersonshootercontroller script;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;camera slide all the way&lt;/p&gt;

</description>
    </item>
    <item>
      <title>tpp armeture</title>
      <dc:creator>calteen</dc:creator>
      <pubDate>Thu, 30 Mar 2023 05:26:15 +0000</pubDate>
      <link>https://dev.to/calteen/tpp-armeture-5gll</link>
      <guid>https://dev.to/calteen/tpp-armeture-5gll</guid>
      <description>&lt;p&gt;fps and tps;&lt;/p&gt;

&lt;p&gt;1.how to add them to the brand new game;&lt;br&gt;
2.the camera is too realistic and it follows to the shoulders; &lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;public float lookSensitivity ; rotation mai multiply kar dena cinemachine target yaw;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;maP;;;&lt;br&gt;
mainCamera;&lt;br&gt;
PlayerFollowCamera;&lt;br&gt;
playerarmature;&lt;/p&gt;

&lt;p&gt;4.playerfollowcamera =&amp;gt; playerroot&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;player armeture=&amp;gt;unpackcompletly
6.Geometry: armeture mesh delete, upload your character(humanoid)
7.change the avatar in player armeture&lt;/li&gt;
&lt;/ol&gt;

</description>
    </item>
    <item>
      <title>Animation from mixamo to unity</title>
      <dc:creator>calteen</dc:creator>
      <pubDate>Tue, 28 Mar 2023 10:03:54 +0000</pubDate>
      <link>https://dev.to/calteen/animation-from-mixamo-to-unity-3331</link>
      <guid>https://dev.to/calteen/animation-from-mixamo-to-unity-3331</guid>
      <description>&lt;p&gt;first download the mixamo animation pack:&lt;/p&gt;

&lt;p&gt;go to edit: then rig: then choose the source as remyAvatar&lt;/p&gt;

</description>
    </item>
    <item>
      <title>character controller unity</title>
      <dc:creator>calteen</dc:creator>
      <pubDate>Tue, 28 Mar 2023 08:15:43 +0000</pubDate>
      <link>https://dev.to/calteen/character-controller-unity-543g</link>
      <guid>https://dev.to/calteen/character-controller-unity-543g</guid>
      <description>&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;gamedev


using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class PlayerScript : MonoBehaviour
{
    public float playerSpeed = 2.5f;
    public float playerSprint = 3.5f;    
    public CharacterController cc;
    public Transform playerCamera;
public float turnCalmTime = 0.1f;
float turnCalmVelocity;
public float gravity = -9.8f;
public float jumpRange = 1f;
public Vector3 velocity;
public Transform surfaceCheck;
bool onSurface;
public float surfaceDistance = 0.4f;
public LayerMask surfaceMask;
public Animator animator;
void playerMove(){
    float horizontal_axis = Input.GetAxisRaw("Horizontal");
    float Vertical_axis = Input.GetAxisRaw("Vertical");
    float Jump_axis = Input.GetAxisRaw("Jump");



    Vector3 direction = new Vector3(horizontal_axis,0f,Vertical_axis).normalized;
if(direction.magnitude &amp;gt;=0.1f){

animator.SetBool("Idle",false);
animator.SetBool("Walk",true);
animator.SetBool("Run",false);
float targetAngle = Mathf.Atan2(direction.x,direction.z) * Mathf.Rad2Deg + playerCamera.eulerAngles.y;
float angle = Mathf.SmoothDampAngle(transform.eulerAngles.y,targetAngle,ref turnCalmVelocity,turnCalmTime );
transform.rotation= Quaternion.Euler(0f,angle,0f);

Vector3 moveDirection = Quaternion.Euler(0f,targetAngle,0f)*Vector3.forward;
cc.Move(moveDirection.normalized *playerSpeed* Time.deltaTime);
}else{
 animator.SetBool("Idle",true);
animator.SetBool("Walk",false);
animator.SetBool("Run",false);
}
}








void Jump(){
    if(Input.GetButtonDown("Jump") &amp;amp;&amp;amp; cc.isGrounded){
    animator.SetBool("Idle",false);
        animator.SetTrigger("Jump");
        velocity.y = Mathf.Sqrt(jumpRange*-2*gravity);
    }else{
        if(cc.isGrounded){
   animator.ResetTrigger("Jump");
        }


    }
}
void Sprint(){
    if(Input.GetButton("Sprint") &amp;amp;&amp;amp;Input.GetKey(KeyCode.W)&amp;amp;&amp;amp; onSurface){


        Debug.Log("sprint");
    float horizontal_axis = Input.GetAxisRaw("Horizontal");
    float Vertical_axis = Input.GetAxisRaw("Vertical");
    float Jump_axis = Input.GetAxisRaw("Jump");



    Vector3 direction = new Vector3(horizontal_axis,0f,Vertical_axis).normalized;
if(direction.magnitude &amp;gt;=0.1f){
animator.SetBool("Walk",false);
animator.SetBool("Run",true);

float targetAngle = Mathf.Atan2(direction.x,direction.z) * Mathf.Rad2Deg + playerCamera.eulerAngles.y;
float angle = Mathf.SmoothDampAngle(transform.eulerAngles.y,targetAngle,ref turnCalmVelocity,turnCalmTime );
transform.rotation= Quaternion.Euler(0f,angle,0f);

Vector3 moveDirection = Quaternion.Euler(0f,targetAngle,0f)*Vector3.forward;
cc.Move(moveDirection.normalized *playerSprint* Time.deltaTime);
}else{
animator.SetBool("Walk",true);
animator.SetBool("Run",false);  
}

}
}
private void Update() {
onSurface = Physics.CheckSphere(surfaceCheck.position,surfaceDistance,surfaceMask);

 if(onSurface &amp;amp;&amp;amp; velocity.y &amp;lt;0){
        velocity.y = -2f;
    }
velocity.y +=gravity *Time.deltaTime;
    cc.Move(velocity*Time.deltaTime);

    playerMove();
        Sprint();
    Jump();
}
}

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

&lt;/div&gt;



&lt;p&gt;&lt;code&gt;hello&lt;/code&gt;&lt;/p&gt;

</description>
    </item>
    <item>
      <title>node upload data</title>
      <dc:creator>calteen</dc:creator>
      <pubDate>Sat, 18 Mar 2023 12:21:27 +0000</pubDate>
      <link>https://dev.to/calteen/node-upload-data-1pa2</link>
      <guid>https://dev.to/calteen/node-upload-data-1pa2</guid>
      <description>&lt;p&gt;`router.post("/users", async (req, res) =&amp;gt; {&lt;br&gt;
  if(!req.body){&lt;br&gt;
    res.status(400).send({ message : "Content can not be emtpy!"});&lt;br&gt;
    return;&lt;br&gt;
}&lt;/p&gt;

&lt;p&gt;// new user&lt;br&gt;
const user = new Userdb({&lt;br&gt;
    id : req.body.id,&lt;br&gt;
    name : req.body.name,&lt;br&gt;
    phone : req.body.phone,&lt;br&gt;
    village: req.body.village&lt;br&gt;
})&lt;/p&gt;

&lt;p&gt;// save user in the database&lt;br&gt;
user&lt;br&gt;
    .save(user)&lt;br&gt;
    .then(data =&amp;gt; {&lt;br&gt;
        //res.send(data)&lt;br&gt;
         res.redirect('/add-user');&lt;br&gt;
        return;&lt;br&gt;
    })&lt;br&gt;
    .catch(err =&amp;gt;{&lt;br&gt;
        res.status(500).send({&lt;br&gt;
            message : err.message || "Some error occurred while creating a create operation"&lt;br&gt;
        });&lt;br&gt;
        return;&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;});
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;// res.render('index')&lt;br&gt;
});`&lt;/p&gt;

</description>
    </item>
  </channel>
</rss>
