<?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: Dennis Lemm</title>
    <description>The latest articles on DEV Community by Dennis Lemm (@314rate).</description>
    <link>https://dev.to/314rate</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%2F177713%2F17d1034e-2b89-4646-a91b-e37ec97bbfaf.jpg</url>
      <title>DEV Community: Dennis Lemm</title>
      <link>https://dev.to/314rate</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/314rate"/>
    <language>en</language>
    <item>
      <title>My personal Voight-Kampff Test</title>
      <dc:creator>Dennis Lemm</dc:creator>
      <pubDate>Wed, 08 Apr 2026 00:00:00 +0000</pubDate>
      <link>https://dev.to/314rate/my-personal-voight-kampff-test-55pf</link>
      <guid>https://dev.to/314rate/my-personal-voight-kampff-test-55pf</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%2F46wrg89lacd2oink8qy7.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%2F46wrg89lacd2oink8qy7.jpg" alt="A white robot" width="800" height="602"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;After March MadCSS I started to challenge myself in CSS Battles and found out - it's my personal Voight-Kampff Test. And I love it.&lt;/p&gt;

&lt;p&gt;Lately I developed the habit of taking my own personal Voight-Kampff Test. But I am not answering one of these LAPD questions:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;You're given a calfskin wallet on your birthday.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Nah, I don't answer questions. I push pixels. It has started with the phenomenal &lt;a href="https://madcss.com" rel="noopener noreferrer"&gt;March MadCSS tournament by Syntax&lt;/a&gt;. I watched the first round and thought: Watching my favorite CSS enthusiasts also struggling to center a div (under a lot of pressure) was fun. And kind of far away from my current work life. I wanted to write more CSS again (for weeks, or months(!) actually). I suddenly remembered &lt;a href="https://cssbattle.dev" rel="noopener noreferrer"&gt;CSS Battle&lt;/a&gt; and so it began.&lt;br&gt;
I have solved almost every daily challenge since. I skipped one or two because of birthday preps or something similar.&lt;/p&gt;

&lt;p&gt;So why do I call these fun little exercises and code golf challenges my Voight-Kampff test? I solved them and wanted to ask Claude and ChatGPT if I could tweak them a little bit more. The answers have been hilariously wrong. Every dang time. Written with such confidence that you question everything they spit out. It's so refreshing.&lt;/p&gt;

&lt;p&gt;And I seem not to be the only one testing it. Obviously. This was a comment from the CSS Battle Bluesky Account on &lt;a href="https://bsky.app/profile/lemm.dev/post/3mhoglq6lls2z" rel="noopener noreferrer"&gt;my post&lt;/a&gt;:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;CSSBattle is infact that! No bot has been able to golf solutions correctly until now...&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;So if you feel unsure if you are a bot/replicant or not. Or your vibe coding session has been a little bit too long. Give it a try. My current solution has 240 characters. Not perfect, but not bad either. And of course 100% self-golfed. For the fun.&lt;/p&gt;

&lt;p&gt;These are my funniest top 3 AI "improvements" so far:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Use aspect-ratio:1 instead of height:250&lt;/li&gt;
&lt;li&gt;Add these three elements with pseudo-elements...&lt;/li&gt;
&lt;li&gt;Can you remove this oddly specific line of styling?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;After some frustrating "tips" I told it I will do it on my own:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Fair enough 😄 CSS Code Golf is really a discipline where I’m more of a guesser than a helper—there’s just too much implicit knowledge about CSS quirks, browser parsing peculiarities, and visual pixel-perfect accuracy that I can’t verify.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;And the learning is: AI is the guesser. Always. Keep that in mind.&lt;/p&gt;

&lt;p&gt;This post was first published here: &lt;a href="https://www.lemm.dev/blog/en/dev/26-04-08-voight-kampff-test-en/" rel="noopener noreferrer"&gt;lemm.dev&lt;/a&gt;&lt;/p&gt;

