<?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[Tech]]></title><description><![CDATA[Tech]]></description><link>https://wkk.hashnode.dev</link><generator>RSS for Node</generator><lastBuildDate>Tue, 03 Nov 2026 05:52:57 GMT</lastBuildDate><atom:link href="https://wkk.hashnode.dev/rss.xml" rel="self" type="application/rss+xml"/><language><![CDATA[en]]></language><ttl>60</ttl><item><title><![CDATA[I Turned Off IntelliJ’s AI Completion, Then Replaced It With Ollama]]></title><description><![CDATA["This man really is a self-imposed grinder." That's how my wife introduces me to her friends. Hahaha She's not wrong. A few years back I was in a…]]></description><link>https://wkk.hashnode.dev/i-turned-off-intellij-s-ai-completion-then-replaced-it-with-ollama</link><guid isPermaLink="true">https://wkk.hashnode.dev/i-turned-off-intellij-s-ai-completion-then-replaced-it-with-ollama</guid><category><![CDATA[intellij]]></category><category><![CDATA[ollama]]></category><dc:creator><![CDATA[Wei Kang]]></dc:creator><pubDate>Sat, 24 Oct 2026 12:37:26 GMT</pubDate><enclosure url="https://cdn.hashnode.com/uploads/covers/6adc4664c758e3e3567856fb/b424add4-05a8-436a-864f-e741f7b7209a.jpg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<h2>An engineer who chooses to suffer</h2>
<p><em>"This man really is a self-imposed grinder."</em></p>
<p>That's how my wife introduces me to her friends. Hahaha</p>
<p>She's not wrong. A few years back I was in a consulting firm with no weekends off — it almost ruined my marriage, so I left for a "normal" company with proper 9-6 hours. I got my time back. And what do I do with it?</p>
<p>I code 🤣</p>
<p>That grinder streak shows up in how I use AI too. Most people hand an agent a <code>goal</code> and let it drive to the finish line (you've seen the ads). I treat it as a peer instead — it lives in another terminal window, and I only talk to it when I need someone to brainstorm with.</p>
<blockquote>
<p>Ok, maybe AI is just my emotional support</p>
</blockquote>
<p>Which is why I've never really used Cursor-alike tools, and why inline completion was new territory for me. (That, and I'm too used to the IntelliJ experience to switch.)</p>
<h2>IntelliJ local code completion</h2>
<p>I can't recall which IntelliJ update it was, but at some point IntelliJ started offering code completion through a local AI model.</p>
<img src="https://cdn.hashnode.com/uploads/covers/6adc4664c758e3e3567856fb/dec9f69c-edd6-423c-a9d0-2ba5b95a94c5.png" alt="IntelliJ settings panel showing the local AI code completion provider" style="display:block;margin:0 auto" />

<p>I have to admit, I kind of hate this feature. Whenever I stop typing, trying to take a pause to think about what to write next, it pops up a suggestion.</p>
<p>I welcomed suggestions, at least at first, until I started to get annoyed by how bad its suggestions were.</p>
<blockquote>
<p>I know it's just a local model with limitations, but the annoyance is real.</p>
</blockquote>
<p>So I turned it off.</p>
<h2>Trying a FIM model instead</h2>
<p>While I was developing a feature in my hobby project that needed AI integration, a spark came.</p>
<p><em>What if ... I use a local LLM to provide the FIM feature? Would a FIM-trained model change how I use AI?</em></p>
<img src="https://cdn.hashnode.com/uploads/covers/6adc4664c758e3e3567856fb/95a84678-e8b4-4ef2-9f3e-068f674dedf5.png" alt="Ollama running locally, serving the Qwen2.5-coder model" style="display:block;margin:0 auto" />

