<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom" ><generator uri="https://jekyllrb.com/" version="3.10.0">Jekyll</generator><link href="https://technical-creators-club.github.io/feed.xml" rel="self" type="application/atom+xml" /><link href="https://technical-creators-club.github.io/" rel="alternate" type="text/html" /><updated>2026-05-11T13:19:36+00:00</updated><id>https://technical-creators-club.github.io/feed.xml</id><title type="html">Technical Creators Club</title><subtitle>A community of builders sharing practical knowledge about development tools, techniques, and ideas. No fluff — just craft.</subtitle><author><name>Valeras Narbutas</name></author><entry><title type="html">🔧 Git Tips Every Developer Should Know</title><link href="https://technical-creators-club.github.io/git/productivity/2026/04/09/git-tips-for-developers.html" rel="alternate" type="text/html" title="🔧 Git Tips Every Developer Should Know" /><published>2026-04-09T00:00:00+00:00</published><updated>2026-04-09T00:00:00+00:00</updated><id>https://technical-creators-club.github.io/git/productivity/2026/04/09/git-tips-for-developers</id><content type="html" xml:base="https://technical-creators-club.github.io/git/productivity/2026/04/09/git-tips-for-developers.html"><![CDATA[<h1 id="-git-tips-every-developer-should-know">🔧 Git Tips Every Developer Should Know</h1>

<blockquote>
  <p><strong>Author:</strong> <a href="https://github.com/ValerasNarbutas">@ValerasNarbutas</a> · <strong>Tags:</strong> <code class="language-plaintext highlighter-rouge">git</code> <code class="language-plaintext highlighter-rouge">productivity</code> · <strong>Reading time:</strong> ~5 min</p>
</blockquote>

<hr />

<p>Git is the one tool that every developer touches every day, yet most only use 10% of it. These are the tips that actually matter.</p>

<h2 id="1-amend-without-opening-an-editor">1. Amend Without Opening an Editor</h2>

<p>Made a typo in your last commit message? One flag fixes it:</p>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>git commit <span class="nt">--amend</span> <span class="nt">--no-edit</span>
</code></pre></div></div>

<p>Add <code class="language-plaintext highlighter-rouge">--no-edit</code> to reuse the existing message. Great for adding a forgotten file to the last commit.</p>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>git add forgotten-file.ts
git commit <span class="nt">--amend</span> <span class="nt">--no-edit</span>
</code></pre></div></div>

<blockquote>
  <p>⚠️ Only do this on commits you haven’t pushed yet.</p>
</blockquote>

<hr />

<h2 id="2-stash-with-a-message">2. Stash with a Message</h2>

<p><code class="language-plaintext highlighter-rouge">git stash</code> is commonly used but rarely named. Named stashes are much easier to work with later:</p>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>git stash push <span class="nt">-m</span> <span class="s2">"WIP: refactor auth middleware"</span>
</code></pre></div></div>

<p>List all stashes:</p>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>git stash list
<span class="c"># stash@{0}: On feature/auth: WIP: refactor auth middleware</span>
<span class="c"># stash@{1}: On main: hotfix idea</span>
</code></pre></div></div>

<p>Apply a specific stash without dropping it:</p>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>git stash apply stash@<span class="o">{</span>1<span class="o">}</span>
</code></pre></div></div>

<hr />

<h2 id="3-interactive-rebase-to-clean-up-history">3. Interactive Rebase to Clean Up History</h2>

<p>Before merging a feature branch, clean up your commit history with interactive rebase:</p>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>git rebase <span class="nt">-i</span> HEAD~5   <span class="c"># rewrite last 5 commits</span>
</code></pre></div></div>

<p>In the editor, use:</p>
<ul>
  <li><code class="language-plaintext highlighter-rouge">pick</code> — keep as-is</li>
  <li><code class="language-plaintext highlighter-rouge">squash</code> / <code class="language-plaintext highlighter-rouge">s</code> — merge into the previous commit</li>
  <li><code class="language-plaintext highlighter-rouge">reword</code> / <code class="language-plaintext highlighter-rouge">r</code> — change commit message</li>
  <li><code class="language-plaintext highlighter-rouge">fixup</code> / <code class="language-plaintext highlighter-rouge">f</code> — like squash, but discard this commit’s message</li>
  <li><code class="language-plaintext highlighter-rouge">drop</code> / <code class="language-plaintext highlighter-rouge">d</code> — delete the commit entirely</li>