</description>
      <category>css</category>
      <category>frontend</category>
      <category>learning</category>
      <category>webdev</category>
    </item>
    <item>
      <title>Ai-lone</title>
      <dc:creator>Dennis Lemm</dc:creator>
      <pubDate>Tue, 17 Mar 2026 00:00:00 +0000</pubDate>
      <link>https://dev.to/314rate/ai-lone-4ae9</link>
      <guid>https://dev.to/314rate/ai-lone-4ae9</guid>
      <description>&lt;p&gt;A sentence from Salma Alam-Naylor about AI and loneliness hits close to home. On remote work, vanishing office culture, and what we lose when we replace colleagues with agents.&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%2Fnqxo9l04z1tscqllan37.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%2Fnqxo9l04z1tscqllan37.jpg" alt=" " width="800" height="533"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;There’s this one sentence from Salma Alam-Naylor’s &lt;a href="https://whitep4nth3r.com/blog/i-am-in-an-abusive-relationship-with-the-technology-industry/" rel="noopener noreferrer"&gt;Blog Post&lt;/a&gt; that really fascinates me:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;AI is an incredibly lonely experience where human collaboration and conversation have been replaced by strange conversations with computer algorithms.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;That sentence hits the nail on the head for me — and it leaves behind a deep sadness. This loneliness at work started for me with the pandemic. And yes, I love working from home. Especially as a parent, it’s a blessing not to be away from home for eleven hours a day — to witness a lot, or even most, of your child growing up. When you’re trying to share parenting and partnership as equals, it also means the other parent can occasionally tap out and catch their breath.&lt;/p&gt;

&lt;p&gt;At the same time, I find myself holding on to a work reality that was shaped by coding together, solving problems together — and yes, the occasional Nerf gun battle or foosball game was a welcome break for passively mulling over a bug, which back at your desk would often get solved pretty quickly. But even when it didn’t, there were always colleagues in the office who could help. Now, with AI being practically omnipresent, it somehow feels even worse. Even in the office, it has become quiet and lonely. And a sentence from a colleague describes that feeling just as perfectly as Salma did:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;So I just discussed the best solution to the problem with my agent.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Where we used to ask a colleague, we now ask an agent — or even four, five sub-agents. Sure, that buys our colleague some time, sparing them from being pulled out of their context to deal with our problem. But what gets lost? Our own problem-solving skills. And the connection to our colleagues. That shared moment of triumph when the div is finally centered. The code works and the linter stops complaining.&lt;/p&gt;

&lt;p&gt;Or simply that a colleague might not have an answer right away either. That you’re not alone in that brief moment of not knowing. That won’t happen with AI. It always has something to say — immediately, confidently, even when it’s wrong.&lt;/p&gt;

&lt;p&gt;Ask a colleague again. Pull them out of their context. It’s worth it — for both of you.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Originally published at &lt;a href="https://www.lemm.dev/blog/en/dev/26-03-17-ailone/" rel="noopener noreferrer"&gt;lemm.dev&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>ai</category>
      <category>work</category>
    </item>
    <item>
      <title>Mastering Git Cherry-Pick: Advanced Guide with Real-World Examples</title>
      <dc:creator>Dennis Lemm</dc:creator>
      <pubDate>Tue, 08 Oct 2024 09:57:32 +0000</pubDate>
      <link>https://dev.to/314rate/mastering-git-cherry-pick-advanced-guide-with-real-world-examples-5bm3</link>
      <guid>https://dev.to/314rate/mastering-git-cherry-pick-advanced-guide-with-real-world-examples-5bm3</guid>
      <description>&lt;p&gt;&lt;strong&gt;What I love about being a web developer&lt;/strong&gt; is that you never know what challenges the day might bring. Today, I encountered a problem that was fairly new to me. On a large project with many developers working on the same codebase, we needed to ship a specific feature. But we hadn't released in two weeks, and many changes were queued for deployment to production, though they hadn't been fully tested yet. So, what could we do? Enter &lt;code&gt;git cherry-pick&lt;/code&gt; for the rescue.&lt;/p&gt;

