<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>AI on Uday K</title><link>https://uday.dev/tags/ai/</link><description>Recent content in AI on Uday K</description><generator>Hugo</generator><language>en-us</language><lastBuildDate>Sun, 09 Aug 2026 11:15:02 -0400</lastBuildDate><atom:link href="https://uday.dev/tags/ai/index.xml" rel="self" type="application/rss+xml"/><item><title>GitHub Copilot + LSP: Smarter Code Context and Better Token Efficiency</title><link>https://uday.dev/posts/copilot-with-lsp/</link><pubDate>Sun, 09 Aug 2026 11:15:02 -0400</pubDate><guid>https://uday.dev/posts/copilot-with-lsp/</guid><description>&lt;p&gt;This guide walks through configuring Language Server Protocol (LSP) support for &lt;strong&gt;Go, Python, Ruby, TypeScript, and JavaScript&lt;/strong&gt; in GitHub Copilot CLI. It also includes practices for keeping AI coding sessions efficient and token-conscious.&lt;/p&gt;&#10;&lt;h2 id="part-of-a-series"&gt;Part of a Series&lt;/h2&gt;&#10;&lt;p&gt;This post is part of a broader series exploring how modern AI coding&#10;assistants understand and work with code.&lt;/p&gt;&#10;&lt;p&gt;The series starts with the foundations of how source code moves through the&#10;development toolchain—from &lt;strong&gt;ASTs and parsing to compilers and language&#10;servers (LSP)&lt;/strong&gt;—and then builds on those concepts to explain how AI coding&#10;tools can use this information to navigate and reason about a codebase.&lt;/p&gt;</description></item><item><title>fast-deepseek: Building a Lightweight DeepSeek Client for Ruby</title><link>https://uday.dev/posts/fast-deepseek/</link><pubDate>Wed, 26 Mar 2025 18:12:39 -0400</pubDate><guid>https://uday.dev/posts/fast-deepseek/</guid><description>&lt;p&gt;AI APIs have become remarkably easy to call.&lt;/p&gt;&#10;&lt;p&gt;The hard part isn&amp;rsquo;t sending an HTTP request. It&amp;rsquo;s deciding how much abstraction you actually need.&lt;/p&gt;&#10;&lt;p&gt;When I started experimenting with DeepSeek from Ruby, I didn&amp;rsquo;t want an AI framework, an agent abstraction, or a large dependency tree. I wanted this:&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-ruby" data-lang="ruby"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;client &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;FastDeepseek&lt;/span&gt;&lt;span style="color:#f92672"&gt;::&lt;/span&gt;&lt;span style="color:#66d9ef"&gt;Client&lt;/span&gt;&lt;span style="color:#f92672"&gt;.&lt;/span&gt;new(&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#e6db74"&gt;api_key&lt;/span&gt;: &lt;span style="color:#66d9ef"&gt;ENV&lt;/span&gt;&lt;span style="color:#f92672"&gt;.&lt;/span&gt;fetch(&lt;span style="color:#e6db74"&gt;&amp;#34;DEEPSEEK_API_KEY&amp;#34;&lt;/span&gt;)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;response &lt;span style="color:#f92672"&gt;=&lt;/span&gt; client&lt;span style="color:#f92672"&gt;.&lt;/span&gt;chat(&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#e6db74"&gt;&amp;#34;Explain Ruby blocks in simple terms&amp;#34;&lt;/span&gt;,&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#e6db74"&gt;model&lt;/span&gt;: &lt;span style="color:#e6db74"&gt;&amp;#34;deepseek-chat&amp;#34;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;)&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;That idea became &lt;a href="https://rubygems.org/gems/fast-deepseek"&gt;fast-deepseek on RubyGems&lt;/a&gt; and &lt;a href="https://github.com/your-handle/fast-deepseek"&gt;fast-deepseek on GitHub&lt;/a&gt; — a lightweight Ruby client for the DeepSeek API.&lt;/p&gt;</description></item><item><title>Running DeepSeek-R1 Locally with Ollama</title><link>https://uday.dev/posts/deepseek-r1-locally/</link><pubDate>Mon, 10 Feb 2025 11:15:02 -0400</pubDate><guid>https://uday.dev/posts/deepseek-r1-locally/</guid><description>&lt;h2 id="introduction"&gt;Introduction&lt;/h2&gt;&#10;&lt;p&gt;DeepSeek-R1 is an advanced AI model that can be run locally for various natural language processing tasks. DeepSeek has suspended its usage top-up feature recently, and I had to find a way to use it locally in order to work on a side project. I have documented the steps, which resulted in this blog post.&lt;/p&gt;&#10;&lt;p&gt;&lt;img src="https://uday.dev/deepseek-topup-error.png#center" alt="image"&gt;&lt;/p&gt;&#10;&lt;p&gt;In this post, we&amp;rsquo;ll walk through the process of setting up and running DeepSeek-R1 using Ollama, a tool designed for easily managing AI models locally. We will also test the setup using a &lt;code&gt;curl&lt;/code&gt; command to verify its functionality.&lt;/p&gt;</description></item></channel></rss>