<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[kevkevin's blog]]></title><description><![CDATA[I build things ⊂(◉‿◉)つ]]></description><link>https://blog.kevinpallikunnel.com</link><generator>RSS for Node</generator><lastBuildDate>Fri, 01 May 2026 23:44:06 GMT</lastBuildDate><atom:link href="https://blog.kevinpallikunnel.com/rss.xml" rel="self" type="application/rss+xml"/><language><![CDATA[en]]></language><ttl>60</ttl><item><title><![CDATA[Why Use Kanbans to Organize Life]]></title><description><![CDATA[How using Kanbans made my life more organized and less stressful
Business vector created by katemangostar — www.freepik.com
I’m a disorganized guy, during high school, I did not use a folder and would shove all my papers into my bag. This trait then ...]]></description><link>https://blog.kevinpallikunnel.com/why-use-kanbans-to-organize-life-d62c27a30732</link><guid isPermaLink="true">https://blog.kevinpallikunnel.com/why-use-kanbans-to-organize-life-d62c27a30732</guid><dc:creator><![CDATA[Kevin Pallikunnel]]></dc:creator><pubDate>Wed, 21 Oct 2020 22:10:27 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1631808818141/3J2lvRQ__.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>How using Kanbans made my life more organized and less stressful</p>
<p><img src="https://cdn-images-1.medium.com/max/15030/1*n5o350ZP9mM6s6KnqZsJcg.jpeg" alt="Business vector created by katemangostar — [www.freepik.com](https://cdn.hashnode.com/res/hashnode/image/upload/v1631808816487/sfmF5fMIl.html)" /><em>Business vector created by katemangostar — <a target="_blank" href="http://www.freepik.com">www.freepik.com</a></em></p>
<p>I’m a disorganized guy, during high school, I did not use a folder and would shove all my papers into my bag. This trait then traveled into college where my papers would then be shoved into my books and then again into my bag. While I may have been able to graduate this led to more stress than necessary when I could have kept track of what I needed to do and when it should have been finished by.</p>
<p>It was not until after school I came about the idea of kanban boards when I started to work as a software engineer. The idea was simple we would create tasks and then put the said tasks into a category of completion. The goal was to get the tasks to the end of the board where the category would be “Completed”. This worked well for the agile method we used at work but I wanted to try and see if this would work for daily life/projects I was working on, and it did.</p>
<p>There are a few reasons why I like using Kanban boards</p>
<ol>
<li><p>Catches any unplanned tasks</p>
</li>
<li><p>Help keep track of progress</p>
</li>
<li><p>Makes you feel good</p>
</li>
</ol>
<h3 id="1-catches-any-unplanned-tasks">1). Catches any unplanned tasks</h3>
<p>The thought of having to write down everything I wanted to complete was daunting at first, more so that I had to break down everything into individual tasks. But once I started to think about the things I wanted to do, the act of breaking down everything into tasks made any flaws or unexpected tasks appear in the planning phase instead of while I was trying to do my work. This helped because instead of beginning work on a project and then coming across unexpected work then discarding the project because of it I can now expect what’s coming and not be discouraged because of it.</p>
<p>Also, this allows you to get a better idea of how long a project will take and if the project should take a different approach because of any extra tasks that may have appeared.</p>
<h3 id="2-help-keep-track-of-progress">2). Help keep track of progress</h3>
<p>This point builds off of the last where catching unplanned tasks helps you keep track of your project(s) better because now you can time how long a project will take to finish. Also, you can now see the status of the project based on the percentage of completed tasks.</p>
<p>Keeping track of progress is important too because if anyone is like me, I will start multiple projects and quickly forget about and never finish them. Now, this puts the things I am working on in writing and thus makes it official. So if I decide not to work on a project, I must deliberately delete it. So now I can keep track of how many projects are in motion and how close they are to being finished.</p>
<h3 id="3-makes-you-feel-good">3). Makes you feel good</h3>
<p>Marking check boxes off is satisfying and if you have never done so you are missing out. I do not know about you but when a project is finished there are usually high-fives and “nice job guys” going around. But it is a bit difficult to do when it is a personal project. Using a Kanban gives you a definite point where you can pat yourself on the back (I won’t judge if it is after every single task I do too).</p>
<p>If you have never done so before for some strange compelling reason moving boxes to the right of a board give me the best dopamine hit. If that hasn’t had you convinced I do not know what will.</p>
<h3 id="closing-comments">Closing Comments</h3>
<p>If you need any recommendations for online Kanban boards I would say use Trello (Not Sponsored) because that is the one I use and it has treated me well so far.</p>
<p>If you would like to reach out feel free to checkout <a target="_blank" href="http://www.kevinpallikunnel.com">www.kevinpallikunnel.com</a> and send me an email I would love to chat.</p>
]]></content:encoded></item><item><title><![CDATA[Maximizing Profits by Materials Available]]></title><description><![CDATA[Taking a look into an application of Linear Programming in supply chain operations
Photo by Guillaume Bolduc on Unsplash

If you’re looking for a jupyter notebook that goes a bit more in-depth check out this notebook

While some companies may not hav...]]></description><link>https://blog.kevinpallikunnel.com/maximizing-profits-by-materials-available-3be9f1a64d6d</link><guid isPermaLink="true">https://blog.kevinpallikunnel.com/maximizing-profits-by-materials-available-3be9f1a64d6d</guid><dc:creator><![CDATA[Kevin Pallikunnel]]></dc:creator><pubDate>Thu, 23 Jul 2020 11:27:13 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1631808836453/EuZ9posKX.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Taking a look into an application of Linear Programming in supply chain operations</p>
<p><img src="https://cdn-images-1.medium.com/max/8860/1*CjO8lpH_M88CnqAYlyBMTA.jpeg" alt="Photo by [Guillaume Bolduc](https://cdn.hashnode.com/res/hashnode/image/upload/v1631808832734/czTVeJTV9.html) on [Unsplash](https://unsplash.com/s/photos/ship?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText)" /><em>Photo by <a target="_blank" href="https://unsplash.com/@guibolduc?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText">Guillaume Bolduc</a> on <a target="_blank" href="https://unsplash.com/s/photos/ship?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText">Unsplash</a></em></p>
<blockquote>
<p>If you’re looking for a jupyter notebook that goes a bit more in-depth check out <a target="_blank" href="https://nbviewer.jupyter.org/github/kevkevinpal/MathTeachingTools/blob/master/linearProgram.ipynb">this notebook</a></p>
</blockquote>
<p>While some companies may not have physical goods in the world of today many still do and for these companies, it is important to not waste any materials as that means a waste of money.</p>
<p>We will look at a linear problem where given we have physical products and we only have a finite amount of materials to make those products, how do we maximize the amount of return we get back. We will do that by creating a linearly constrained optimization problem and show by example.</p>
<h2 id="now-lets-set-up-an-example-problem">Now, lets set up an example problem.</h2>
<ol>
<li><p><strong>What are we selling and for how much?</strong>
In today’s day in age, it may not be the wisest move to join the furniture game but that is what we will be modeling today. Imagine we are a small furniture company and we sell two products, tables and chairs both going for <strong>$30</strong> and <strong>$45</strong> respectively. <em>(These are some fancy chairs but the tables are only subpar)</em></p>
</li>
<li><p><strong>How much material does each product take?</strong>
So In order to make a table, it takes <strong>22 wood</strong> and <strong>15 steel
</strong>and for a chair, it takes <strong>45 wood</strong> and <strong>10 steel.
</strong>In other words, this is how much we remove from the available materials for every table and chair made.</p>
</li>
<li><p><strong>How much total material available?</strong>
In this problem, we will set the available materials as <strong>5500 wood</strong> and <strong>2500 steel </strong>to work with.</p>
<blockquote>
<p>Note: I don’t use any specific units, so standardize the units if you plan on using this method
Double Note: We will be using a graphical method to solve our problem but you can use a library like CVXPY to construct your problem and use a solver to get a solution. If you want to learn more about the methods used to solve a linear or convex problem checkout the <a target="_blank" href="https://en.wikipedia.org/wiki/Simplex_algorithm">Simplex</a> or the <a target="_blank" href="https://en.wikipedia.org/wiki/Interior-point_method">Interior Point</a> methods</p>
</blockquote>
</li>
</ol>
<p>Now that we have a general idea of the problem we want to define the problem in a concrete form and we will do that by splitting it up into two parts the objective function <em>(ie the part we want to maximize)</em> and the inequalities constraints <em>(ie the thresholds we must maintain).</em></p>
<h2 id="the-objective-function"><strong>The Objective function</strong></h2>
<p>The objective of the problem is to maximize profits. This is done by selling the correct amount of each item such that we obtain the most amount of money. We can represent this by the function below</p>
<blockquote>
<h1 id="max-ft-c-t30-c45">Max f(t, c) = t<em>30 + c</em>45</h1>
<h1 id="where-t-and-c-are-the-amount-of-tables-and-chairs-we-sell-respectively">where t and c are the amount of tables and chairs we sell respectively</h1>
<p>We can generalize this to vectors and matrices but we will keep it this way for the sake of this toy problem</p>
</blockquote>
<p>We can see that if we can get the perfect combination of values for t and c then we can maximize our profits while still efficiently using the materials at hand.</p>
<h2 id="the-inequality-constraints"><strong>The Inequality Constraints</strong></h2>
<p>The inequality constraints are what tell us when we are using too much of a material that would otherwise force the problem out of the feasibility zone (ie we don’t have that much material available so it’s not possible).</p>
<p>Now we know we have 5500 wood and 2500 steel to use. So we can start by creating the inequality constraint for the wood. It takes 22 wood for every table and 45 wood for each chair. So we can translate this into a statement like</p>
<blockquote>
<h1 id="h1t-c-t22-c45-5500">h1(t, c) = t<em>22 + c</em>45 ≤ 5500</h1>
</blockquote>
<p>and we can do something similar for our steel constraint</p>
<blockquote>
<h1 id="h2t-c-t15-c10-2500">h2(t, c) = t<em>15 + c</em>10 ≤ 2500</h1>
</blockquote>
<p>and for sake of completeness, we need to include that we want zero or more or each item as negative tables and chairs don’t make sense.</p>
<blockquote>
<h1 id="h3t-c-t-0">h3(t, c) = t ≥ 0</h1>
<h1 id="h4t-c-c-0">h4(t, c) = c ≥ 0</h1>
</blockquote>
<p>We can now use these inequality constraints in our problem now.</p>
<h2 id="constructing-the-final-problem-and-solving-graphically"><strong>Constructing the final problem and solving graphically</strong></h2>
<p>Now that we have gotten the pieces we can now finally put them all together. This is what would look like.</p>
<blockquote>
<h1 id="maximize-ft-c-t30-c45">Maximize f(t, c) = t<em>30 + c</em>45</h1>
<h1 id="subject-to">Subject to</h1>
<h1 id="h1t-c-t22-c45-5500">h1(t, c) = t<em>22 + c</em>45 ≤ 5500</h1>
<h1 id="h2t-c-t15-c10-2500">h2(t, c) = t<em>15 + c</em>10 ≤ 2500</h1>
<h1 id="h3t-c-t-0">h3(t, c) = t ≥ 0</h1>
<h1 id="h4t-c-c-0">h4(t, c) = c ≥ 0</h1>
</blockquote>
<p>Now, normally you would solve this problem with some sort of iterative methods like simplex or the interior point method. But since it is only two variables <em>(tables and chairs)</em> we can solve this graphically.</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1631808834093/MmIFsd57N.png" alt="made on desmos" /><em>made on desmos</em></p>
<p>When graphing this I simply took the constraints and just arranged the variable c (chairs) to be alone on the left-hand side. Making the number of tables purchased the y-axis and chairs the x-axis</p>
<p>This leaves us with a feasible region in the white space which is also a polynomial.</p>
<p>Now when solving graphically we will take a similar <em>(not exact) </em>approach the simplex method takes by looking at the corner point solutions.</p>
<blockquote>
<p>Note: The simplex method does not look at all the points then compares rather it uses slack variables to be able to tell if has hit an optimal point but other than that it does visit the corner points</p>
</blockquote>
<p>We have 4 points we want to look at (0, 0), (166.667, 0), (126.374, 60.44), (0, 122.222). If we then plug these coordinates into our objective function we can see which one yields the best result</p>
<blockquote>
<h1 id="f00-0">f(0,0) = 0</h1>
<h1 id="f166667-0-500001">f(166.667, 0) = 5000.01</h1>
<h1 id="f126374-6044-651102">f(126.374, 60.44) = 6,511.02</h1>
<h1 id="f0-122222-549999">f(0, 122.222) = 5499.99</h1>
</blockquote>
<p>We can see that the corner point of (126.374, 60.44) gives the best result. Notice that we don’t get whole values as this may be a point of improvement that can be made by doing integer programming but that’s something for another article.</p>
<h2 id="conclusion">Conclusion</h2>
<p>We saw that given a problem with variables that are made up of physical materials we can maximize the amount of money we can get by using linear programming. Hopefully, this article piqued your interest in Mathematical Optimization as it is an interesting field and is useful to many real-life scenarios.</p>
<p>If you liked this article and want to see more of my work check out <a target="_blank" href="http://www.kevinpallikunnel.com">www.kevinpallikunnel.com</a> and feel free to send me an email I’d love to chat.</p>
]]></content:encoded></item><item><title><![CDATA[Visualizing Convex Sets]]></title><description><![CDATA[Disclaimer: You may need to know a little bit about matrix math in order to totally understand everything written but otherwise you should be able to follow

When I say the word convex maybe flashbacks of high school Physics class come to mind with c...]]></description><link>https://blog.kevinpallikunnel.com/visualizing-convex-sets-638ce373dd89</link><guid isPermaLink="true">https://blog.kevinpallikunnel.com/visualizing-convex-sets-638ce373dd89</guid><dc:creator><![CDATA[Kevin Pallikunnel]]></dc:creator><pubDate>Sat, 18 Jul 2020 19:37:28 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1631808829869/BD9iJghMC.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Disclaimer: You may need to know a little bit about matrix math in order to totally understand everything written but otherwise you should be able to follow</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1631808821342/V5D5vSdVC.jpeg" alt /></p>
<p>When I say the word convex maybe flashbacks of high school Physics class come to mind with convex and concave mirrors. Even if you don’t remember it here is a visual <em>(on the left)</em> to help jog the memory.</p>
<p>Now rather talking about how the physics work for a convex mirror I’m going to be talking about what convexity is itself and the properties that define a convex <a target="_blank" href="https://en.wikipedia.org/wiki/Set_(mathematics">set</a>). The way we will try and show this is by building a scene. Also, keep in mind that a concave set is simply the negative of a convex set so I will be just using the term convex.</p>
<blockquote>
<p>I first created this <a target="_blank" href="https://www.desmos.com/calculator/31dywqitez">Desmos scene</a> <em>( &lt;-- this is a link)</em> and realized later that I could make an article with it.</p>
</blockquote>
<h2 id="1-lets-lay-out-the-scene">1). Lets lay out the scene</h2>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1631808822893/RRZmfCPp7.png" alt /></p>
<p>This scene will live on the 2d space but these concepts can apply to any nth dimension. This means that any point we pick on this space which we call the set ℝ² will look in the form (x,y). If we were to be in ℝ³ a point would look something like (x,y,z).</p>
<p>We are going to plot the function f(x) &gt;x² and g(x) &lt;-x² + 1. This is our exponential function and another one but multiplied by a negative <em>(flipped)</em> and translated <em>(shifted over)</em> but for the sake of this conversation we won’t be taking a look at the functions themselves but a set that they will be bounding <em>(ie the white space) </em>them by.</p>
<p>We will call the white space the set W <em>(for white)</em> since we can see that W is on the ℝ² plane we can say that W is a subset of ℝ².</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1631808824338/QLBD4jeP3.png" alt /></p>
<p>Now, let's pick two points, let's call them a and b. a and b are elements of W meaning that they will be inside the white space.</p>
<p>Now that we have these two points inside this white space we can make a line between them. <em>(Like in the image)</em></p>
<p>Now we have set up the scene now we can move on to the actual definition of what a convex set is.</p>
<h2 id="2-the-definition-of-convex">2). The definition of convex</h2>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1631808826070/m5DAKIPaq.gif" alt /></p>
<p>Pick any two points a and b such that they are elements of W then any point in between a and b <em>(ie the line) </em>is also contained in the set W. We can show this concisely that by saying any point</p>
<p>𝜃a + (1-𝜃)b 𝜀 W for 0 ≤ 𝜃 ≤ 1.</p>
<p>You can see what that looks like, on the left, the ball on the line is that point.</p>
<p>When 𝜃 = 1 we can see that the ball sits on point a.
And when 𝜃 = 0 the ball sits on point b.</p>
<p>That is it, that’s all it takes for a set to be convex but this concept of convexity has multiple subfields devoted to it like <a target="_blank" href="https://en.wikipedia.org/wiki/Convex_analysis">Convex Analysis</a> and <a target="_blank" href="https://en.wikipedia.org/wiki/Convex_optimization">Convex Optimization</a> to name two.</p>
<p>Now I’m sure you can visualize in your head what this looks like in a 3d space or on the set ℝ³. But this idea also applies to ℝ⁴ and beyond as well.</p>
<h2 id="3-non-convex-set">3). Non-convex set</h2>
<p>Before I go it would feel wrong to not also show a non-convex set as it helps to be able to see when a set is not convex as well.</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1631808828242/e6WxFpjck.gif" alt /></p>
<p>lets look at the function</p>
<p>g(x) &lt;-x² + 1 and
h(x) &gt; 5x⁴ +x³ -x²-.5x+.5</p>
<p>We can see if we place the dots on the bottom right and bottom left the line goes through the black space which makes the set in that white space not convex.</p>
<h2 id="closing-comments">Closing Comments</h2>
<p>Hope you enjoyed learning about what a convex set is if you want to learn more about these kinds of concepts checkout <a target="_blank" href="https://web.stanford.edu/~boyd/cvxbook/">Stephen Boyd’s book Convex Optimization</a>, that’s where I learned these things myself. Also if you want to reach out to me go to <a target="_blank" href="http://www.kevinpallikunnel.com">www.kevinpallikunnel.com</a> and send me an email I’d love to chat.</p>
]]></content:encoded></item><item><title><![CDATA[Why I Switched From VS Code to Only Using the Terminal]]></title><description><![CDATA[Disclaimer I am still a young 22 year old fresh out of school at the time I’m writing this. Many of these things may be personal preference. Lastly, making these changes is not a simple feat and will be very frustrating to say the least
taken from ht...]]></description><link>https://blog.kevinpallikunnel.com/why-i-switched-from-vs-code-to-only-using-the-terminal-b4915782c6af</link><guid isPermaLink="true">https://blog.kevinpallikunnel.com/why-i-switched-from-vs-code-to-only-using-the-terminal-b4915782c6af</guid><dc:creator><![CDATA[Kevin Pallikunnel]]></dc:creator><pubDate>Thu, 16 Jul 2020 11:45:59 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1631808847692/mFUuAvG5m.gif" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Disclaimer I am still a young 22 year old fresh out of school at the time I’m writing this. Many of these things may be personal preference. Lastly, making these changes is not a simple feat and will be very frustrating to say the least</p>
<p><img src="https://cdn-images-1.medium.com/max/3860/1*qXvpvmcdu3vU4La9w5ediw.gif" alt="taken from [https://code.visualstudio.com/](https://cdn.hashnode.com/res/hashnode/image/upload/v1631808840479/e07IYvHvf.gif)" /><em>taken from <a target="_blank" href="https://code.visualstudio.com/assets/updates/1_37/icons.gif">https://code.visualstudio.com/</a></em></p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1631808842325/DXc5rn5fL6.gif" alt /></p>
<p>Not too long ago I would do most of my programming in VS Code <em>(Unless I had to use someone else’s system then I would just use Vi/Vim)</em>. This is because VS Code had all the things I needed and more. VS Code was simply a jack of all trades.</p>
<p>VS Code has a terminal embedded to let me execute the commands I needed, there was a text editor and a file explorer inside it as well, hell it even has git functionality built into it. But despite all that I decided to move away from it and there are a few reasons why.</p>
<h2 id="1-forces-you-to-learn-the-building-blocks">1). Forces you to learn the building blocks</h2>
<p>One of the things that I feel you lose by using a GUI (Graphical User Interface) text editor is that you stop interacting with the cli (Command Line Interface) tools which are the building block to any GUI that says has the same functionality thus forcing you to use a more restrictive version of a tool that may have so much power. I will use git as an example say we need to pull a file from another remote from what I know VS Code does not have an easy way of doing so but in git it would just be.</p>
<pre><code>*git checkout <span class="hljs-tag">&lt;<span class="hljs-name">remote</span> <span class="hljs-attr">branch</span>&gt;</span> -- <span class="hljs-tag">&lt;<span class="hljs-name">path</span>/<span class="hljs-attr">to</span>/<span class="hljs-attr">file</span>&gt;</span>*
</code></pre><p>Now lets look at that last point where we still sometimes have to use the terminal for certain commands and this is because the GUI interface is just built on terminal commands (ie that git command in VS Code is just built off the git cli). By taking a look at the git functionality in VS Code we can see that it provides many useful commands but it is difficult to do complex git actions.</p>
<p>If a complex action it is necessary it would take a longer time to figure out how to use the cli rather than if you were already accustomed to using the cli already.</p>
<p>While this may be a one off situation you may be surprised how often these scenarios may occur. Having power over the cli is a powerful skill to have because you can then take full advantage of the tool provided to you.</p>
<p>Now not only do you understand the fundamentals of how these commands work it allows you to build your own shortcuts as you see fit to improve your own work flow. For example when you start your day you may want to update your branches to what is on the master repo so you may create a short cut like</p>
<pre><code>git <span class="hljs-keyword">fetch</span> -a 
git checkout &lt;branch <span class="hljs-type">name</span>&gt;
git pull origin &lt;branch <span class="hljs-type">name</span>&gt;
</code></pre><p>Or literally any string of commands you want and attach a key word or alias that you can call when you want to execute that command. This is super powerful because now the commands work for you and this is only achievable by knowing how the core cli works.</p>
<h2 id="2-simplicity">2). Simplicity</h2>
<p>I Don’t know about you but I’m the type of person where if I see a new tool or see a button I’m going to play or touch it till either A). It does something or B). It breaks. Since tools like VS Code provide so much functionality out the box it makes me prone to breaking things. This causes issues down the line when I’m not sure why some expected behavior is not happening anymore or new behaviors occur just because I was playing around pressing buttons.</p>
<blockquote>
<p>take a look at this terminal and tell me if you had no prior experience how would you go about breaking it. It’s kinda hard right? you cant just smack at the buttons till something happens you have to do some research first</p>
</blockquote>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1631808844261/4aIKSSTS2.png" alt /></p>
<p>When looking at the cli the opposite is true because in order to make changes one has to know exactly what command they want to input or where to make a change. While you can still break things it is easier to find and fix the mistake you’ve made because it requires you to input the direction you want to go rather than picking from a list of options. Breaking things this way seems much more deliberate.</p>
<p>This also enforces again point 1). because it makes you navigate through the system and making changes rather than allowing a GUI to automatically make those changes for you.</p>
<h2 id="3-speed">3). Speed</h2>
<p>Let’s say we want to delete the first and last word of this sentence</p>
<pre><code><span class="hljs-attribute">ew</span> look at the dolphins gross
</code></pre><p>Now you can imagine the action you would normally take</p>
<pre><code><span class="hljs-attribute">Drag</span> - Click - backspace*<span class="hljs-number">2</span> - drag - click - backspace*<span class="hljs-number">5</span>
</code></pre><p>Seems like a lot of work for a simple task right. In vim all we would need to do is.</p>
<pre><code>dw - $ - b - dw
</code></pre><p>confusing? not really once you have it in muscle memory also they make sense</p>
<pre><code>dw - <span class="hljs-keyword">delete</span> word
$ - regex symbol <span class="hljs-keyword">for</span> <span class="hljs-keyword">end</span> <span class="hljs-keyword">of</span> <span class="hljs-type">line</span>
b - back
</code></pre><p>We can now see that just knowing these three commands makes preforming simple text edits a breeze compared to dragging a cursor across the screen.</p>
<p>There are also many more commands like this and you can make your own as well.</p>
<p>In short using the cursor is slower than keeping your hands on the keyboard so minimizing that motion as much as possible will lead you to having more time to focus on the actual problem at hand rather than where you need to place your cursor.</p>
<blockquote>
<p>Disclaimer: VS Code does have the ability for short cuts but for me being able to click on the screen meant that I would not learn the short cuts as fast as I would if I were forced to use it</p>
</blockquote>
<h2 id="4-customization">4). Customization</h2>
<p>The ability to tailor your work flow to how you like it is something that at first takes time to get right but once is done feels like home.</p>
<p>Whether its by creating custom alias’s in myzsh or remapping keys in your vim config there are so many ways to tailor the experience to how you like to work. There is also limitless amounts of possible ways you can set up your system to work for you.</p>
<p>This is because this is not a closed box system if you don’t like how something functions just jump into the code and change it yourself. Most things can be changed from config files like .vimrc, .zshrc to name a few. But even if there’s no possible change from the config file nothing is stopping you from changing code around since you have the power to do so.</p>
<p>Like we mentioned in the first section we can map anything to any set of actions which makes our system work how we want it to.</p>
<h2 id="closing-thoughts">Closing Thoughts</h2>
<p>Now personally I don’t really care if someone uses one tool or the other, just use whatever helps you get the job done the best and quickest. But for me I found that by forcing myself out of my comfort zone and using tools that may have a higher learning curve to start ultimately made me a more productive person. Also there’s the plus side of cli tools making you feel more like a cyber hacker like in the movies :).</p>
<p>Also I only mentioned a few tools in this article but my core drivers are nvim with the tmux multiplexer, also using grep for searching through files.</p>
<p>If you want to reach out to me feel free to checkout <a target="_blank" href="http://www.kevinpallikunnel.com">www.kevinpallikunnel.com</a> and send me an email I’d love to chat.</p>
]]></content:encoded></item></channel></rss>