&lt;p&gt;The git cherry-pick command provides a precise solution, allowing developers to extract and apply only the necessary commits without merging untested changes. In this article, we'll explore git cherry-pick in detail, covering its applications, best practices, advanced strategies, and key parameters with practical examples for advanced users.&lt;/p&gt;




&lt;h2&gt;
  
  
  TL;DR
&lt;/h2&gt;

&lt;p&gt;The &lt;code&gt;git cherry-pick&lt;/code&gt; command allows developers to selectively apply specific commits from one branch to another without merging all changes. This guide covers:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;How to use git cherry-pick:&lt;/strong&gt; Step-by-step examples on applying individual commits, resolving conflicts, and managing multiple commits.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Key parameters:&lt;/strong&gt; Using &lt;code&gt;--no-commit&lt;/code&gt;, &lt;code&gt;-x&lt;/code&gt;, and handling conflicts with &lt;code&gt;--continue&lt;/code&gt;, &lt;code&gt;--abort&lt;/code&gt;, and &lt;code&gt;--skip&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Related Git commands:&lt;/strong&gt; Comparisons with git merge, git rebase, git revert, and git reset.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Best practices:&lt;/strong&gt; Ideal use cases for hotfixes and selective commits, along with situations where cherry-picking should be avoided.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For developers dealing with large-scale projects or urgent fixes, &lt;code&gt;it cherry-pick&lt;/code&gt; is a powerful tool for keeping your workflow clean and efficient.&lt;/p&gt;




&lt;h2&gt;
  
  
  What Is Git Cherry-Pick? A Deep Dive
&lt;/h2&gt;

&lt;p&gt;The &lt;code&gt;git cherry-pick&lt;/code&gt; command lets you select and apply changes from a specific commit in one branch to another. Unlike &lt;code&gt;git merge&lt;/code&gt; or &lt;code&gt;git rebase&lt;/code&gt;, &lt;code&gt;git cherry-pick&lt;/code&gt; applies only targeted commits, helping maintain a clean and focused repository history.&lt;/p&gt;

&lt;p&gt;Like in my situation where I had made some changes that needs to be shipped but team mates made a lot of changes to the develop branch as well. So we needed one feature, but we didn't want to incorporate unrelated changes from the other teams. Instead of shipping the whole branch, we created a hot fix branch and used &lt;code&gt;git cherry-pick&lt;/code&gt; to extract just the needed commits.&lt;/p&gt;




&lt;h2&gt;
  
  
  Real-Life Application of Git Cherry-Pick
&lt;/h2&gt;

&lt;p&gt;Let's walk through what we did to ship the feature to production - a practical example to understand how git cherry-pick works:&lt;/p&gt;

&lt;h3&gt;
  
  
  Scenario
&lt;/h3&gt;

&lt;p&gt;As mentioned above, imagine you're developing a new feature that got merged into the main branch that is waiting to be deployed to production. Other teams are developing into this branch as well. For example improvements for other parts of the code base. Due to some delays in the testing workflow you got stuck but you need to deploy this one feature or perhaps a critical bug fix.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Steps to Cherry-Pick&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;1) Switch to the branch with the commit&lt;br&gt;
First, switch to, in this case, &lt;code&gt;main&lt;/code&gt; branch to locate the commit you need:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git checkout main
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;2) &lt;strong&gt;List recent commits to identify the one you need&lt;/strong&gt;&lt;br&gt;
Run the following command to see a log of recent commits:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git log &lt;span class="nt"&gt;--oneline&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;3) &lt;strong&gt;Switch back to the target branch&lt;/strong&gt;&lt;br&gt;
After identifying the relevant commit hash, switch back to your hot-fix-branch:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git checkout hot-fix
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;4) &lt;strong&gt;Apply the commit using cherry-pick&lt;/strong&gt;&lt;br&gt;
Use git cherry-pick followed by the commit hash to bring in just that needed change:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git cherry-pick &amp;lt;commit-hash&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Explanation:&lt;/strong&gt; This applies only the specified commit to your current branch without pulling in other changes from &lt;code&gt;main&lt;/code&gt;. Git applies the diff from that specific commit, preserving the commit history only for that change.&lt;/p&gt;