</ul>

<p>Clean history makes code review easier and <code class="language-plaintext highlighter-rouge">git blame</code> more useful.</p>

<hr />

<h2 id="4-find-the-commit-that-introduced-a-bug">4. Find the Commit That Introduced a Bug</h2>

<p><code class="language-plaintext highlighter-rouge">git bisect</code> does a binary search through your commit history:</p>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>git bisect start
git bisect bad                  <span class="c"># current commit is broken</span>
git bisect good v2.1.0          <span class="c"># this tag was working</span>

<span class="c"># Git checks out a midpoint commit — test it, then:</span>
git bisect good   <span class="c"># or: git bisect bad</span>

<span class="c"># Repeat until Git identifies the culprit commit</span>
git bisect reset  <span class="c"># when done</span>
</code></pre></div></div>

<p>This finds bugs in large histories in ~log₂(n) steps.</p>

<hr />

<h2 id="5-use---patch-for-surgical-staging">5. Use <code class="language-plaintext highlighter-rouge">--patch</code> for Surgical Staging</h2>

<p>Don’t commit everything in a file — stage only the hunks you want:</p>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>git add <span class="nt">--patch</span>
<span class="c"># or shorthand:</span>
git add <span class="nt">-p</span>
</code></pre></div></div>

<p>Git shows each changed hunk and asks what to do: <code class="language-plaintext highlighter-rouge">y</code> (stage), <code class="language-plaintext highlighter-rouge">n</code> (skip), <code class="language-plaintext highlighter-rouge">s</code> (split), <code class="language-plaintext highlighter-rouge">e</code> (edit manually).</p>

<p>Pair this with <code class="language-plaintext highlighter-rouge">git diff --staged</code> to review exactly what you’re about to commit.</p>

<hr />

<h2 id="6-useful-aliases-worth-adding">6. Useful Aliases Worth Adding</h2>

<div class="language-ini highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="c"># ~/.gitconfig
</span><span class="nn">[alias]</span>
  <span class="py">st</span>   <span class="p">=</span> <span class="s">status -sb</span>
  <span class="py">lg</span>   <span class="p">=</span> <span class="s">log --oneline --graph --decorate --all</span>
  <span class="py">undo</span> <span class="p">=</span> <span class="s">reset HEAD~1 --soft</span>
  <span class="py">wip</span>  <span class="p">=</span> <span class="s">commit -am "WIP"</span>
  <span class="py">unwip</span> <span class="p">=</span> <span class="s">reset HEAD~1 --soft</span>
</code></pre></div></div>

<p><code class="language-plaintext highlighter-rouge">git lg</code> gives a compact visual branch graph. <code class="language-plaintext highlighter-rouge">git undo</code> rolls back the last commit while keeping your changes staged.</p>

<hr />

<h2 id="7-dont-fear-reflog">7. Don’t Fear <code class="language-plaintext highlighter-rouge">reflog</code></h2>

<p><code class="language-plaintext highlighter-rouge">git reflog</code> is your undo history for Git operations. Even after a bad rebase or accidental branch deletion, you can recover:</p>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>git reflog
<span class="c"># HEAD@{0}: rebase: finish</span>
<span class="c"># HEAD@{1}: commit: add login form</span>
<span class="c"># HEAD@{2}: checkout: moving from main to feature/login</span>
<span class="c"># ...</span>

git checkout HEAD@<span class="o">{</span>2<span class="o">}</span>   <span class="c"># go back to any state</span>
</code></pre></div></div>

<p>Your local reflog is kept for 90 days by default. It has saved many developers from disaster.</p>

<hr />

<h2 id="summary">Summary</h2>

