diff options
| author | Paul Buetow <paul@buetow.org> | 2026-03-09 22:45:54 +0200 |
|---|---|---|
| committer | Paul Buetow <paul@buetow.org> | 2026-03-09 22:45:54 +0200 |
| commit | ee75979b5d94ae18f930ff91e5b2d51cd554b60d (patch) | |
| tree | 19dc405e57222928d1c5bf635657dacfd14a0034 /gemfeed/2025-08-05-local-coding-llm-with-ollama.html | |
| parent | b67012e55e52f69897559a084b4588a5649b3c5c (diff) | |
Update content for html
Diffstat (limited to 'gemfeed/2025-08-05-local-coding-llm-with-ollama.html')
| -rw-r--r-- | gemfeed/2025-08-05-local-coding-llm-with-ollama.html | 199 |
1 files changed, 97 insertions, 102 deletions
diff --git a/gemfeed/2025-08-05-local-coding-llm-with-ollama.html b/gemfeed/2025-08-05-local-coding-llm-with-ollama.html index 6108297f..f2a9d99d 100644 --- a/gemfeed/2025-08-05-local-coding-llm-with-ollama.html +++ b/gemfeed/2025-08-05-local-coding-llm-with-ollama.html @@ -2,17 +2,12 @@ <html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> -<meta name="viewport" content="width=device-width, initial-scale=1.0" /> <title>Local LLM for Coding with Ollama on macOS</title> <link rel="shortcut icon" type="image/gif" href="/favicon.ico" /> <link rel="stylesheet" href="../style.css" /> <link rel="stylesheet" href="style-override.css" /> </head> <body> -<div class="rfx-overlay-grid"></div> -<div class="rfx-overlay-scanlines"></div> -<div id="rfx-stars"></div> -<div class="rfx-vignette"></div> <p class="header"> <a href="https://foo.zone">Home</a> | <a href="https://codeberg.org/snonux/foo.zone/src/branch/content-md/gemfeed/2025-08-05-local-coding-llm-with-ollama.md">Markdown</a> | <a href="gemini://foo.zone/gemfeed/2025-08-05-local-coding-llm-with-ollama.gmi">Gemini</a> </p> @@ -110,9 +105,9 @@ by Lorenzo Bettini http://www.lorenzobettini.it http://www.gnu.org/software/src-highlite --> -<pre><font color="#ff0000">brew install ollama</font> -<font color="#ff0000">rehash</font> -<font color="#ff0000">ollama serve</font> +<pre>brew install ollama +rehash +ollama serve </pre> <br /> <span>Which started up the Ollama server with something like this (the screenshots shows already some requests made):</span><br /> @@ -125,7 +120,7 @@ http://www.gnu.org/software/src-highlite --> by Lorenzo Bettini http://www.lorenzobettini.it http://www.gnu.org/software/src-highlite --> -<pre><font color="#ff0000">ollama pull qwen2</font><font color="#F3E651">.</font><font color="#bb00ff">5</font><font color="#ff0000">-coder</font><font color="#F3E651">:</font><font color="#ff0000">14b-instruct</font> +<pre>ollama pull qwen2.<font color="#000000">5</font>-coder:14b-instruct </pre> <br /> <span>Now, I was ready to go! It wasn't so difficult. Now, let's see how I used this model for coding tasks.</span><br /> @@ -138,27 +133,27 @@ http://www.gnu.org/software/src-highlite --> by Lorenzo Bettini http://www.lorenzobettini.it http://www.gnu.org/software/src-highlite --> -<pre><font color="#ff0000">time echo </font><font color="#bb00ff">"Write a function in golang to print out the Nth fibonacci number, \</font> -<font color="#bb00ff"> only the function without the boilerplate"</font><font color="#ff0000"> </font><font color="#F3E651">|</font><font color="#ff0000"> ollama run qwen2</font><font color="#F3E651">.</font><font color="#bb00ff">5</font><font color="#ff0000">-coder</font><font color="#F3E651">:</font><font color="#ff0000">14b-instruct</font> - -<font color="#ff0000">Output</font><font color="#F3E651">:</font> - -<font color="#ff0000">func fibonacci</font><font color="#F3E651">(</font><font color="#ff0000">n int</font><font color="#F3E651">)</font><font color="#ff0000"> int {</font> -<font color="#ff0000"> </font><b><font color="#ffffff">if</font></b><font color="#ff0000"> n </font><font color="#F3E651"><=</font><font color="#ff0000"> </font><font color="#bb00ff">1</font><font color="#ff0000"> {</font> -<font color="#ff0000"> </font><b><font color="#ffffff">return</font></b><font color="#ff0000"> n</font> -<font color="#ff0000"> }</font> -<font color="#ff0000"> a</font><font color="#F3E651">,</font><font color="#ff0000"> b </font><font color="#F3E651">:=</font><font color="#ff0000"> </font><font color="#bb00ff">0</font><font color="#F3E651">,</font><font color="#ff0000"> </font><font color="#bb00ff">1</font> -<font color="#ff0000"> </font><b><font color="#ffffff">for</font></b><font color="#ff0000"> i </font><font color="#F3E651">:=</font><font color="#ff0000"> </font><font color="#bb00ff">2</font><font color="#F3E651">;</font><font color="#ff0000"> i </font><font color="#F3E651"><=</font><font color="#ff0000"> n</font><font color="#F3E651">;</font><font color="#ff0000"> i</font><font color="#F3E651">++</font><font color="#ff0000"> {</font> -<font color="#ff0000"> a</font><font color="#F3E651">,</font><font color="#ff0000"> b </font><font color="#F3E651">=</font><font color="#ff0000"> b</font><font color="#F3E651">,</font><font color="#ff0000"> a</font><font color="#F3E651">+</font><font color="#ff0000">b</font> -<font color="#ff0000"> }</font> -<font color="#ff0000"> </font><b><font color="#ffffff">return</font></b><font color="#ff0000"> b</font> -<font color="#ff0000">}</font> - -<font color="#ff0000">Execution Metrics</font><font color="#F3E651">:</font> - -<font color="#ff0000">Executed </font><b><font color="#ffffff">in</font></b><font color="#ff0000"> </font><font color="#bb00ff">4.90</font><font color="#ff0000"> secs fish external</font> -<font color="#ff0000"> usr time </font><font color="#bb00ff">15.54</font><font color="#ff0000"> millis </font><font color="#bb00ff">0.31</font><font color="#ff0000"> millis </font><font color="#bb00ff">15.24</font><font color="#ff0000"> millis</font> -<font color="#ff0000"> sys time </font><font color="#bb00ff">19.68</font><font color="#ff0000"> millis </font><font color="#bb00ff">1.02</font><font color="#ff0000"> millis </font><font color="#bb00ff">18.66</font><font color="#ff0000"> millis</font> +<pre>time echo <font color="#808080">"Write a function in golang to print out the Nth fibonacci number, \</font> +<font color="#808080"> only the function without the boilerplate"</font> | ollama run qwen2.<font color="#000000">5</font>-coder:14b-instruct + +Output: + +func fibonacci(n int) int { + <b><u><font color="#000000">if</font></u></b> n <= <font color="#000000">1</font> { + <b><u><font color="#000000">return</font></u></b> n + } + a, b := <font color="#000000">0</font>, <font color="#000000">1</font> + <b><u><font color="#000000">for</font></u></b> i := <font color="#000000">2</font>; i <= n; i++ { + a, b = b, a+b + } + <b><u><font color="#000000">return</font></u></b> b +} + +Execution Metrics: + +Executed <b><u><font color="#000000">in</font></u></b> <font color="#000000">4.90</font> secs fish external + usr time <font color="#000000">15.54</font> millis <font color="#000000">0.31</font> millis <font color="#000000">15.24</font> millis + sys time <font color="#000000">19.68</font> millis <font color="#000000">1.02</font> millis <font color="#000000">18.66</font> millis </pre> <br /> <span class='quote'>Note, after having written this blog post, I tried the same with the newer model <span class='inlinecode'>qwen3-coder:30b-a3b-q4_K_M</span> (which "just" came out, and it's a quantised 30B model), and it was much faster:</span><br /> @@ -183,9 +178,9 @@ Executed in 1.83 secs fish external by Lorenzo Bettini http://www.lorenzobettini.it http://www.gnu.org/software/src-highlite --> -<pre><font color="#ff0000">brew install aider</font> -<font color="#ff0000">mkdir -p </font><font color="#F3E651">~</font><font color="#ff0000">/git/aitest </font><font color="#F3E651">&&</font><font color="#ff0000"> cd </font><font color="#F3E651">~</font><font color="#ff0000">/git/aitest </font><font color="#F3E651">&&</font><font color="#ff0000"> git init</font> -<font color="#ff0000">aider --model ollama_chat/qwen</font><font color="#bb00ff">2.5</font><font color="#ff0000">-coder</font><font color="#F3E651">:</font><font color="#ff0000">14b-instruct</font> +<pre>brew install aider +mkdir -p ~/git/aitest && cd ~/git/aitest && git init +aider --model ollama_chat/qwen<font color="#000000">2.5</font>-coder:14b-instruct </pre> <br /> <a class='textlink' href='https://aider.chat'>https://aider.chat</a><br /> @@ -228,11 +223,11 @@ Create a Go project with these files: by Lorenzo Bettini http://www.lorenzobettini.it http://www.gnu.org/software/src-highlite --> -<pre><font color="#ff0000">go build cmd/aitest/main</font><font color="#F3E651">.</font><font color="#ff0000">go</font> -<font color="#F3E651">.</font><font color="#ff0000">/main -v</font> -<font color="#bb00ff">0.0</font><font color="#F3E651">.</font><font color="#bb00ff">0</font> -<font color="#F3E651">.</font><font color="#ff0000">/main -dir </font><font color="#F3E651">.</font> -<font color="#ff0000">Number of files </font><b><font color="#ffffff">in</font></b><font color="#ff0000"> directory </font><font color="#F3E651">.:</font><font color="#ff0000"> </font><font color="#bb00ff">4</font> +<pre>go build cmd/aitest/main.go +./main -v +<font color="#000000">0.0</font>.<font color="#000000">0</font> +./main -dir . +Number of files <b><u><font color="#000000">in</font></u></b> directory .: <font color="#000000">4</font> </pre> <br /> <h3 style='display: inline' id='the-code'>The code</h3><br /> @@ -243,38 +238,38 @@ http://www.gnu.org/software/src-highlite --> by Lorenzo Bettini http://www.lorenzobettini.it http://www.gnu.org/software/src-highlite --> -<pre><b><font color="#ffffff">package</font></b><font color="#ff0000"> main</font> - -<b><font color="#ffffff">import</font></b><font color="#ff0000"> </font><font color="#F3E651">(</font> -<font color="#ff0000"> </font><font color="#bb00ff">"flag"</font> -<font color="#ff0000"> </font><font color="#bb00ff">"fmt"</font> -<font color="#ff0000"> </font><font color="#bb00ff">"os"</font> - -<font color="#ff0000"> </font><font color="#bb00ff">"aitest/internal"</font> -<font color="#F3E651">)</font> - -<b><font color="#ffffff">func</font></b><font color="#ff0000"> </font><font color="#7bc710">main</font><font color="#F3E651">()</font><font color="#ff0000"> </font><font color="#F3E651">{</font> -<font color="#ff0000"> </font><b><font color="#ffffff">var</font></b><font color="#ff0000"> versionFlag </font><b><font color="#F35E1E">bool</font></b> -<font color="#ff0000"> flag</font><font color="#F3E651">.</font><font color="#7bc710">BoolVar</font><font color="#F3E651">(&</font><font color="#ff0000">versionFlag</font><font color="#F3E651">,</font><font color="#ff0000"> </font><font color="#bb00ff">"v"</font><font color="#F3E651">,</font><font color="#ff0000"> false</font><font color="#F3E651">,</font><font color="#ff0000"> </font><font color="#bb00ff">"print version"</font><font color="#F3E651">)</font> -<font color="#ff0000"> dir </font><font color="#F3E651">:=</font><font color="#ff0000"> flag</font><font color="#F3E651">.</font><font color="#7bc710">String</font><font color="#F3E651">(</font><font color="#bb00ff">"dir"</font><font color="#F3E651">,</font><font color="#ff0000"> </font><font color="#bb00ff">""</font><font color="#F3E651">,</font><font color="#ff0000"> </font><font color="#bb00ff">"directory to count files in"</font><font color="#F3E651">)</font> -<font color="#ff0000"> flag</font><font color="#F3E651">.</font><font color="#7bc710">Parse</font><font color="#F3E651">()</font> - -<font color="#ff0000"> </font><b><font color="#ffffff">if</font></b><font color="#ff0000"> versionFlag </font><font color="#F3E651">{</font> -<font color="#ff0000"> fmt</font><font color="#F3E651">.</font><font color="#7bc710">Println</font><font color="#F3E651">(</font><font color="#ff0000">internal</font><font color="#F3E651">.</font><font color="#7bc710">GetVersion</font><font color="#F3E651">())</font> -<font color="#ff0000"> </font><b><font color="#ffffff">return</font></b> -<font color="#ff0000"> </font><font color="#F3E651">}</font> - -<font color="#ff0000"> </font><b><font color="#ffffff">if</font></b><font color="#ff0000"> </font><font color="#F3E651">*</font><font color="#ff0000">dir </font><font color="#F3E651">!=</font><font color="#ff0000"> </font><font color="#bb00ff">""</font><font color="#ff0000"> </font><font color="#F3E651">{</font> -<font color="#ff0000"> fileCount</font><font color="#F3E651">,</font><font color="#ff0000"> err </font><font color="#F3E651">:=</font><font color="#ff0000"> internal</font><font color="#F3E651">.</font><font color="#7bc710">CountFiles</font><font color="#F3E651">(*</font><font color="#ff0000">dir</font><font color="#F3E651">)</font> -<font color="#ff0000"> </font><b><font color="#ffffff">if</font></b><font color="#ff0000"> err </font><font color="#F3E651">!=</font><font color="#ff0000"> nil </font><font color="#F3E651">{</font> -<font color="#ff0000"> fmt</font><font color="#F3E651">.</font><font color="#7bc710">Fprintf</font><font color="#F3E651">(</font><font color="#ff0000">os</font><font color="#F3E651">.</font><font color="#ff0000">Stderr</font><font color="#F3E651">,</font><font color="#ff0000"> </font><font color="#bb00ff">"Error counting files: %v\n"</font><font color="#F3E651">,</font><font color="#ff0000"> err</font><font color="#F3E651">)</font> -<font color="#ff0000"> os</font><font color="#F3E651">.</font><font color="#7bc710">Exit</font><font color="#F3E651">(</font><font color="#bb00ff">1</font><font color="#F3E651">)</font> -<font color="#ff0000"> </font><font color="#F3E651">}</font> -<font color="#ff0000"> fmt</font><font color="#F3E651">.</font><font color="#7bc710">Printf</font><font color="#F3E651">(</font><font color="#bb00ff">"Number of files in directory %s: %d\n"</font><font color="#F3E651">,</font><font color="#ff0000"> </font><font color="#F3E651">*</font><font color="#ff0000">dir</font><font color="#F3E651">,</font><font color="#ff0000"> fileCount</font><font color="#F3E651">)</font> -<font color="#ff0000"> </font><font color="#F3E651">}</font><font color="#ff0000"> </font><b><font color="#ffffff">else</font></b><font color="#ff0000"> </font><font color="#F3E651">{</font> -<font color="#ff0000"> fmt</font><font color="#F3E651">.</font><font color="#7bc710">Println</font><font color="#F3E651">(</font><font color="#bb00ff">"No directory specified. No count given."</font><font color="#F3E651">)</font> -<font color="#ff0000"> </font><font color="#F3E651">}</font> -<font color="#F3E651">}</font> +<pre><b><u><font color="#000000">package</font></u></b> main + +<b><u><font color="#000000">import</font></u></b> ( + <font color="#808080">"flag"</font> + <font color="#808080">"fmt"</font> + <font color="#808080">"os"</font> + + <font color="#808080">"aitest/internal"</font> +) + +<b><u><font color="#000000">func</font></u></b> main() { + <b><u><font color="#000000">var</font></u></b> versionFlag <b><font color="#000000">bool</font></b> + flag.BoolVar(&versionFlag, <font color="#808080">"v"</font>, false, <font color="#808080">"print version"</font>) + dir := flag.String(<font color="#808080">"dir"</font>, <font color="#808080">""</font>, <font color="#808080">"directory to count files in"</font>) + flag.Parse() + + <b><u><font color="#000000">if</font></u></b> versionFlag { + fmt.Println(internal.GetVersion()) + <b><u><font color="#000000">return</font></u></b> + } + + <b><u><font color="#000000">if</font></u></b> *dir != <font color="#808080">""</font> { + fileCount, err := internal.CountFiles(*dir) + <b><u><font color="#000000">if</font></u></b> err != nil { + fmt.Fprintf(os.Stderr, <font color="#808080">"Error counting files: %v\n"</font>, err) + os.Exit(<font color="#000000">1</font>) + } + fmt.Printf(<font color="#808080">"Number of files in directory %s: %d\n"</font>, *dir, fileCount) + } <b><u><font color="#000000">else</font></u></b> { + fmt.Println(<font color="#808080">"No directory specified. No count given."</font>) + } +} </pre> <br /> <span>The <span class='inlinecode'>./internal/version.go</span> file:</span><br /> @@ -283,13 +278,13 @@ http://www.gnu.org/software/src-highlite --> by Lorenzo Bettini http://www.lorenzobettini.it http://www.gnu.org/software/src-highlite --> -<pre><b><font color="#ffffff">package</font></b><font color="#ff0000"> internal</font> +<pre><b><u><font color="#000000">package</font></u></b> internal -<b><font color="#ffffff">var</font></b><font color="#ff0000"> Version </font><font color="#F3E651">=</font><font color="#ff0000"> </font><font color="#bb00ff">"0.0.0"</font> +<b><u><font color="#000000">var</font></u></b> Version = <font color="#808080">"0.0.0"</font> -<b><font color="#ffffff">func</font></b><font color="#ff0000"> </font><font color="#7bc710">GetVersion</font><font color="#F3E651">()</font><font color="#ff0000"> </font><b><font color="#F35E1E">string</font></b><font color="#ff0000"> </font><font color="#F3E651">{</font> -<font color="#ff0000"> </font><b><font color="#ffffff">return</font></b><font color="#ff0000"> Version</font> -<font color="#F3E651">}</font> +<b><u><font color="#000000">func</font></u></b> GetVersion() <b><font color="#000000">string</font></b> { + <b><u><font color="#000000">return</font></u></b> Version +} </pre> <br /> <span>The <span class='inlinecode'>./internal/count.go</span> file:</span><br /> @@ -298,27 +293,27 @@ http://www.gnu.org/software/src-highlite --> by Lorenzo Bettini http://www.lorenzobettini.it http://www.gnu.org/software/src-highlite --> -<pre><b><font color="#ffffff">package</font></b><font color="#ff0000"> internal</font> - -<b><font color="#ffffff">import</font></b><font color="#ff0000"> </font><font color="#F3E651">(</font> -<font color="#ff0000"> </font><font color="#bb00ff">"os"</font> -<font color="#F3E651">)</font> - -<b><font color="#ffffff">func</font></b><font color="#ff0000"> </font><font color="#7bc710">CountFiles</font><font color="#F3E651">(</font><font color="#ff0000">dir </font><b><font color="#F35E1E">string</font></b><font color="#F3E651">)</font><font color="#ff0000"> </font><font color="#F3E651">(</font><font color="#ff0000">int</font><font color="#F3E651">,</font><font color="#ff0000"> error</font><font color="#F3E651">)</font><font color="#ff0000"> </font><font color="#F3E651">{</font> -<font color="#ff0000"> files</font><font color="#F3E651">,</font><font color="#ff0000"> err </font><font color="#F3E651">:=</font><font color="#ff0000"> os</font><font color="#F3E651">.</font><font color="#7bc710">ReadDir</font><font color="#F3E651">(</font><font color="#ff0000">dir</font><font color="#F3E651">)</font> -<font color="#ff0000"> </font><b><font color="#ffffff">if</font></b><font color="#ff0000"> err </font><font color="#F3E651">!=</font><font color="#ff0000"> nil </font><font color="#F3E651">{</font> -<font color="#ff0000"> </font><b><font color="#ffffff">return</font></b><font color="#ff0000"> </font><font color="#bb00ff">0</font><font color="#F3E651">,</font><font color="#ff0000"> err</font> -<font color="#ff0000"> </font><font color="#F3E651">}</font> - -<font color="#ff0000"> count </font><font color="#F3E651">:=</font><font color="#ff0000"> </font><font color="#bb00ff">0</font> -<font color="#ff0000"> </font><b><font color="#ffffff">for</font></b><font color="#ff0000"> _</font><font color="#F3E651">,</font><font color="#ff0000"> file </font><font color="#F3E651">:=</font><font color="#ff0000"> </font><b><font color="#ffffff">range</font></b><font color="#ff0000"> files </font><font color="#F3E651">{</font> -<font color="#ff0000"> </font><b><font color="#ffffff">if</font></b><font color="#ff0000"> </font><font color="#F3E651">!</font><font color="#ff0000">file</font><font color="#F3E651">.</font><font color="#7bc710">IsDir</font><font color="#F3E651">()</font><font color="#ff0000"> </font><font color="#F3E651">{</font> -<font color="#ff0000"> count</font><font color="#F3E651">++</font> -<font color="#ff0000"> </font><font color="#F3E651">}</font> -<font color="#ff0000"> </font><font color="#F3E651">}</font> - -<font color="#ff0000"> </font><b><font color="#ffffff">return</font></b><font color="#ff0000"> count</font><font color="#F3E651">,</font><font color="#ff0000"> nil</font> -<font color="#F3E651">}</font> +<pre><b><u><font color="#000000">package</font></u></b> internal + +<b><u><font color="#000000">import</font></u></b> ( + <font color="#808080">"os"</font> +) + +<b><u><font color="#000000">func</font></u></b> CountFiles(dir <b><font color="#000000">string</font></b>) (int, error) { + files, err := os.ReadDir(dir) + <b><u><font color="#000000">if</font></u></b> err != nil { + <b><u><font color="#000000">return</font></u></b> <font color="#000000">0</font>, err + } + + count := <font color="#000000">0</font> + <b><u><font color="#000000">for</font></u></b> _, file := <b><u><font color="#000000">range</font></u></b> files { + <b><u><font color="#000000">if</font></u></b> !file.IsDir() { + count++ + } + } + + <b><u><font color="#000000">return</font></u></b> count, nil +} </pre> <br /> <span>The code is quite straightforward, especially for generating boilerplate code this will be useful for many use cases!</span><br /> @@ -338,7 +333,7 @@ http://www.gnu.org/software/src-highlite --> by Lorenzo Bettini http://www.lorenzobettini.it http://www.gnu.org/software/src-highlite --> -<pre><font color="#ff0000">cargo install lsp-ai</font> +<pre>cargo install lsp-ai </pre> <br /> <h3 style='display: inline' id='helix-configuration'>Helix Configuration</h3><br /> @@ -476,11 +471,11 @@ content = "{CODE}" <br /> <a class='textlink' href='../'>Back to the main site</a><br /> <p class="footer"> - Generated with <a href="https://codeberg.org/snonux/gemtexter">Gemtexter 3.0.1-develop</a> | - served by <a href="https://www.OpenBSD.org">OpenBSD</a>/<a href="https://man.openbsd.org/relayd.8">relayd(8)</a>+<a href="https://man.openbsd.org/httpd.8">httpd(8)</a> | - <a href="https://foo.zone/site-mirrors.html">Site Mirrors</a> - <br /> - Webring: <a href="https://shring.sh/foo.zone/previous">previous</a> | <a href="https://shring.sh">shring</a> | <a href="https://shring.sh/foo.zone/next">next</a> + Generated with <a href="https://codeberg.org/snonux/gemtexter">Gemtexter 3.0.1-develop</a> | + served by <a href="https://www.OpenBSD.org">OpenBSD</a>/<a href="https://man.openbsd.org/relayd.8">relayd(8)</a>+<a href="https://man.openbsd.org/httpd.8">httpd(8)</a> | + <a href="https://foo.zone/site-mirrors.html">Site Mirrors</a> + <br /> + Webring: <a href="https://shring.sh/foo.zone/previous">previous</a> | <a href="https://shring.sh">shring</a> | <a href="https://shring.sh/foo.zone/next">next</a> </p> </body> </html> |