&lt;h2&gt;
  
  
  Handling More Complex Projects
&lt;/h2&gt;

&lt;p&gt;In larger projects, where multiple developers contribute to different branches simultaneously, cherry-picking becomes particularly useful for handling emergency fixes. &lt;/p&gt;

&lt;h3&gt;
  
  
  Cherry-Picking Across Forked Repositories
&lt;/h3&gt;

&lt;p&gt;When working with forked repositories, you may find yourself cherry-picking changes from the upstream repository into your fork. This allows you to pull in specific commits from the parent project while avoiding conflicts with your own local work. &lt;/p&gt;

&lt;p&gt;For example, you might cherry-pick a security patch from the upstream repo:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git fetch upstream
git cherry-pick &amp;lt;commit-hash&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Explanation:&lt;/strong&gt; This command fetches the latest changes from the upstream repository and applies only the selected commit to your local branch. It's especially useful when contributing to open-source projects where you need to stay updated with upstream changes without merging everything.&lt;/p&gt;




&lt;h2&gt;
  
  
  How to Find the Right Commits with Git Log
&lt;/h2&gt;

&lt;p&gt;A critical part of using &lt;code&gt;git cherry-pick&lt;/code&gt; effectively is identifying the correct commits. Here are some tips for filtering and selecting relevant changes:&lt;/p&gt;

&lt;h3&gt;
  
  
  View Recent Commits
&lt;/h3&gt;

&lt;p&gt;To list recent commits, you can use this command to view commits from the past two weeks:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git log &lt;span class="nt"&gt;--since&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"2 weeks ago"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You can adjust the &lt;code&gt;--since&lt;/code&gt; parameter to narrow or expand the timeframe.&lt;/p&gt;

&lt;h3&gt;
  
  
  Filter by Author
&lt;/h3&gt;

&lt;p&gt;To search for commits made by a specific author:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git log &lt;span class="nt"&gt;--author&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"Author Name"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This helped me a lot, because I know that only my changes had to be cherry-picked to the hot-fix-branch.&lt;/p&gt;

&lt;h3&gt;
  
  
  Cherry-Picking Multiple Commits
&lt;/h3&gt;

&lt;p&gt;Once you've identified the commits, you also can cherry-pick multiple commits at once:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git cherry-pick &amp;lt;commit-hash1&amp;gt; &amp;lt;commit-hash2&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This command applies multiple targeted changes to your branch.&lt;/p&gt;

&lt;h3&gt;
  
  
  Cherry-Picking a Range of Commits
&lt;/h3&gt;

&lt;p&gt;To cherry-pick a range of commits by specifying their hashes:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git cherry-pick &amp;lt;commit-hash1&amp;gt;^..&amp;lt;commit-hash3&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This will apply all commits between &lt;code&gt;commit-hash1&lt;/code&gt; and &lt;code&gt;commit-hash3&lt;/code&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  Advanced Git Cherry-Pick Parameters
&lt;/h2&gt;