<table>
  <thead>
    <tr>
      <th>Tip</th>
      <th>Command</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>Amend last commit</td>
      <td><code class="language-plaintext highlighter-rouge">git commit --amend --no-edit</code></td>
    </tr>
    <tr>
      <td>Named stash</td>
      <td><code class="language-plaintext highlighter-rouge">git stash push -m "description"</code></td>
    </tr>
    <tr>
      <td>Clean history</td>
      <td><code class="language-plaintext highlighter-rouge">git rebase -i HEAD~N</code></td>
    </tr>
    <tr>
      <td>Find bug commit</td>
      <td><code class="language-plaintext highlighter-rouge">git bisect start/good/bad</code></td>
    </tr>
    <tr>
      <td>Stage by hunk</td>
      <td><code class="language-plaintext highlighter-rouge">git add -p</code></td>
    </tr>
    <tr>
      <td>Recover anything</td>
      <td><code class="language-plaintext highlighter-rouge">git reflog</code></td>
    </tr>
  </tbody>
</table>

<p>Git rewards investment. The more you learn it, the less time you spend fighting it.</p>

<hr />

<p><a href="../index.md">← Back to homepage</a></p>]]></content><author><name>Valeras Narbutas</name></author><category term="git" /><category term="productivity" /><category term="git" /><category term="cli" /><category term="version-control" /><category term="tips" /><category term="workflow" /><summary type="html"><![CDATA[Git is the one tool every developer uses daily, yet most only use 10% of it. These are the tips that actually matter.]]></summary></entry><entry><title type="html">⚡ Top Developer Tools in 2026</title><link href="https://technical-creators-club.github.io/tools/dx/2026/04/09/top-dev-tools-2026.html" rel="alternate" type="text/html" title="⚡ Top Developer Tools in 2026" /><published>2026-04-09T00:00:00+00:00</published><updated>2026-04-09T00:00:00+00:00</updated><id>https://technical-creators-club.github.io/tools/dx/2026/04/09/top-dev-tools-2026</id><content type="html" xml:base="https://technical-creators-club.github.io/tools/dx/2026/04/09/top-dev-tools-2026.html"><![CDATA[<h1 id="-top-developer-tools-in-2026">⚡ Top Developer Tools in 2026</h1>

<blockquote>
  <p><strong>Author:</strong> <a href="https://github.com/ValerasNarbutas">@ValerasNarbutas</a> · <strong>Tags:</strong> <code class="language-plaintext highlighter-rouge">tools</code> <code class="language-plaintext highlighter-rouge">dx</code> <code class="language-plaintext highlighter-rouge">2026</code> · <strong>Reading time:</strong> ~7 min</p>
</blockquote>

<hr />

<p>The tools you use shape how you think. After years of trying every editor plugin, CLI utility, and AI assistant out there, here’s what’s actually stuck in 2026.</p>

<h2 id="-ai-assisted-development">🤖 AI-Assisted Development</h2>

<h3 id="github-copilot-cli">GitHub Copilot CLI</h3>

<p>The terminal is the real developer interface. Copilot CLI brings natural-language help directly to your shell — ask it how to do something, get the command, run it. The iteration loop is fast.</p>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="c"># Example: ask before you run</span>
gh copilot suggest <span class="s2">"undo last git commit but keep the changes"</span>
</code></pre></div></div>

<p><strong>Best for:</strong> Command lookup, shell scripting, one-off transformations.</p>

<h3 id="cursor--continuedev">Cursor / Continue.dev</h3>

<p>Full IDE AI integration has matured. Cursor still leads for those who want an opinionated setup; Continue.dev is the open-source pick if you want to bring your own model (including local ones via Ollama).</p>

<p><strong>Best for:</strong> Code generation, refactoring, explaining unfamiliar codebases.</p>

<hr />

<h2 id="-terminal--shell">🔧 Terminal &amp; Shell</h2>

<h3 id="warp-terminal">Warp Terminal</h3>

<p>Warp treats terminal output as structured blocks rather than a raw stream. Copy a command’s output, re-run just one block, get AI suggestions inline. On macOS it’s a clear winner; Linux support is solid now too.</p>

<h3 id="zoxide">zoxide</h3>

<p><code class="language-plaintext highlighter-rouge">cd</code> replacement that learns your habits. After a few days of use you’ll never type full paths again.</p>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>z proj   <span class="c"># jumps to ~/dev/projects/my-project or wherever you go most</span>
</code></pre></div></div>

<h3 id="fd--ripgrep">fd + ripgrep</h3>