<blockquote>
<p>FIM <em>=</em> <strong>Fill-in-the-Middle.</strong> Use a FIM-trained model if you want it to provide code completion suggestions.</p>
</blockquote>
<h3>Setup</h3>
<p>I have a Golang hobby project (I'm a Java developer, so this project isn't something I can develop with my eyes closed), and there was one function I was trying to complete.</p>
<p>The function calculates the <code>position</code> of a stock trading module. Basically, it needs to replay all transactions of a given stock, then compute its total units, total cost, and realized gain/loss whenever there is a stock sell transaction.</p>
<p>I'm comparing <strong>Qwen2.5-coder:3B</strong> (just 3B guys !!!) with the IntelliJ local model, to see which gives a better experience in terms of inline completion.</p>
<blockquote>
<p>To integrate with Qwen2.5-coder:3B, I'm using the DevoxxGenie plugin connected to Ollama running on my laptop (M4, 24GB).</p>
</blockquote>
<p>To be fair, these aren't the same class of model — IntelliJ's local provider is tuned for fast single-line completion, while Qwen2.5-coder:3B is a FIM-trained model several times its size. The question I cared about was which one I'd rather have switched on while coding, not which is objectively better.</p>
<h3>IntelliJ</h3>
<img src="https://cdn.hashnode.com/uploads/covers/6adc4664c758e3e3567856fb/a2ccd46b-f39d-463b-8f30-a7bc01e104e4.png" alt="IntelliJ suggesting a straightforward line of Go code in grey inline text" style="display:block;margin:0 auto" />

<p>The IntelliJ local model responds very fast, but it's only good at straightforward suggestions like the image above (refer to the grey code), and tends to hallucinate (see the image below — I'm trying to sum units and cost during a BUY transaction, but...)</p>
<img src="https://cdn.hashnode.com/uploads/covers/6adc4664c758e3e3567856fb/0266d13a-d2a4-4727-a404-c429b5c2a7dc.png" alt="" style="display:block;margin:0 auto" />

<p>How I feel about it is that it seems to suggest based on whatever I have <em><strong>typed</strong></em>, instead of the context of the function and the comments around my cursor, like in the image below.</p>
<img src="https://cdn.hashnode.com/uploads/covers/6adc4664c758e3e3567856fb/21a096f6-47e7-4bd6-87ec-cef21c5dc8c1.png" alt="IntelliJ suggestion ignoring the surrounding comment and function context" style="display:block;margin:0 auto" />

<blockquote>
<p>Although the suggestion might not be applicable, it responds blazing fast.</p>
<p>It gives me a similar feeling to the LSP dropdown suggestions that IntelliJ provides.</p>
</blockquote>
<h3>Qwen2.5-coder</h3>
<p>It is more aggressive — I'm not sure whether it's because of the plugin I use — but the suggestions are more applicable to the context.</p>
<img src="https://cdn.hashnode.com/uploads/covers/6adc4664c758e3e3567856fb/e427e5ce-9375-40bd-ae93-b962cb5a7862.png" alt="" style="display:block;margin:0 auto" />

<p>But it has a longer latency compared to the IntelliJ local provider.</p>
<p>And the comments I put in the code seem to be taken into account when it provides suggestions.</p>
<img src="https://cdn.hashnode.com/uploads/covers/6adc4664c758e3e3567856fb/b0ec53f1-075f-4748-93d3-9e213de05298.png" alt="Qwen2.5-coder producing a suggestion that follows the intent described in a code comment" style="display:block;margin:0 auto" />

<p>It gives better results.</p>
<h2>Before you go</h2>
<p>Well, in my test setup — or at least while I was using it — I felt Qwen2.5-coder performed better than the IntelliJ local provider. I value accuracy over speed.</p>
<p>But I also have to highlight that it does have limitations: it needs context, and it is (slightly) slower. Code with comments gets better suggestions than code without.</p>
<p>At the moment I have a Claude subscription, which doesn't provide an inline completion feature, and I don't want to spend another dollar on a tool like Cursor just to get auto completion. This Ollama setup is a good alternative for me — you may want to try it if you're on a tight budget like me.</p>
]]></content:encoded></item></channel></rss>