&lt;p&gt;&lt;code&gt;git cherry-pick&lt;/code&gt; offers several advanced options to tailor its behavior to your needs:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;-n&lt;/code&gt; or &lt;code&gt;--no-commit&lt;/code&gt;:
Applies the changes without committing them. This lets you make further modifications or combine multiple cherry-picked commits before committing.
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git cherry-pick &lt;span class="nt"&gt;-n&lt;/span&gt; &amp;lt;commit-hash&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;-x&lt;/code&gt;:
Adds a reference to the original commit in the new commit message, which is helpful for tracking the lineage of changes across branches.
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git cherry-pick &lt;span class="nt"&gt;-x&lt;/span&gt; &amp;lt;commit-hash&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;--continue&lt;/code&gt;:
If you encounter a conflict and resolve it manually, use this command to continue the cherry-pick operation after resolving the conflicts.
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git cherry-pick &lt;span class="nt"&gt;--continue&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;--abort&lt;/code&gt;:
Cancels the cherry-pick operation and discards any changes applied so far, which is especially useful if the conflicts become too difficult to resolve.
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git cherry-pick &lt;span class="nt"&gt;--abort&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;--skip&lt;/code&gt;:
If a conflict arises and you want to skip the conflicting commit, use this option to bypass the commit and continue the cherry-pick process.
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git cherry-pick &lt;span class="nt"&gt;--skip&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  Related Git Commands and When to Use Them
&lt;/h2&gt;

&lt;p&gt;While git cherry-pick is great for selective commit application, it's important to understand how it compares to other Git commands:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;git merge&lt;/code&gt;: Use this to combine branches entirely. It's better for large-scale integrations but brings in all changes from one branch into another.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;git rebase&lt;/code&gt;: Allows you to rewrite the commit history by applying changes on top of another branch. This is useful when you want to maintain a linear history.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;git revert&lt;/code&gt;: Unlike git cherry-pick, this undoes a specific commit by creating a new commit that reverses the changes.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;git reset&lt;/code&gt;: Resets your branch to a previous state. Use this if you need to discard commits altogether, which differs from cherry-picking's selective nature.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Practical Considerations for Cherry-Picking
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Handling Conflicts:&lt;/strong&gt;&lt;br&gt;
Conflicts often arise if both branches modify the same line of code differently. When this happens, Git halts the cherry-pick process and prompts you to resolve the conflict. Once you've resolved it, continue with:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git cherry-pick &lt;span class="nt"&gt;--continue&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If the conflicts are too complex to resolve, you can cancel the entire operation using:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git cherry-pick &lt;span class="nt"&gt;--abort&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;When Not to Cherry-Pick:&lt;/strong&gt;&lt;br&gt;
Cherry-picking should be used carefully. Overuse can lead to a fragmented commit history, especially if multiple developers cherry-pick the same commits into different branches. In some cases, &lt;code&gt;git merge&lt;/code&gt; or &lt;code&gt;git rebase&lt;/code&gt; may offer a cleaner solution for integrating changes across branches.&lt;/p&gt;




&lt;h2&gt;
  
  
  Best Scenarios for Cherry-Pick Usage
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Ideal Use Cases:&lt;/strong&gt;&lt;br&gt;
Applying hotfixes across multiple branches when only specific changes are required.&lt;br&gt;
Extracting particular commits from a feature branch without merging the entire set of changes.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;When to Avoid Cherry-Picking:&lt;/strong&gt;&lt;br&gt;
For large-scale integrations, &lt;code&gt;git merge&lt;/code&gt; or &lt;code&gt;git rebase&lt;/code&gt; often provide a more consistent approach.&lt;br&gt;
When branches have diverged significantly, cherry-picking can lead to complex conflicts and inconsistencies.&lt;/p&gt;




&lt;h2&gt;
  
  
  Leveraging Git Cherry-Pick in Collaborative Environments
&lt;/h2&gt;

&lt;p&gt;In team environments, communication is key when cherry-picking commits. Ensure team members are aware of which commits have been cherry-picked and why. If multiple branches need the same fix, consider creating a shared branch for merging, which reduces redundancy and ensures consistency across the team's work.&lt;/p&gt;




&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;&lt;code&gt;git cherry-pick&lt;/code&gt; is a powerful tool for selectively applying changes without merging entire branches. When used carefully, it keeps workflows streamlined and project histories clean. However, be mindful of when and how you use it to avoid introducing unnecessary complexity.&lt;/p&gt;