<p><code class="language-plaintext highlighter-rouge">find</code> and <code class="language-plaintext highlighter-rouge">grep</code> replacements that are faster and have sane defaults:</p>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>fd <span class="s2">"*.ts"</span> src/           <span class="c"># find TypeScript files under src/</span>
rg <span class="s2">"useState"</span> <span class="nt">--type</span> ts  <span class="c"># search in TypeScript files only</span>
</code></pre></div></div>

<hr />

<h2 id="-version-management">📦 Version Management</h2>

<h3 id="mise-formerly-rtx">mise (formerly rtx)</h3>

<p>One tool to manage all your runtime versions — Node, Python, Ruby, Go, Rust. Drop a <code class="language-plaintext highlighter-rouge">.mise.toml</code> in any project and the right version activates automatically.</p>

<div class="language-toml highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="c"># .mise.toml</span>
<span class="nn">[tools]</span>
<span class="py">node</span> <span class="p">=</span> <span class="s">"22"</span>
<span class="py">python</span> <span class="p">=</span> <span class="s">"3.12"</span>
</code></pre></div></div>

<p><strong>Replaces:</strong> nvm, pyenv, rbenv, asdf.</p>

<hr />

<h2 id="-api--network">🌐 API &amp; Network</h2>

<h3 id="bruno">Bruno</h3>

<p>An open-source, offline-first API client. Collections are stored as plain files in your repo — no cloud sync needed, no account required, git-friendly by design.</p>

<p><strong>Replaces:</strong> Postman (for most use cases).</p>

<h3 id="httpie-desktop">HTTPie Desktop</h3>

<p>For quick exploratory requests, HTTPie’s syntax is friendlier than curl:</p>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>http POST api.example.com/users <span class="nv">name</span><span class="o">=</span><span class="s2">"Ada"</span> <span class="nv">email</span><span class="o">=</span><span class="s2">"ada@example.com"</span>
</code></pre></div></div>

<hr />

<h2 id="️-data--databases">🗃️ Data &amp; Databases</h2>

<h3 id="beekeeper-studio-community">Beekeeper Studio (Community)</h3>

<p>A cross-platform SQL editor that doesn’t look awful. Free tier is genuinely useful. Works with Postgres, MySQL, SQLite, and more.</p>

<h3 id="duckdb">DuckDB</h3>

<p>An in-process analytical database — think SQLite but for data analysis. Query CSV/Parquet files directly, or use it as an embedded engine in your app.</p>

<div class="language-sql highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="k">SELECT</span> <span class="k">month</span><span class="p">,</span> <span class="k">SUM</span><span class="p">(</span><span class="n">revenue</span><span class="p">)</span>
<span class="k">FROM</span> <span class="n">read_csv</span><span class="p">(</span><span class="s1">'sales.csv'</span><span class="p">)</span>
<span class="k">GROUP</span> <span class="k">BY</span> <span class="k">month</span><span class="p">;</span>
</code></pre></div></div>

<hr />

<h2 id="-the-short-list">✅ The Short List</h2>

<table>
  <thead>
    <tr>
      <th>Category</th>
      <th>Tool</th>
      <th>Why</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>AI coding</td>
      <td>GitHub Copilot / Cursor</td>
      <td>Best integration, works everywhere</td>
    </tr>
    <tr>
      <td>Terminal</td>
      <td>Warp</td>
      <td>Structured output, AI inline</td>
    </tr>
    <tr>
      <td>Navigation</td>
      <td>zoxide</td>
      <td>Fastest <code class="language-plaintext highlighter-rouge">cd</code> replacement</td>
    </tr>
    <tr>
      <td>Search</td>
      <td>fd + ripgrep</td>
      <td>Faster, saner defaults than find/grep</td>
    </tr>
    <tr>
      <td>Runtimes</td>
      <td>mise</td>
      <td>One tool, all languages</td>
    </tr>
    <tr>
      <td>API client</td>
      <td>Bruno</td>
      <td>Git-friendly, offline, open source</td>
    </tr>
    <tr>
      <td>Database UI</td>
      <td>Beekeeper Studio</td>
      <td>Clean, cross-platform, free</td>
    </tr>
    <tr>
      <td>Data query</td>
      <td>DuckDB</td>
      <td>SQL over files, embedded analytics</td>
    </tr>
  </tbody>
</table>

<hr />

<p>The best tool is the one you actually use consistently. Pick a few from this list, get comfortable with them, then add more.</p>

<hr />

<p><em>Next: <a href="2026-04-09-git-tips-for-developers.md">🔧 Git Tips Every Developer Should Know</a></em></p>

<hr />

<p><a href="../index.md">← Back to homepage</a></p>]]></content><author><name>Valeras Narbutas</name></author><category term="tools" /><category term="dx" /><category term="tools" /><category term="terminal" /><category term="ai" /><category term="productivity" /><category term="developer-experience" /><category term="2026" /><summary type="html"><![CDATA[The tools you use shape how you think. Here's what's actually stuck after years of trying every editor plugin, CLI utility, and AI assistant out there.]]></summary></entry><entry><title type="html">👋 Welcome to Technical Creators Club</title><link href="https://technical-creators-club.github.io/meta/intro/2026/04/09/welcome-to-techkurejai.html" rel="alternate" type="text/html" title="👋 Welcome to Technical Creators Club" /><published>2026-04-09T00:00:00+00:00</published><updated>2026-04-09T00:00:00+00:00</updated><id>https://technical-creators-club.github.io/meta/intro/2026/04/09/welcome-to-techkurejai</id><content type="html" xml:base="https://technical-creators-club.github.io/meta/intro/2026/04/09/welcome-to-techkurejai.html"><![CDATA[<h1 id="-welcome-to-technical-creators-club">👋 Welcome to Technical Creators Club</h1>

<blockquote>
  <p><strong>Author:</strong> <a href="https://github.com/ValerasNarbutas">@ValerasNarbutas</a> · <strong>Tags:</strong> <code class="language-plaintext highlighter-rouge">meta</code> <code class="language-plaintext highlighter-rouge">intro</code> · <strong>Reading time:</strong> ~2 min</p>
</blockquote>

<hr />

<h2 id="hello-builder-">Hello, builder! 👷</h2>

<p>Welcome to <strong>Technical Creators Club</strong> (<em>Lithuanian: Tech Kūrėjų Klubas</em>) — a community blog about technology, written in Git.</p>

<p><em>Kūrėjų</em> is Lithuanian for <em>creators</em>. That’s the spirit here: practical knowledge for people who actually build things, shared by the community, for the community.</p>

<h2 id="why-a-git-blog">Why a Git Blog?</h2>

<p>Most blogs are owned by platforms. Posts live on servers someone else controls, behind dashboards that change, get acquired, or disappear.</p>

<p>A Git blog is different:</p>

<ul>
  <li><strong>Your content, your repo</strong> — posts are Markdown files, versioned like code</li>
  <li><strong>No CMS, no database</strong> — just files and commits</li>
  <li><strong>Forkable and diffable</strong> — anyone can see the history of every post</li>
  <li><strong>Stays simple</strong> — no build pipeline to maintain</li>
</ul>

<h2 id="what-to-expect">What to Expect</h2>

<p>Articles here will be practical and direct. Topics include:</p>

<ul>
  <li>Git workflows and version control techniques</li>
  <li>Developer tooling that actually improves your workflow</li>
  <li>Architecture and design patterns</li>
  <li>AI tools and automation</li>
  <li>Open source culture and contribution</li>
</ul>

<p>No SEO-bloated intros. No padding. Just the useful part.</p>

<h2 id="how-posts-are-published">How Posts Are Published</h2>

<p>Each post is a Markdown file in the <code class="language-plaintext highlighter-rouge">_posts/</code> directory, named <code class="language-plaintext highlighter-rouge">YYYY-MM-DD-slug.md</code>.</p>

<p>Want to contribute your own post? See <a href="https://github.com/Technical-Creators-Club/Technical-Creators-Club.github.io/blob/main/CONTRIBUTING.md">CONTRIBUTING.md</a>.</p>

<hr />

<p><em>Next up: <a href="2026-04-09-top-dev-tools-2026.md">⚡ Top Developer Tools in 2026</a></em></p>]]></content><author><name>Valeras Narbutas</name></author><category term="meta" /><category term="intro" /><category term="welcome" /><category term="jekyll" /><category term="git-blog" /><category term="open-source" /><summary type="html"><![CDATA[Technical Creators Club is a community blog about technology, written in Git. Practical knowledge for developers who actually build things.]]></summary></entry></feed>