&lt;p&gt;Have you used &lt;code&gt;git cherry-pick&lt;/code&gt; in your projects? I'd love to hear about your experience! What challenges or successes have you encountered when using it? Additionally, if you're interested in more articles on advanced Git commands, let me know-perhaps a series is in order!&lt;/p&gt;

</description>
      <category>git</category>
      <category>github</category>
      <category>programming</category>
      <category>webdev</category>
    </item>
    <item>
      <title>Breaking the Code: My Journey from VS Code to NeoVim</title>
      <dc:creator>Dennis Lemm</dc:creator>
      <pubDate>Fri, 23 Aug 2024 20:06:32 +0000</pubDate>
      <link>https://dev.to/314rate/breaking-the-code-my-journey-from-vs-code-to-neovim-271b</link>
      <guid>https://dev.to/314rate/breaking-the-code-my-journey-from-vs-code-to-neovim-271b</guid>
      <description>&lt;p&gt;In over almost a decade of web development, I've navigated through countless tools that have defined our industry. From my early days using Dreamweaver to the refined elegance of VS Code, I’ve tried them all. Almost.&lt;/p&gt;

&lt;p&gt;Like many of you, I found comfort in the familiar, in the tools that promised to make my workflow smoother, faster, and more efficient. But recently, something changed. I discovered NeoVim — a tool I had long ignored, dismissing it as an ancient relic, out of place in the modern world of sleek, GUI-based IDEs.&lt;/p&gt;

&lt;p&gt;And yet, here I am, writing this article in NeoVim, wondering how I didn’t make this switch sooner.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Comfort Zone: Working in VS Code
&lt;/h2&gt;

&lt;p&gt;Let’s be honest: VS Code is a fantastic editor. With its vast extension marketplace, user-friendly interface, and powerful features, it’s no surprise that it has become the go-to IDE for many developers. For years, I fine-tuned my VS Code setup—theme, extensions, keybindings—all designed to maximize my productivity. It felt like home, and I was comfortable. Yet, comfort can sometimes breed complacency, and I soon found myself questioning whether there was a better way.&lt;/p&gt;

&lt;p&gt;But comfort can sometimes lead to complacency. While VS Code provided everything I needed on the surface, I started to notice the friction points—small inefficiencies that added up over time. The occasional sluggishness when loading large projects, the endless mouse clicks, and the constant context-switching between code and mouse started to wear on me. &lt;/p&gt;

&lt;h2&gt;
  
  
  A Reluctant Encounter: My First Brush with VIM
&lt;/h2&gt;

&lt;p&gt;Like many developers, my first encounter with VIM was accidental, and it wasn’t love at first sight. I remember the panic of trying to close a file, furiously searching for a way out like a trapped animal. &lt;code&gt;Esc :q!&lt;/code&gt; became my mantra, a quick fix that let me escape unscathed, but the experience left a sour taste in my mouth. Why would anyone willingly use this?&lt;/p&gt;

&lt;p&gt;I avoided VIM so much that I even had a meme as my desktop background that perfectly captured the absurdity of the challenge of closing VIM. It was inspired by the movie &lt;em&gt;Arrival&lt;/em&gt;, where Amy Adams' character, linguist Louise Banks, holds up a sign that says &lt;code&gt;Esc :q!&lt;/code&gt;. The meme perfectly captured my frustration and the absurdity of my struggle with VIM. For years, it served as both a joke and a warning: 'Proceed with caution—this editor isn't for the faint of heart.'&lt;/p&gt;

&lt;h2&gt;
  
  
  The Turning Point: A New Perspective
&lt;/h2&gt;

&lt;p&gt;It wasn’t until a colleague mentioned that he had switched to NeoVim that I began to reconsider. "You can be so much faster," he said, "once you get used to it." Faster? I was intrigued. Speed has always been the name of the game in development. Could NeoVim really offer something that VS Code couldn’t?&lt;/p&gt;

&lt;p&gt;Around the same time, I stumbled upon a YouTube video by &lt;a href="https://www.youtube.com/@ThePrimeagen" rel="noopener noreferrer"&gt;ThePrimeagen&lt;/a&gt;, where he demonstrated his lightning-fast workflow using VIM motions. Watching him fly through his code with precision and speed, I began to see the potential. Maybe, just maybe, I had been missing out on something all along.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Gateway Plugin: VSCodeVim
&lt;/h2&gt;

&lt;p&gt;To start my vim experience in my comfort zone I installed the &lt;a href="https://marketplace.visualstudio.com/items?itemName=vscodevim.vim" rel="noopener noreferrer"&gt;VSCodeVim&lt;/a&gt; extension, and my descent into the rabbit hole began.&lt;/p&gt;

&lt;p&gt;After three weeks in VSCode I decided to give NeoVim in the terminal a fair shot. Installation was straightforward. On macOS, a simple &lt;code&gt;brew install neovim&lt;/code&gt; got me up and running. But it was clear that NeoVim wasn’t just a tool you install and start using; it’s a tool you shape, mold, and configure to fit your workflow like a well-tailored suit.&lt;/p&gt;

&lt;p&gt;After a short chat with my colleague I began with &lt;a href="https://nvchad.com/" rel="noopener noreferrer"&gt;NvChad&lt;/a&gt;, a preconfigured setup that promised a modern UI and essential plugins. It provided a solid foundation, but the real magic happened when I started customizing it to suit my needs.&lt;/p&gt;

&lt;p&gt;Now, after ten days of working exclusively in the terminal with NeoVim, I find it hard to believe it’s me embracing this change. And it's so much fun! Who could have thought.&lt;/p&gt;

&lt;p&gt;This VIM-emulating extension for VS Code, which Microsoft probably should ban, has led me to not want to use VS Code at all anymore. &lt;/p&gt;

&lt;h2&gt;
  
  
  The Learning Curve: From Frustration to Mastery
&lt;/h2&gt;

&lt;p&gt;I won’t sugarcoat it — learning NeoVim was and still is challenging. My muscle memory, honed over years of using VS Code, fought me every step of the way. The first few days were a frustrating mix of excitement and regret. But with each small victory—learning to navigate without a mouse, mastering basic commands, and configuring keymaps — I felt a growing sense of empowerment.&lt;/p&gt;

&lt;p&gt;NeoVim isn’t just an editor; it’s a way of thinking about code. It forces you to slow down, to be deliberate in your actions. And paradoxically, this deliberate approach ultimately leads to greater speed and efficiency.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why NeoVim? The Unseen Advantages
&lt;/h2&gt;

&lt;p&gt;So, what does NeoVim offer that other editors don’t? The answer lies in its philosophy and design:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Speed and Efficiency&lt;/strong&gt;: NeoVim is built for keyboard navigation. Once you’ve internalized its commands and motions, you can move through your code faster than ever before. The lack of reliance on a mouse means fewer context switches and a more focused workflow.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Customization&lt;/strong&gt;: With NeoVim, you’re in control. From keybindings to plugins, everything is customizable to fit your exact needs. The inclusion of Lua scripting for configuration offers a level of flexibility that’s hard to match.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Lightweight and Fast&lt;/strong&gt;: Unlike many modern IDEs, NeoVim is incredibly lightweight. It opens instantly, even with large projects, and never bogs down your system.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Extensibility&lt;/strong&gt;: The plugin ecosystem around NeoVim is vast and active. Plugins like &lt;code&gt;telescope.nvim&lt;/code&gt; for fuzzy finding, &lt;code&gt;nvim-lspconfig&lt;/code&gt; for language server protocol support, and &lt;code&gt;treesitter&lt;/code&gt; for advanced syntax highlighting elevate NeoVim to a level of functionality that rivals, and often surpasses, other IDEs.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  My Setup: A NeoVim Configuration for Web Developers
&lt;/h2&gt;

&lt;p&gt;For those interested in making the switch, here’s a glimpse into my current/starter NeoVim setup:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Plugins&lt;/strong&gt;: I rely on &lt;code&gt;telescope.nvim&lt;/code&gt; for file and text searching, &lt;code&gt;nvim-lspconfig&lt;/code&gt; for robust language support, and &lt;code&gt;treesitter&lt;/code&gt; for syntax highlighting. I’ve also added &lt;code&gt;fzf&lt;/code&gt; for a blazing-fast file finder and &lt;code&gt;prettier&lt;/code&gt; for automatic code formatting.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Keymaps&lt;/strong&gt;: I’ve remapped &lt;code&gt;jk&lt;/code&gt; to &lt;code&gt;Esc&lt;/code&gt;, which makes exiting insert mode quicker. Or using the vs code familiar moving entire lines by just type in &lt;code&gt;J&lt;/code&gt; or &lt;code&gt;K&lt;/code&gt;. And some other minor changes.&lt;br&gt;
These simple changes have already made my workflow more fluid. What's in your keymap? I'd love to hear about your configurations in the comments.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Custom Commands&lt;/strong&gt;: I’ve created a few custom commands to streamline repetitive tasks, like quickly creating a new buffer or searching across files with a single keystroke.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  The Verdict: NeoVim Is Worth the Effort
&lt;/h2&gt;

&lt;p&gt;After several days of using NeoVim exclusively, I can confidently say that it has been a game-changer. It’s not just about speed — though that’s a big part of it — it’s about a deeper connection with my code. The minimalistic, distraction-free environment of NeoVim allows me to focus entirely on the task at hand.&lt;/p&gt;

&lt;p&gt;Switching from a full-featured IDE like VS Code to a terminal-based editor like NeoVim might seem daunting, but the rewards are well worth the effort. If you’re looking for a tool that will push you to be a better, more efficient developer, NeoVim is the rabbit hole worth diving into.&lt;/p&gt;

&lt;h2&gt;
  
  
  Ready to Make the Switch?
&lt;/h2&gt;

&lt;p&gt;If you’re curious about NeoVim, I encourage you to take the plunge. Start small with a basic setup, and you'll soon discover how it can elevate your development workflow to new heights. The learning curve may be steep, but trust me — the view from the top is worth every step.&lt;/p&gt;

&lt;p&gt;Have you made the switch to NeoVim? Share your experience in the comments — I'd love to hear how it’s transformed your workflow.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Next Chapter: Transforming My Obsidian Setup with Vim
&lt;/h2&gt;

&lt;p&gt;As I’ve delved deeper into the world of Vim, I’ve realized that its principles of efficiency and keyboard-centric navigation extend beyond just coding. Inspired by my success with NeoVim, I’ve started transforming my entire workflow to embrace Vim’s philosophy, starting with my note-taking and knowledge management tool: Obsidian.&lt;/p&gt;

&lt;p&gt;For those unfamiliar, Obsidian is a powerful, markdown-based tool that I’ve relied on for organizing my thoughts, ideas, and project notes. It’s highly customizable, and naturally, I began to wonder — could I bring the same Vim-powered efficiency to Obsidian?&lt;/p&gt;

&lt;p&gt;The answer, of course, is yes. Obsidian’s support for Vim keybindings has allowed me to create a seamless, consistent experience across all my tools. Now, whether I’m coding in NeoVim or jotting down ideas in Obsidian, my workflow remains fluid and uninterrupted.&lt;/p&gt;

&lt;p&gt;In my next article, I’ll dive into the specifics of how I’ve configured Obsidian to match my Vim setup, sharing tips and tricks that have made my note-taking process faster and more intuitive. If you’ve ever wanted to unify your digital environment under the banner of Vim, stay tuned — I’m excited to share what I’ve learned.&lt;/p&gt;

</description>
      <category>neovim</category>
      <category>vscode</category>
      <category>developer</category>
      <category>tooling</category>
    </item>
  </channel>
</rss>
