<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet href="pretty-atom-feed.xsl" type="text/xsl"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
  <title>DeepakNess - Notes</title>
  <subtitle>Short notes, links, and thoughts – shared as I go through my day.</subtitle>
  <link href="https://deepakness.com/feed/raw.xml" rel="self" />
  <link href="https://deepakness.com/raw/" />
  <updated>2026-10-10T15:36:58Z</updated>
  <id>https://deepakness.com/raw/</id>
  <icon>https://deepakness.com/img/deepakness.png</icon>
  <logo>https://deepakness.com/img/deepakness.png</logo>
  <author>
    <name>DeepakNess</name>
  </author><entry>
    <title>CogSend now deploys in one click</title>
    <link href="https://deepakness.com/raw/cogsend-one-click-deploy/" />
    <updated>2026-10-10T15:36:58Z</updated>
    <id>https://deepakness.com/raw/cogsend-one-click-deploy/</id>
    <summary>CogSend now has a Deploy to Cloudflare button, so it deploys without a terminal and keeps itself updated after that.</summary>
    <content type="html">&lt;p&gt;&lt;a href=&quot;https://github.com/cogsend/cogsend&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;CogSend&lt;/a&gt; now has a &lt;a href=&quot;https://cogsend.com/docs/deploy/&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;Deploy to Cloudflare button&lt;/a&gt;, so you can deploy it to your own Cloudflare account without a terminal. Here&#39;s the step-by-step process to deploy and update.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Go to &lt;a href=&quot;https://cogsend.com&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;cogsend.com&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Click the &lt;strong&gt;Deploy to Cloudflare&lt;/strong&gt; button and sign in to Cloudflare.&lt;/li&gt;
&lt;li&gt;Select your GitHub account, and tick &amp;quot;Create private Git repository&amp;quot;.&lt;/li&gt;
&lt;li&gt;Get an &lt;code&gt;APP_ENCRYPTION_KEY&lt;/code&gt; from &lt;a href=&quot;https://cogsend.com/key/&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;cogsend.com/key&lt;/a&gt; or by running &lt;code&gt;openssl rand -hex 32&lt;/code&gt; command in your terminal, fill it in, and save a copy.&lt;/li&gt;
&lt;li&gt;Click &amp;quot;Create and deploy&amp;quot;, and wait for the build to complete. It usually takes less than a minute.&lt;/li&gt;
&lt;li&gt;Open the workers.dev URL it assigns, enter the same key with an email and password to create your account, then scan the QR with an authenticator app for TOTP setup.&lt;/li&gt;
&lt;li&gt;And done! Connect your accounts, and start scheduling.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;I also asked Claude to create a video showing the same, and I think it did a great job.&lt;/p&gt;
&lt;video controls=&quot;&quot; preload=&quot;none&quot; playsinline=&quot;&quot; data-plyr=&quot;&quot; poster=&quot;https://assets.deepakness.com/raw/cogsend-one-click-deploy/cogsend-new-intro-poster.webp&quot;&gt;
  &lt;source src=&quot;https://assets.deepakness.com/raw/cogsend-one-click-deploy/cogsend-new-intro.mp4&quot; type=&quot;video/mp4&quot;&gt;
&lt;/video&gt;
&lt;p&gt;Updates go through the GitHub repository the button created, with no Cloudflare token.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;The first time, go to Settings → Instance → &amp;quot;Add the Update action to the repository&amp;quot; and commit the file GitHub opens.&lt;/li&gt;
&lt;li&gt;When a new release is out, click &amp;quot;Update on GitHub&amp;quot; → Run workflow, and it deploys in a couple of minutes.&lt;/li&gt;
&lt;li&gt;Or add the repo variable &lt;code&gt;AUTO_UPDATE=true&lt;/code&gt;, and patch releases install themselves daily.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;And every release is signed, and the update action refuses any file the signature doesn&#39;t cover. More details are in &lt;a href=&quot;https://cogsend.com/docs/updates/&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;the updating docs&lt;/a&gt;.&lt;/p&gt;
</content>
  </entry><entry>
    <title>Animating webpages with Claude is fun</title>
    <link href="https://deepakness.com/raw/animations-with-claude/" />
    <updated>2026-10-04T10:33:43Z</updated>
    <id>https://deepakness.com/raw/animations-with-claude/</id>
    <summary>I tried animating some stuff on webpages and it&#39;s so fun and easy to do stuff like these with the new Opus 5.5 model.</summary>
    <content type="html">&lt;p&gt;For a project, I decided to add a cute animation on the &lt;code&gt;/admin&lt;/code&gt; login page where a mascot looks away and closes its eyes when typing the username or password, and with just one prompt Claude did a great job. I asked it to create multiple different versions that I can choose from, and here&#39;s a video showing the same.&lt;/p&gt;
&lt;video controls=&quot;&quot; preload=&quot;none&quot; playsinline=&quot;&quot; data-plyr=&quot;&quot; poster=&quot;https://assets.deepakness.com/raw/animations-with-claude/login-screen-animations-poster.webp&quot;&gt;
  &lt;source src=&quot;https://assets.deepakness.com/raw/animations-with-claude/login-screen-animations.mp4&quot; type=&quot;video/mp4&quot;&gt;
&lt;/video&gt;
&lt;p&gt;It was a very simple prompt, and I&#39;m sure that Claude could have done much better with a more defined prompt.&lt;/p&gt;
&lt;p&gt;It&#39;s crazy.&lt;/p&gt;
</content>
  </entry><entry>
    <title>I wish I set up a local LLM before a long journey</title>
    <link href="https://deepakness.com/raw/local-llm-before-travel/" />
    <updated>2026-10-01T10:39:49Z</updated>
    <id>https://deepakness.com/raw/local-llm-before-travel/</id>
    <summary>I forgot to download and set up a local LLM before a long train journey and now I regret it.</summary>
    <content type="html">&lt;p&gt;I&#39;m on a long ~20-hour train journey right now (you know I &lt;a href=&quot;https://deepakness.com/about/&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;love train journeys&lt;/a&gt;), and now thinking that I should have downloaded and set up any small LLM which runs smoothly on my 16GB MacBook M2 Air. Like I wouldn&#39;t do hardcore coding with it, but I still could do a lot of things with it, as even a 1B parameter would be much smarter than me in many fields today.&lt;/p&gt;
&lt;p&gt;I tried downloading Gemma 7B and a few others, but the network is not stable and it&#39;s failing each time. My best chance is downloading when the train stops for 15-20 mins on a major station for re-stocking supplies.&lt;/p&gt;
&lt;p&gt;Fingers crossed. 🤞&lt;/p&gt;
</content>
  </entry><entry>
    <title>CogSend has its first sponsor</title>
    <link href="https://deepakness.com/raw/cogsend-first-sponsor/" />
    <updated>2026-09-27T04:04:45Z</updated>
    <id>https://deepakness.com/raw/cogsend-first-sponsor/</id>
    <summary>Zernio just started sponsoring CogSend by providing another way to connect your socials without setting up developer apps of your own.</summary>
    <content type="html">&lt;p&gt;&lt;a href=&quot;https://github.com/deepakness/cogsend&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;CogSend&lt;/a&gt; also as a sponsor now!&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://zernio.com/&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;Zernio&lt;/a&gt; has just started sponsoring &lt;a href=&quot;https://cogsend.com&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;CogSend&lt;/a&gt; and that brings a convenient way to connect socials to CogSend without creating developer apps of your own. It&#39;s optional, and connecting directly with your own apps still works.&lt;/p&gt;
&lt;p&gt;&lt;img alt=&quot;Zernio meets CogSend&quot; decoding=&quot;async&quot; loading=&quot;eager&quot; fetchpriority=&quot;high&quot; src=&quot;https://assets.deepakness.com/raw/cogsend-first-sponsor/zernio-optional-connection.png&quot;&gt;&lt;/p&gt;
&lt;p&gt;By the way, it&#39;s a monthly pledge, and it will help me keep working on CogSend to make it better. And you can learn more about this &lt;a href=&quot;https://cogsend.com/docs/zernio/&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;from our docs&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Excited for this.&lt;/p&gt;
</content>
  </entry><entry>
    <title>Nearing 2 Billion tokens usage in a day</title>
    <link href="https://deepakness.com/raw/2b-tokens-today/" />
    <updated>2026-09-25T02:09:18Z</updated>
    <id>https://deepakness.com/raw/2b-tokens-today/</id>
    <summary>I have been DeepSeekMaxxing a lot and, I think, will soon be touching 2B tokens per day usage mark.</summary>
    <content type="html">&lt;p&gt;I think &lt;a href=&quot;https://deepakness.com/raw/deepseek-v4-1-flash-price/&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;DeepSeek V4.1 Flash&lt;/a&gt; is the best model that&#39;s ever released, especially when price is considered. I have been using hundreds of millions of DeepSeek tokens every single day, and was about to touch the 2B mark yesterday.&lt;/p&gt;
&lt;p&gt;&lt;img alt=&quot;OpenCode usage dashboard&quot; decoding=&quot;async&quot; loading=&quot;eager&quot; fetchpriority=&quot;high&quot; src=&quot;https://assets.deepakness.com/raw/2b-tokens-today/opencode-usage.png&quot;&gt;&lt;/p&gt;
&lt;p&gt;I&#39;m mostly using via OpenCode Go API inside &lt;a href=&quot;https://deepakness.com/blog/pi-agent-setup/&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;the Pi agent&lt;/a&gt; these days and their new dashboard is pretty awesome to show the total usage even when you use via their API. And as you see in the screenshot by yourself. I am working on &lt;a href=&quot;https://deepakness.com/blog/cogsend-intro/&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;CogSend&lt;/a&gt;, &lt;a href=&quot;https://deepakness.com/sharepdf/&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;SharePDF&lt;/a&gt;, and a few other projects and was running 5-6 agents continuously that amounted to this many tokens.&lt;/p&gt;
&lt;p&gt;In fact, I am surprised myself about my token usage. In the last few months, so much has changed in how and how much I use AI for coding, and I&#39;m only optimistic about the future.&lt;/p&gt;
</content>
  </entry><entry>
    <title>Raspberry Pi 4B with and without the fan</title>
    <link href="https://deepakness.com/raw/pi-fan-vs-no-fan/" />
    <updated>2026-09-15T03:08:11Z</updated>
    <id>https://deepakness.com/raw/pi-fan-vs-no-fan/</id>
    <summary>How the temperature on the Raspberry Pi 4B changes when the fan is on vs when the fan is turned off.</summary>
    <content type="html">&lt;p&gt;I tried to keep my Raspberry Pi 4B device without the fan, and it reaches up to 50°C when it&#39;s hosting this &lt;a href=&quot;https://pi.deepakness.com&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;experiment site pi.deepakness.com&lt;/a&gt;, as you see in the below screenshot.&lt;/p&gt;
&lt;p&gt;&lt;img alt=&quot;Temperature on the Raspberry Pi 4B without the fan&quot; decoding=&quot;async&quot; loading=&quot;eager&quot; fetchpriority=&quot;high&quot; src=&quot;https://assets.deepakness.com/raw/pi-fan-vs-no-fan/pi-no-fan-temp.png&quot;&gt;&lt;/p&gt;
&lt;p&gt;But when I keep it in my room under the ceiling fan, the temperature is consistently below 40°C. By the way, earlier &lt;a href=&quot;https://x.com/DeepakNesss/status/2099017478487859690&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;when it crashed&lt;/a&gt;, the temperature had reached over 75°C.&lt;/p&gt;
&lt;p&gt;For now, I am keeping it without the fan but if temperature goes above 60 or so, I will place it under the fan.&lt;/p&gt;
&lt;p&gt;Let&#39;s see.&lt;/p&gt;
</content>
  </entry><entry>
    <title>Hetzner&#39;s dedicated server is cheaper than VPS</title>
    <link href="https://deepakness.com/raw/hetzner-vps-vs-dedicated-server/" />
    <updated>2026-09-12T05:27:50Z</updated>
    <id>https://deepakness.com/raw/hetzner-vps-vs-dedicated-server/</id>
    <summary>Hetzner&#39;s AX41 bare metal gives 64 GB RAM and 1 TB NVMe for €59/mo, while the comparable CPX42 VPS costs €69.49/mo.</summary>
    <content type="html">&lt;p&gt;I just noticed that &lt;a href=&quot;https://www.hetzner.com/dedicated-rootserver/&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;Hetzner&#39;s dedicated servers&lt;/a&gt;, also known as bare metal, are cheaper than &lt;a href=&quot;https://go.deepakness.com/hetzner&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;their VPS plans&lt;/a&gt;. Here&#39;s a quick comparison from both pricing pages, with prices excluding VAT.&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Server Type&lt;/th&gt;
&lt;th&gt;Pricing&lt;/th&gt;
&lt;th&gt;CPU&lt;/th&gt;
&lt;th&gt;RAM&lt;/th&gt;
&lt;th&gt;Storage&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;VPS (CPX42)&lt;/td&gt;
&lt;td&gt;€69.49/mo&lt;/td&gt;
&lt;td&gt;8 vCPU&lt;/td&gt;
&lt;td&gt;16 GB&lt;/td&gt;
&lt;td&gt;320 GB SSD&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Dedicated Machine (AX41)&lt;/td&gt;
&lt;td&gt;€59.00/mo&lt;/td&gt;
&lt;td&gt;6 cores/12 threads&lt;/td&gt;
&lt;td&gt;64 GB&lt;/td&gt;
&lt;td&gt;2 × 512 GB NVMe&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;So the AX41 gives 4x the RAM and 3x the storage for €10.49 less every month, and it has no setup fee. The CPX42 also ends up at €69.99 in the console once the IPv4 address is added.&lt;/p&gt;
&lt;p&gt;Hetzner dedicated server pricing:&lt;/p&gt;
&lt;p&gt;&lt;img alt=&quot;Hetzner dedicated server pricing&quot; decoding=&quot;async&quot; loading=&quot;eager&quot; fetchpriority=&quot;high&quot; src=&quot;https://assets.deepakness.com/raw/hetzner-vps-vs-dedicated-server/dedicated-server-pricing.png&quot;&gt;&lt;/p&gt;
&lt;p&gt;Hetzner VPS pricing:&lt;/p&gt;
&lt;p&gt;&lt;img alt=&quot;Hetzner VPS pricing&quot; decoding=&quot;async&quot; loading=&quot;lazy&quot; src=&quot;https://assets.deepakness.com/raw/hetzner-vps-vs-dedicated-server/vps-pricing.png&quot;&gt;&lt;/p&gt;
&lt;p&gt;The usual worry with bare metal is the extra setup work, and it&#39;s the same short checklist either way. &lt;a href=&quot;https://deepakness.com/raw/hetzner-vps-tailscale/&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;Put the admin panels behind Tailscale&lt;/a&gt;, keep the websites public through Cloudflare, and &lt;a href=&quot;https://deepakness.com/blog/hetzner-storage-box-backup-via-rsync/&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;run off-site backups with rsync&lt;/a&gt; or maybe BackBlaze, and you&#39;re done.&lt;/p&gt;
&lt;p&gt;And if you&#39;re okay with going one step further &lt;a href=&quot;https://x.com/theo/status/2093840679860568280&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;you can even get a physical device&lt;/a&gt; and host everything there. But it&#39;s a bit extreme as stable internet and even electricity availability might be challenging for different locations.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;I am not immediately migrating to it, but it should be pretty fun setting up. And a lot of learning experiences.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Will explore this soon.&lt;/p&gt;
</content>
  </entry><entry>
    <title>Fixing Threads API publishing errors</title>
    <link href="https://deepakness.com/raw/threads-api-publishing-fix/" />
    <updated>2026-09-10T18:29:18Z</updated>
    <id>https://deepakness.com/raw/threads-api-publishing-fix/</id>
    <summary>Publishing to the Threads API kept failing for two reasons that had nothing to do with permissions, an unusable user id from OAuth and Meta failing to download the image.</summary>
    <content type="html">&lt;p&gt;I have been adding Threads support to my own posting setup, and the &lt;a href=&quot;https://developers.facebook.com/docs/threads&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;Threads API&lt;/a&gt; kept failing with an error that looked like a permissions problem.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;The first one was &lt;code&gt;code 100, error_subcode 33&lt;/code&gt;, &amp;quot;Object with ID ... does not exist&amp;quot;, on every single post.&lt;/strong&gt; The ID in that message is the &lt;code&gt;user_id&lt;/code&gt; that comes back from the OAuth token exchange, and the Graph API doesn&#39;t accept it as a publishing target. I wasted time re-authorizing the account and toggling permissions because the message says &amp;quot;missing permissions&amp;quot;, but that wording is boilerplate that shows up on code 100 whatever the token actually grants. What worked was asking Meta who the token belongs to and publishing as that.&lt;/p&gt;
&lt;pre class=&quot;language-bash&quot; tabindex=&quot;0&quot;&gt;&lt;code class=&quot;language-bash&quot;&gt;&lt;span class=&quot;token function&quot;&gt;curl&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;https://graph.threads.net/v1.0/me?fields=id,username&amp;amp;access_token=&lt;span class=&quot;token variable&quot;&gt;$TOKEN&lt;/span&gt;&quot;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;The id from &lt;code&gt;/me&lt;/code&gt; published fine on the first try, and since then I refresh the stored id on every publish so an old row repairs itself.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Then a threaded post with an image failed with &lt;code&gt;code 1, error_subcode 2207052&lt;/code&gt;, &amp;quot;Media download has failed&amp;quot;.&lt;/strong&gt; Meta downloads the &lt;code&gt;image_url&lt;/code&gt; on their side when the container is created, and here their crawler couldn&#39;t fetch it. I pulled both files out of storage to compare and they were byte-identical, same MD5, one failed and the other published seconds later, so it&#39;s a flake and not something wrong with the image. I made the container creation retry with a freshly signed URL, and left that failure retryable so a scheduled post tries again instead of parking as failed.&lt;/p&gt;
&lt;p&gt;The truncated error text never told me any of this. The full response body did, and the &lt;code&gt;error_subcode&lt;/code&gt; is what showed me which of the two I was looking at.&lt;/p&gt;
</content>
  </entry><entry>
    <title>MacBook looking at itself in a mirror to self-improve</title>
    <link href="https://deepakness.com/raw/computer-using-mirror/" />
    <updated>2026-09-12T00:00:00Z</updated>
    <published>2026-09-10T13:07:08Z</published>
    <id>https://deepakness.com/raw/computer-using-mirror/</id>
    <summary>Came across this post on X that a MacBook is looking at itself using its webcam via a mirror and improving itself.</summary>
    <content type="html">&lt;p&gt;Came across this rather interesting and funny picture &lt;a href=&quot;https://x.com/jpschroeder/status/2097758256420565442&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;in a post on X&lt;/a&gt; where an AI agent on a MacBook is using its webcam to look at its screen in a mirror to improve itself. As explained in the X post, it&#39;s working on improving the AMD Radeon chip support in Omarchy Linux.&lt;/p&gt;
&lt;p&gt;&lt;img alt=&quot;MacBook looking at itself in a mirror to self-improve&quot; decoding=&quot;async&quot; loading=&quot;eager&quot; fetchpriority=&quot;high&quot; src=&quot;https://assets.deepakness.com/raw/computer-using-mirror/macbook-mirror.png&quot;&gt;&lt;/p&gt;
&lt;p&gt;Someone asks Grok in a reply below why this approach is better than taking screenshots and then looking at them to improve itself, and Grok replies:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Screenshots grab the compositor or DRM framebuffer. The path to the actual panel runs through the GPU display engine, timings, gamma LUTs and scanout hardware. AMD driver bugs frequently break only that stage (black screens, color shifts, tearing, freezes) while software readback still succeeds. The webcam+mirror sees the real photons.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;I had no idea about this.&lt;/p&gt;
&lt;p&gt;Very interesting, actually.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Update:&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;img alt=&quot;AI fixing Omarchy external display support&quot; decoding=&quot;async&quot; loading=&quot;lazy&quot; src=&quot;https://assets.deepakness.com/raw/computer-using-mirror/omarchy-fixing-display-support.png&quot;&gt;&lt;/p&gt;
&lt;p&gt;Just saw this update from Justin on this that the MacBook with Omarchy on it fixed its external monitor support for AMD Radeon chips by looking at the screen via the webcam.&lt;/p&gt;
&lt;p&gt;Fascinating!&lt;/p&gt;
</content>
  </entry><entry>
    <title>DeepSeek v4.1 Flash is here with a new price</title>
    <link href="https://deepakness.com/raw/deepseek-v4-1-flash-price/" />
    <updated>2026-09-09T23:50:01Z</updated>
    <id>https://deepakness.com/raw/deepseek-v4-1-flash-price/</id>
    <summary>DeepSeek has released the new v4.1 Flash with a new promise and a new price, and it&#39;s already here.</summary>
    <content type="html">&lt;p&gt;The new DeepSeek v4.1 Flash model is here and the two most important things about the model is that it has &lt;strong&gt;native vision capabilities&lt;/strong&gt;, and it&#39;s significantly cheaper after the price hike last month. I have updated the pricing on the &lt;a href=&quot;https://deepakness.com/deepseek/&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;DeepSeek peak/off-peak clock page&lt;/a&gt; already.&lt;/p&gt;
&lt;p&gt;&lt;img alt=&quot;DeepSeek v4.1 Flash announcement&quot; decoding=&quot;async&quot; loading=&quot;eager&quot; fetchpriority=&quot;high&quot; src=&quot;https://assets.deepakness.com/raw/deepseek-v4-1-flash-price/deepseek-v4-1-announcement.png&quot;&gt;&lt;/p&gt;
&lt;p&gt;Another interesting thing is, as you see above, the new v4.1 Flash has surpassed the existing v4 Pro on all metrics so from now on all requests to the Pro model will be routed to the new Flash model.&lt;/p&gt;
&lt;p&gt;Interesting!&lt;/p&gt;
&lt;p&gt;About the new price, here&#39;s the price table and comparison with the old pricing (all prices in per million tokens):&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Metric&lt;/th&gt;
&lt;th&gt;Off-peak, old&lt;/th&gt;
&lt;th&gt;Off-peak, new&lt;/th&gt;
&lt;th&gt;Peak, old&lt;/th&gt;
&lt;th&gt;Peak, new&lt;/th&gt;
&lt;th&gt;Reduction&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Input, cache hit&lt;/td&gt;
&lt;td&gt;$0.007&lt;/td&gt;
&lt;td&gt;$0.003&lt;/td&gt;
&lt;td&gt;$0.014&lt;/td&gt;
&lt;td&gt;$0.006&lt;/td&gt;
&lt;td&gt;57.1%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Input, cache miss&lt;/td&gt;
&lt;td&gt;$0.22&lt;/td&gt;
&lt;td&gt;$0.15&lt;/td&gt;
&lt;td&gt;$0.44&lt;/td&gt;
&lt;td&gt;$0.30&lt;/td&gt;
&lt;td&gt;31.8%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Output&lt;/td&gt;
&lt;td&gt;$0.66&lt;/td&gt;
&lt;td&gt;$0.60&lt;/td&gt;
&lt;td&gt;$1.32&lt;/td&gt;
&lt;td&gt;$1.20&lt;/td&gt;
&lt;td&gt;9.1%&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;I used the model a lot yesterday, and it&#39;s visible that it&#39;s significantly better than other models, and it just has a better taste. I tested it for writing, and it already writes better than other DeepSeek models and even more natural than Claude or GPT models.&lt;/p&gt;
&lt;p&gt;Good job, DeepSeek! And thank you.&lt;/p&gt;
</content>
  </entry><entry>
    <title>Ubuntu 26.04 on Mid-2014 MacBook Pro – it finally works</title>
    <link href="https://deepakness.com/raw/ubuntu-macbook-setup/" />
    <updated>2026-09-09T06:50:01Z</updated>
    <id>https://deepakness.com/raw/ubuntu-macbook-setup/</id>
    <summary>Wi-Fi, camera, mic, speakers, and fans all work on Ubuntu 26.04 on my Mid-2014 MacBook Pro now, and here&#39;s the setup.</summary>
    <content type="html">&lt;p&gt;After &lt;a href=&quot;https://deepakness.com/raw/fixing-wifi-fedora-macbook/&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;Fedora 44&lt;/a&gt; and &lt;a href=&quot;https://deepakness.com/raw/fixing-wifi-linux-mint/&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;Linux Mint&lt;/a&gt;, I wiped &lt;a href=&quot;https://deepakness.com/blog/mbp-mid-2014/&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;the old MacBook Pro&lt;/a&gt; and installed Ubuntu 26.04.1 LTS on it. Wi-Fi, camera, mic, speakers, and fans all work now. Here&#39;s everything I had to fix, in case I need to redo it.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Wi-Fi&lt;/strong&gt; didn&#39;t work out of the box. The BCM4360 chip needs the proprietary &lt;code&gt;wl&lt;/code&gt; driver because &lt;code&gt;b43&lt;/code&gt; grabs the card first.&lt;/p&gt;
&lt;pre class=&quot;language-bash&quot; tabindex=&quot;0&quot;&gt;&lt;code class=&quot;language-bash&quot;&gt;&lt;span class=&quot;token comment&quot;&gt;# Preferred&lt;/span&gt;
&lt;span class=&quot;token function&quot;&gt;sudo&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;apt&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;install&lt;/span&gt; broadcom-sta-dkms
&lt;span class=&quot;token function&quot;&gt;sudo&lt;/span&gt; dkms autoinstall

&lt;span class=&quot;token comment&quot;&gt;# Or from the .deb (dpkg skips dependencies, fix them after)&lt;/span&gt;
&lt;span class=&quot;token function&quot;&gt;wget&lt;/span&gt; http://mirrors.kernel.org/ubuntu/pool/restricted/b/broadcom-sta/broadcom-sta-dkms_6.30.223.271-29ubuntu1_amd64.deb
&lt;span class=&quot;token function&quot;&gt;sudo&lt;/span&gt; dpkg &lt;span class=&quot;token parameter variable&quot;&gt;-i&lt;/span&gt; broadcom-sta-dkms_6.30.223.271-29ubuntu1_amd64.deb
&lt;span class=&quot;token function&quot;&gt;sudo&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;apt&lt;/span&gt; --fix-broken &lt;span class=&quot;token function&quot;&gt;install&lt;/span&gt;

&lt;span class=&quot;token comment&quot;&gt;# Either way&lt;/span&gt;
&lt;span class=&quot;token function&quot;&gt;sudo&lt;/span&gt; update-initramfs &lt;span class=&quot;token parameter variable&quot;&gt;-u&lt;/span&gt;
&lt;span class=&quot;token function&quot;&gt;sudo&lt;/span&gt; modprobe wl
&lt;span class=&quot;token function&quot;&gt;ip&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;link&lt;/span&gt; show &lt;span class=&quot;token operator&quot;&gt;|&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;grep&lt;/span&gt; wl&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;I used the &lt;code&gt;.deb&lt;/code&gt; from &lt;a href=&quot;https://forums.linuxmint.com/viewtopic.php?p=2807520#p2807520&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;a Linux Mint forum thread&lt;/a&gt;, and it broke until &lt;code&gt;--fix-broken install&lt;/code&gt; fixed it. The &lt;code&gt;update-initramfs -u&lt;/code&gt; step is required for the &lt;code&gt;b43&lt;/code&gt; blacklists to apply at boot.&lt;/p&gt;
&lt;p&gt;The &lt;strong&gt;FaceTime HD camera&lt;/strong&gt; needs three pieces, the DKMS module, the firmware, and the sensor files.&lt;/p&gt;
&lt;pre class=&quot;language-bash&quot; tabindex=&quot;0&quot;&gt;&lt;code class=&quot;language-bash&quot;&gt;&lt;span class=&quot;token function&quot;&gt;sudo&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;apt&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;install&lt;/span&gt; dkms build-essential linux-headers-&lt;span class=&quot;token variable&quot;&gt;&lt;span class=&quot;token variable&quot;&gt;$(&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;uname&lt;/span&gt; &lt;span class=&quot;token parameter variable&quot;&gt;-r&lt;/span&gt;&lt;span class=&quot;token variable&quot;&gt;)&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;git&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;curl&lt;/span&gt;
&lt;span class=&quot;token function&quot;&gt;git&lt;/span&gt; clone https://github.com/patjak/bcwc_pcie.git
&lt;span class=&quot;token builtin class-name&quot;&gt;cd&lt;/span&gt; bcwc_pcie
&lt;span class=&quot;token function&quot;&gt;sudo&lt;/span&gt; dkms &lt;span class=&quot;token function&quot;&gt;add&lt;/span&gt; &lt;span class=&quot;token builtin class-name&quot;&gt;.&lt;/span&gt;
&lt;span class=&quot;token function&quot;&gt;sudo&lt;/span&gt; dkms build facetimehd/0.7.0.1
&lt;span class=&quot;token function&quot;&gt;sudo&lt;/span&gt; dkms &lt;span class=&quot;token function&quot;&gt;install&lt;/span&gt; facetimehd/0.7.0.1
&lt;span class=&quot;token function&quot;&gt;sudo&lt;/span&gt; depmod
&lt;span class=&quot;token function&quot;&gt;sudo&lt;/span&gt; modprobe facetimehd
&lt;span class=&quot;token builtin class-name&quot;&gt;echo&lt;/span&gt; facetimehd &lt;span class=&quot;token operator&quot;&gt;|&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;sudo&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;tee&lt;/span&gt; &lt;span class=&quot;token parameter variable&quot;&gt;-a&lt;/span&gt; /etc/modules &lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt; /dev/null
&lt;span class=&quot;token function&quot;&gt;ls&lt;/span&gt; /dev/video0&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Check &lt;code&gt;cat dkms.conf | grep PACKAGE_VERSION&lt;/code&gt; first, because the repo says &lt;code&gt;0.7.0.1&lt;/code&gt; while guides still say &lt;code&gt;0.2&lt;/code&gt;.&lt;/p&gt;
&lt;pre class=&quot;language-bash&quot; tabindex=&quot;0&quot;&gt;&lt;code class=&quot;language-bash&quot;&gt;&lt;span class=&quot;token function&quot;&gt;git&lt;/span&gt; clone https://github.com/patjak/facetimehd-firmware.git
&lt;span class=&quot;token builtin class-name&quot;&gt;cd&lt;/span&gt; facetimehd-firmware
&lt;span class=&quot;token function&quot;&gt;make&lt;/span&gt;            &lt;span class=&quot;token comment&quot;&gt;# fails on the assistant hash, this is expected&lt;/span&gt;
&lt;span class=&quot;token function&quot;&gt;sudo&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;make&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;install&lt;/span&gt;

&lt;span class=&quot;token function&quot;&gt;mkdir&lt;/span&gt; &lt;span class=&quot;token parameter variable&quot;&gt;-p&lt;/span&gt; /tmp/facetime-fw &lt;span class=&quot;token operator&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class=&quot;token builtin class-name&quot;&gt;cd&lt;/span&gt; /tmp/facetime-fw
&lt;span class=&quot;token keyword&quot;&gt;for&lt;/span&gt; &lt;span class=&quot;token for-or-select variable&quot;&gt;f&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;in&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;9112&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1771&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1871&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1874&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;do&lt;/span&gt;
  &lt;span class=&quot;token function&quot;&gt;curl&lt;/span&gt; &lt;span class=&quot;token parameter variable&quot;&gt;-fsSL&lt;/span&gt; &lt;span class=&quot;token parameter variable&quot;&gt;-o&lt;/span&gt; &lt;span class=&quot;token variable&quot;&gt;${f}&lt;/span&gt;_01XX.dat &lt;span class=&quot;token punctuation&quot;&gt;&#92;&lt;/span&gt;
    https://raw.githubusercontent.com/eudoxos/skoly/main/tweaks/macbook-air/firmware/&lt;span class=&quot;token variable&quot;&gt;${f}&lt;/span&gt;_01XX.dat
&lt;span class=&quot;token keyword&quot;&gt;done&lt;/span&gt;
&lt;span class=&quot;token function&quot;&gt;sudo&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;cp&lt;/span&gt; *.dat /usr/lib/firmware/facetimehd/
&lt;span class=&quot;token function&quot;&gt;sudo&lt;/span&gt; modprobe &lt;span class=&quot;token parameter variable&quot;&gt;-r&lt;/span&gt; facetimehd &lt;span class=&quot;token operator&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;sudo&lt;/span&gt; modprobe facetimehd&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;The &lt;code&gt;make&lt;/code&gt; failure is expected, and &lt;code&gt;firmware.bin&lt;/code&gt; still extracts fine. After the sensor files, &lt;code&gt;dmesg | grep facetimehd&lt;/code&gt; should show no more &lt;code&gt;failed with error -2&lt;/code&gt; lines.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;For the fans&lt;/strong&gt;, &lt;code&gt;mbpfan&lt;/code&gt; with the default config is enough.&lt;/p&gt;
&lt;pre class=&quot;language-bash&quot; tabindex=&quot;0&quot;&gt;&lt;code class=&quot;language-bash&quot;&gt;&lt;span class=&quot;token function&quot;&gt;sudo&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;apt&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;install&lt;/span&gt; &lt;span class=&quot;token parameter variable&quot;&gt;-y&lt;/span&gt; mbpfan
&lt;span class=&quot;token function&quot;&gt;sudo&lt;/span&gt; systemctl status mbpfan
&lt;span class=&quot;token function&quot;&gt;cat&lt;/span&gt; /sys/devices/platform/applesmc.768/fan*_input&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;The fans spike to ~6000 RPM during install, then settle back to ~2000 RPM.&lt;/p&gt;
&lt;p&gt;That&#39;s it.&lt;/p&gt;
&lt;p&gt;On a fresh install, the order is apt update/upgrade, Wi-Fi, camera, mbpfan, reboot, and check Wi-Fi, &lt;code&gt;/dev/video0&lt;/code&gt;, and mbpfan.&lt;/p&gt;
</content>
  </entry><entry>
    <title>SharePDF gets its first intro video</title>
    <link href="https://deepakness.com/raw/created-sharepdf-intro-video/" />
    <updated>2026-09-09T01:40:24Z</updated>
    <id>https://deepakness.com/raw/created-sharepdf-intro-video/</id>
    <summary>Finally got the time, and the first intro video for SharePDF is now live on YouTube.</summary>
    <content type="html">&lt;p&gt;I was procrastinating this for a long time but finally spent some time and created the very first intro video for &lt;a href=&quot;https://sharepdf.app&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;SharePDF&lt;/a&gt;, and now it&#39;s live on SharePDF YouTube channel. You can also &lt;a href=&quot;https://www.youtube.com/watch?v=Qn2sLQQZMWc&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;watch it here&lt;/a&gt; though:&lt;/p&gt;
&lt;link rel=&quot;stylesheet&quot; href=&quot;https://cdn.jsdelivr.net/gh/paulirish/lite-youtube-embed@0.3.3/src/lite-yt-embed.min.css&quot;&gt;
&lt;script defer=&quot;defer&quot; src=&quot;https://cdn.jsdelivr.net/gh/paulirish/lite-youtube-embed@0.3.3/src/lite-yt-embed.min.js&quot;&gt;&lt;/script&gt;
&lt;div id=&quot;Qn2sLQQZMWc&quot; class=&quot;eleventy-plugin-youtube-embed&quot;&gt;&lt;lite-youtube videoid=&quot;Qn2sLQQZMWc&quot; style=&quot;background-image: url(&#39;https://i.ytimg.com/vi/Qn2sLQQZMWc/hqdefault.jpg&#39;);&quot; params=&quot;rel=0&quot;&gt;&lt;div class=&quot;lty-playbtn&quot;&gt;&lt;/div&gt;&lt;/lite-youtube&gt;&lt;/div&gt;
&lt;blockquote&gt;
&lt;p&gt;Yes, that&#39;s me. But please ignore the low-effort thumbnail, I will make it better later.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;I am planning to create at least one video per week from now on, and will create short videos as well. I can create videos for individual features that the app has.&lt;/p&gt;
&lt;p&gt;Still have to do a lot of thinking to create a more robust long-term video strategy.&lt;/p&gt;
&lt;p&gt;All the best to me!&lt;/p&gt;
</content>
  </entry><entry>
    <title>Why AI will never be able to take over humans</title>
    <link href="https://deepakness.com/raw/ai-wont-take-over/" />
    <updated>2026-09-05T01:45:49Z</updated>
    <id>https://deepakness.com/raw/ai-wont-take-over/</id>
    <summary>My thoughts on why artificial intelligence is not capable of taking over human intelligence.</summary>
    <content type="html">&lt;p&gt;AI is capable of doing many things better than humans, but it doesn&#39;t have human-like curiosity. AI &lt;strong&gt;does not wonder&lt;/strong&gt; on its own and answers only when asked.&lt;/p&gt;
&lt;p&gt;So I think AI will never be able to take over humans because without genuine curiosity, it just remains a powerful tool.&lt;/p&gt;
</content>
  </entry><entry>
    <title>Two new improvements in my work setup recently</title>
    <link href="https://deepakness.com/raw/two-improvements-recently/" />
    <updated>2026-09-04T13:30:47Z</updated>
    <id>https://deepakness.com/raw/two-improvements-recently/</id>
    <summary>In the last few weeks, I have two small changes in my work setup that I am absolutely loving it so far.</summary>
    <content type="html">&lt;p&gt;In the last few days, I have adopted two new changes in my work setup:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Started using Herdr with Ghostty, and&lt;/li&gt;
&lt;li&gt;Turned on &lt;strong&gt;More Space&lt;/strong&gt; display scaling option on macOS&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Earlier, I was hopping between different apps like Claude Code, Cursor, etc. and wasn&#39;t using CLI coding harnesses a lot. But my productivity has significantly increased ever since I started using this &lt;a href=&quot;https://deepakness.com/raw/herdr-setup/&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;Herdr terminal multiplexer via the Ghostty&lt;/a&gt; terminal. And I even went a step ahead and unbound certain keybindings from Ghostty and &lt;a href=&quot;https://deepakness.com/raw/ghostty-herdr-keybindings/&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;bound them inside Herder&lt;/a&gt;, and now opening tabs, splitting panes, and other things are much easier.&lt;/p&gt;
&lt;p&gt;&lt;img alt=&quot;macOS More Space display scaling&quot; decoding=&quot;async&quot; loading=&quot;eager&quot; fetchpriority=&quot;high&quot; src=&quot;https://assets.deepakness.com/raw/two-improvements-recently/more-space-macos.png&quot;&gt;&lt;/p&gt;
&lt;p&gt;About the other thing, as you see above, I turned on the &amp;quot;More Space&amp;quot; display scaling option on my macOS device. Initially, it took some time to adjust, but now I don&#39;t even need my second display as I can see much more information on the main display itself. And it&#39;s less distracting than using the second screen.&lt;/p&gt;
&lt;p&gt;That&#39;s it.&lt;/p&gt;
&lt;p&gt;These two small changes recently have significantly improved my productivity.&lt;/p&gt;
</content>
  </entry><entry>
    <title>I used 28 different OpenCode models last month</title>
    <link href="https://deepakness.com/raw/opencode-usage-aug/" />
    <updated>2026-09-01T00:22:10Z</updated>
    <id>https://deepakness.com/raw/opencode-usage-aug/</id>
    <summary>After my Claude Max subscription ended, I didn&#39;t renew and started using OpenCode models a lot.</summary>
    <content type="html">&lt;p&gt;I didn&#39;t renew my Claude Max subscription after it ended last month, and decided to &lt;a href=&quot;https://go.deepakness.com/opencode&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;use OpenCode&lt;/a&gt; for some time. And it&#39;s been more than ~15 days of using OpenCode models, and I&#39;ve missed Claude models only a few times.&lt;/p&gt;
&lt;p&gt;From OpenCode&#39;s usage tab, I have used 28 different models last month, as you see in the screenshot.&lt;/p&gt;
&lt;p&gt;&lt;img alt=&quot;OpenCode usage last month&quot; decoding=&quot;async&quot; loading=&quot;eager&quot; fetchpriority=&quot;high&quot; src=&quot;https://assets.deepakness.com/raw/opencode-usage-aug/opencode-usage-august.png&quot;&gt;&lt;/p&gt;
&lt;p&gt;Among all the models you see in the screenshot, only a few stood out.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;DeepSeek V4 Flash&lt;/strong&gt; (0731): Love this model for simpler tasks like doing some research from multiple different sources and creating interactive HTML pages for better visualization, fixing quick UI bugs, etc. It&#39;s very fast and mostly accurate for these tasks.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;DeepSeek V4 Pro&lt;/strong&gt; (0813): This model is great for a lot of tasks, and I have used this for fixing some serious bugs on &lt;a href=&quot;https://sharepdf.app&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;SharePDF&lt;/a&gt;, building websites, brainstorming, etc.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;GLM 5.3 Flash&lt;/strong&gt;: Been using this model a lot since it came, and it&#39;s a great one for UI and research. The only issue is that it&#39;s very slow in OpenCode Go, so I use it for low-priority tasks, and sometimes I even keep it &lt;a href=&quot;https://x.com/DeepakNesss/status/2093521185837638015&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;running overnight&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;DeepSeek V4 Flash Vision Exp&lt;/strong&gt;: While I use &lt;a href=&quot;https://pi.dev/packages/pi-vision-handoff&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;an extension in Pi&lt;/a&gt; that uses another model for vision, I found this model to be great at browser automation tasks. I used it a lot via the Orca app for automating stuff in my browser, and it&#39;s good and fast too.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Mimo v2.5&lt;/strong&gt;: Sometimes I use this model for really simple, low-priority tasks, and it&#39;s good at that. But don&#39;t use it for anything else.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Apart from these, most models you see in the chart above are only for trying and testing. I&#39;m mostly using these 5 models via my OpenCode Go subscription.&lt;/p&gt;
&lt;p&gt;Most of the time I use these in the &lt;a href=&quot;https://deepakness.com/blog/pi-agent-setup/&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;Pi coding agent&lt;/a&gt; via &lt;a href=&quot;https://deepakness.com/raw/herdr-setup/&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;my new Herdr + Ghostty setup&lt;/a&gt;, but sometimes also using Pi inside the Orca app for browser use tasks. I&#39;m rarely using OpenCode models inside the OpenCode harness actually.&lt;/p&gt;
</content>
  </entry><entry>
    <title>Playing with the Grok bot</title>
    <link href="https://deepakness.com/raw/playing-with-grok-bot/" />
    <updated>2026-08-31T17:31:50Z</updated>
    <id>https://deepakness.com/raw/playing-with-grok-bot/</id>
    <summary>Downloaded and installed the new Grok bot and playing with to see how it can fit in my workflow.</summary>
    <content type="html">&lt;p&gt;Yesterday, I downloaded and installed &lt;a href=&quot;https://x.ai/bot&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;the new Grok bot&lt;/a&gt; and playing with it to see how it can fit in my workflow. I have connected it to &lt;a href=&quot;https://deepakness.com/raw/supergrok-3-months/&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;my existing SuperGrok subscription&lt;/a&gt; and so far it&#39;s working fine.&lt;/p&gt;
&lt;p&gt;&lt;img alt=&quot;Grok bot app sidebar on macOS&quot; decoding=&quot;async&quot; loading=&quot;eager&quot; fetchpriority=&quot;high&quot; src=&quot;https://assets.deepakness.com/raw/playing-with-grok-bot/grok-bot-sidebar.png&quot;&gt;&lt;/p&gt;
&lt;p&gt;As of now, I have set up 3 bots that do the following:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Emails bot: reads my emails twice a day, gives me a summary and reminds me of something important that needs to be done.&lt;/li&gt;
&lt;li&gt;AI Research bot: researches for AI related updates from the internet and sends me a summary twice a week.&lt;/li&gt;
&lt;li&gt;Ticky bot: manages my to-do list via Notion and email, sends an email every morning about today&#39;s and other upcoming tasks.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;I know this very basic and people must be using it for more complex tasks, but I&#39;m just exploring and learning about it. I haven&#39;t yet seen any tutorials about it, but will do and improve my setup.&lt;/p&gt;
&lt;p&gt;By the way, I&#39;m pretty impressed by it so far.&lt;/p&gt;
&lt;p&gt;Lastly, the different pricing plans and different login options using Grok and Cursor make it very very confusing. I hope they solve it quickly.&lt;/p&gt;
</content>
  </entry><entry>
    <title>Unbinding Ghostty&#39;s Cmd keys and binding them in Herdr</title>
    <link href="https://deepakness.com/raw/ghostty-herdr-keybindings/" />
    <updated>2026-08-30T14:32:34Z</updated>
    <id>https://deepakness.com/raw/ghostty-herdr-keybindings/</id>
    <summary>I unbound the Cmd shortcuts in Ghostty and bound the same keys directly in Herdr. One set of shortcuts for tabs, panes, and workspaces, with prefix mode still around as a fallback.</summary>
    <content type="html">&lt;p&gt;Since &lt;a href=&quot;https://deepakness.com/raw/herdr-setup/&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;setting up Herdr&lt;/a&gt; inside Ghostty, the same actions had two shortcuts, &lt;code&gt;Cmd+T&lt;/code&gt; for a Ghostty tab and &lt;code&gt;Ctrl+B C&lt;/code&gt; for a Herdr tab, and that made things a bit confusing and then I had to keep using my mouse for everything in Herdr. But Oron Ben &lt;a href=&quot;https://x.com/oronbz/status/2093071220879081756&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;suggested something on X&lt;/a&gt; and that clicked, I then followed &lt;a href=&quot;https://dev.to/oronbz/making-ghostty-and-herdr-share-one-keyboard-4p0g&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;his write-up&lt;/a&gt; to unbound the Cmd keys in Ghostty and bound the same keys directly in Herdr.&lt;/p&gt;
&lt;p&gt;Now, Ghostty passes the keypress through to the terminal and Herdr answers it, no prefix and no escape-code translation.&lt;/p&gt;
&lt;p&gt;&lt;img alt=&quot;My Herdr setup&quot; decoding=&quot;async&quot; loading=&quot;eager&quot; fetchpriority=&quot;high&quot; src=&quot;https://assets.deepakness.com/raw/ghostty-herdr-keybindings/herdr-setup.png&quot;&gt;&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Shortcut&lt;/th&gt;
&lt;th&gt;Before (Ghostty)&lt;/th&gt;
&lt;th&gt;Now (Herdr)&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;Cmd+T&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;new tab&lt;/td&gt;
&lt;td&gt;new tab&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;Cmd+W&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;close tab&lt;/td&gt;
&lt;td&gt;close pane&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;Cmd+D&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;split right&lt;/td&gt;
&lt;td&gt;split pane vertically&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;Cmd+Shift+D&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;split down&lt;/td&gt;
&lt;td&gt;split pane horizontally&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;Cmd+]&lt;/code&gt; &amp;amp; &lt;code&gt;Cmd+[&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;focus next and previous split&lt;/td&gt;
&lt;td&gt;cycle next and previous pane&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;Cmd+Shift+]&lt;/code&gt; &amp;amp; &lt;code&gt;Cmd+Shift+[&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;next and previous tab&lt;/td&gt;
&lt;td&gt;next and previous tab&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;Cmd+1..9&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;jump to tab&lt;/td&gt;
&lt;td&gt;switch workspace&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;Alt+1..9&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;types special characters&lt;/td&gt;
&lt;td&gt;switch tab&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Ghostty keeps everything else, &lt;code&gt;Cmd+N&lt;/code&gt; for a new window, &lt;code&gt;Cmd+C&lt;/code&gt; / &lt;code&gt;Cmd+V&lt;/code&gt; for copy and paste, search, and font size. And Herdr&#39;s &lt;code&gt;Ctrl+B&lt;/code&gt; prefix mode keeps working as a fallback, with &lt;code&gt;Ctrl+B ?&lt;/code&gt; showing the help panel.&lt;/p&gt;
&lt;p&gt;I also created a short video to show how easier it is to navigate inside Herdr using these keyboard shortcuts.&lt;/p&gt;
&lt;video controls=&quot;&quot; preload=&quot;none&quot; playsinline=&quot;&quot; data-plyr=&quot;&quot; poster=&quot;https://assets.deepakness.com/raw/ghostty-herdr-keybindings/ghostty-herdr-keybindings-poster.webp&quot;&gt;
  &lt;source src=&quot;https://assets.deepakness.com/raw/ghostty-herdr-keybindings/ghostty-herdr-keybindings.mp4&quot; type=&quot;video/mp4&quot;&gt;
&lt;/video&gt;
&lt;p&gt;The Ghostty side lives in the same config file &lt;a href=&quot;https://deepakness.com/raw/cmux-config/&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;my cmux setup&lt;/a&gt; already used at &lt;code&gt;~/Library/Application Support/com.mitchellh.ghostty/config.ghostty&lt;/code&gt;, symlinked from &lt;code&gt;~/.config/ghostty/config&lt;/code&gt;.&lt;/p&gt;
&lt;pre class=&quot;language-ini&quot; tabindex=&quot;0&quot;&gt;&lt;code class=&quot;language-ini&quot;&gt;&lt;span class=&quot;token key attr-name&quot;&gt;macos-option-as-alt&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token value attr-value&quot;&gt;true&lt;/span&gt;

&lt;span class=&quot;token key attr-name&quot;&gt;keybind&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token value attr-value&quot;&gt;cmd+t=unbind&lt;/span&gt;
&lt;span class=&quot;token key attr-name&quot;&gt;keybind&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token value attr-value&quot;&gt;cmd+w=unbind&lt;/span&gt;
&lt;span class=&quot;token key attr-name&quot;&gt;keybind&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token value attr-value&quot;&gt;cmd+d=unbind&lt;/span&gt;
&lt;span class=&quot;token key attr-name&quot;&gt;keybind&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token value attr-value&quot;&gt;cmd+shift+d=unbind&lt;/span&gt;
&lt;span class=&quot;token key attr-name&quot;&gt;keybind&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token value attr-value&quot;&gt;cmd+[=unbind&lt;/span&gt;
&lt;span class=&quot;token key attr-name&quot;&gt;keybind&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token value attr-value&quot;&gt;cmd+]=unbind&lt;/span&gt;
&lt;span class=&quot;token key attr-name&quot;&gt;keybind&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token value attr-value&quot;&gt;cmd+shift+[=unbind&lt;/span&gt;
&lt;span class=&quot;token key attr-name&quot;&gt;keybind&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token value attr-value&quot;&gt;cmd+shift+]=unbind&lt;/span&gt;
&lt;span class=&quot;token key attr-name&quot;&gt;keybind&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token value attr-value&quot;&gt;cmd+1=unbind&lt;/span&gt;
&lt;span class=&quot;token key attr-name&quot;&gt;keybind&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token value attr-value&quot;&gt;cmd+digit_1=unbind&lt;/span&gt;
&lt;span class=&quot;token key attr-name&quot;&gt;keybind&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token value attr-value&quot;&gt;cmd+2=unbind&lt;/span&gt;
&lt;span class=&quot;token key attr-name&quot;&gt;keybind&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token value attr-value&quot;&gt;cmd+digit_2=unbind&lt;/span&gt;
&lt;span class=&quot;token key attr-name&quot;&gt;keybind&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token value attr-value&quot;&gt;cmd+3=unbind&lt;/span&gt;
&lt;span class=&quot;token key attr-name&quot;&gt;keybind&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token value attr-value&quot;&gt;cmd+digit_3=unbind&lt;/span&gt;
&lt;span class=&quot;token key attr-name&quot;&gt;keybind&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token value attr-value&quot;&gt;cmd+4=unbind&lt;/span&gt;
&lt;span class=&quot;token key attr-name&quot;&gt;keybind&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token value attr-value&quot;&gt;cmd+digit_4=unbind&lt;/span&gt;
&lt;span class=&quot;token key attr-name&quot;&gt;keybind&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token value attr-value&quot;&gt;cmd+5=unbind&lt;/span&gt;
&lt;span class=&quot;token key attr-name&quot;&gt;keybind&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token value attr-value&quot;&gt;cmd+digit_5=unbind&lt;/span&gt;
&lt;span class=&quot;token key attr-name&quot;&gt;keybind&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token value attr-value&quot;&gt;cmd+6=unbind&lt;/span&gt;
&lt;span class=&quot;token key attr-name&quot;&gt;keybind&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token value attr-value&quot;&gt;cmd+digit_6=unbind&lt;/span&gt;
&lt;span class=&quot;token key attr-name&quot;&gt;keybind&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token value attr-value&quot;&gt;cmd+7=unbind&lt;/span&gt;
&lt;span class=&quot;token key attr-name&quot;&gt;keybind&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token value attr-value&quot;&gt;cmd+digit_7=unbind&lt;/span&gt;
&lt;span class=&quot;token key attr-name&quot;&gt;keybind&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token value attr-value&quot;&gt;cmd+8=unbind&lt;/span&gt;
&lt;span class=&quot;token key attr-name&quot;&gt;keybind&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token value attr-value&quot;&gt;cmd+digit_8=unbind&lt;/span&gt;
&lt;span class=&quot;token key attr-name&quot;&gt;keybind&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token value attr-value&quot;&gt;cmd+9=unbind&lt;/span&gt;
&lt;span class=&quot;token key attr-name&quot;&gt;keybind&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token value attr-value&quot;&gt;cmd+digit_9=unbind&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Ghostty binds both &lt;code&gt;cmd+1&lt;/code&gt; and &lt;code&gt;cmd+digit_1&lt;/code&gt; by default, &lt;code&gt;1&lt;/code&gt; matches the character and &lt;code&gt;digit_1&lt;/code&gt; the physical key, so both lines are needed for every digit. You can check with &lt;code&gt;ghostty +show-config --default | grep goto_tab&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;The Herdr side goes into &lt;code&gt;~/.config/herdr/config.toml&lt;/code&gt;:&lt;/p&gt;
&lt;pre class=&quot;language-toml&quot; tabindex=&quot;0&quot;&gt;&lt;code class=&quot;language-toml&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token table class-name&quot;&gt;keys&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;
&lt;span class=&quot;token key property&quot;&gt;new_tab&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;cmd+t&quot;&lt;/span&gt;
&lt;span class=&quot;token key property&quot;&gt;close_pane&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;cmd+w&quot;&lt;/span&gt;
&lt;span class=&quot;token key property&quot;&gt;split_vertical&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;cmd+d&quot;&lt;/span&gt;
&lt;span class=&quot;token key property&quot;&gt;split_horizontal&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;cmd+shift+d&quot;&lt;/span&gt;
&lt;span class=&quot;token key property&quot;&gt;cycle_pane_next&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;cmd+]&quot;&lt;/span&gt;
&lt;span class=&quot;token key property&quot;&gt;cycle_pane_previous&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;cmd+[&quot;&lt;/span&gt;
&lt;span class=&quot;token key property&quot;&gt;next_tab&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;cmd+shift+]&quot;&lt;/span&gt;
&lt;span class=&quot;token key property&quot;&gt;previous_tab&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;cmd+shift+[&quot;&lt;/span&gt;
&lt;span class=&quot;token key property&quot;&gt;switch_workspace&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;cmd+1..9&quot;&lt;/span&gt;
&lt;span class=&quot;token key property&quot;&gt;switch_tab&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;alt+1..9&quot;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;code&gt;herdr config check&lt;/code&gt; validates the TOML and &lt;code&gt;herdr server reload-config&lt;/code&gt; applies it to the running server without a restart. For Alt to work at all, &lt;code&gt;macos-option-as-alt = true&lt;/code&gt; is required in Ghostty, otherwise Option types special characters.&lt;/p&gt;
&lt;p&gt;So far, I&#39;m loving the setup.&lt;/p&gt;
</content>
  </entry><entry>
    <title>Using OpenCode Go models in ZCode harness</title>
    <link href="https://deepakness.com/raw/opencode-go-in-zcode/" />
    <updated>2026-08-28T16:28:56Z</updated>
    <id>https://deepakness.com/raw/opencode-go-in-zcode/</id>
    <summary>How to use OpenCode Go models like GLM-5.3-flash, Kimi, and DeepSeek inside ZCode by adding OpenCode as a custom OpenAI-compatible provider.</summary>
    <content type="html">&lt;p&gt;I subscribe to &lt;a href=&quot;https://go.deepakness.com/opencode&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;OpenCode Go&lt;/a&gt; for its open coding models, and the same models work inside ZCode too, because ZCode accepts any custom provider that speaks the OpenAI or Anthropic protocol. Same trick as when I &lt;a href=&quot;https://deepakness.com/raw/nvidia-models-via-opencode/&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;pointed OpenCode itself at NVIDIA&#39;s models&lt;/a&gt; a while back.&lt;/p&gt;
&lt;p&gt;The setup is just a few fields in ZCode&#39;s Model settings. Click &amp;quot;Add provider&amp;quot;, name it OpenCode, and fill these in:&lt;/p&gt;
&lt;pre class=&quot;language-text&quot; tabindex=&quot;0&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;Base URL:   https://opencode.ai/zen/go/v1
API format: Chat completions (/chat/completions)
API key:    your key from opencode.ai/auth&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Then click &amp;quot;Add model&amp;quot; and type the model IDs you want, like &lt;code&gt;glm-5.3-flash&lt;/code&gt; or &lt;code&gt;deepseek-v4-flash&lt;/code&gt;, and enable the provider.&lt;/p&gt;
&lt;p&gt;&lt;img alt=&quot;OpenCode provider configured in ZCode with glm-5.3-flash and deepseek-v4-flash&quot; decoding=&quot;async&quot; loading=&quot;eager&quot; fetchpriority=&quot;high&quot; src=&quot;https://assets.deepakness.com/raw/opencode-go-in-zcode/zcode-opencode-provider.png&quot;&gt;&lt;/p&gt;
&lt;p&gt;One catch is that Go splits its catalog across two formats. The Qwen and MiniMax models are only served through the Anthropic messages format, so for those add a second provider with the same key, set the format to Anthropic messages (/v1/messages), and use &lt;code&gt;https://opencode.ai/zen/go&lt;/code&gt; as the base URL. ZCode appends &lt;code&gt;/v1/messages&lt;/code&gt; itself. Grok 4.6 and GPT 5.6 Luna don&#39;t work at all, they only exist on OpenAI&#39;s Responses API, which ZCode doesn&#39;t speak.&lt;/p&gt;
&lt;p&gt;Once a model responds, open its edit dialog and set the real context window, max output tokens, and input types. The input types matter most, that&#39;s how ZCode knows &lt;code&gt;glm-5.3-flash&lt;/code&gt; accepts screenshots while &lt;code&gt;deepseek-v4-flash&lt;/code&gt; is text-only.&lt;/p&gt;
&lt;p&gt;&lt;img alt=&quot;Editing the glm-5.3-flash model settings in ZCode&quot; decoding=&quot;async&quot; loading=&quot;lazy&quot; src=&quot;https://assets.deepakness.com/raw/opencode-go-in-zcode/zcode-edit-model-settings.png&quot;&gt;&lt;/p&gt;
&lt;p&gt;The full live model list stays at &lt;code&gt;https://opencode.ai/zen/go/v1/models&lt;/code&gt;, so I just paste a new ID into ZCode whenever a new model shows up. Go&#39;s limits are dollar-based, $12 per 5 hours, $30 weekly, $60 monthly, so cheaper models like &lt;code&gt;deepseek-v4-flash&lt;/code&gt; stretch the plan much further. And if you are about to subscribe, &lt;a href=&quot;https://deepakness.com/raw/opencode-referral-reward/&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;use a referral link&lt;/a&gt;, the $5 reward cuts the 5-hour limit by up to 41%.&lt;/p&gt;
</content>
  </entry><entry>
    <title>Omarchy is the best Linux distro for old laptops</title>
    <link href="https://deepakness.com/raw/the-omarchy/" />
    <updated>2026-08-25T13:54:13Z</updated>
    <id>https://deepakness.com/raw/the-omarchy/</id>
    <summary>After trying Ubuntu, Fedora, and Linux Mint, I think Omarchy is the best Linux distro to install on decade old hardwares.</summary>
    <content type="html">&lt;p&gt;I installed &lt;a href=&quot;https://omarchy.org/&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;Omarchy&lt;/a&gt; on my decade-old MacBook Pro this week, and after distro-hopping through Fedora and Mint on the same machine, I am convinced this is the best Linux distro you can put on old hardware. &lt;a href=&quot;https://deepakness.com/raw/fixing-wifi-fedora-macbook/&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;Fedora needed a lot of surgery&lt;/a&gt; just to get Wi-Fi and the webcam working, and &lt;a href=&quot;https://deepakness.com/raw/fixing-wifi-linux-mint/&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;Mint managed to break its own Wi-Fi driver on the first update&lt;/a&gt;, but Omarchy simply installed cleanly, booted fast, and everything just worked.&lt;/p&gt;
&lt;p&gt;It&#39;s &lt;a href=&quot;https://dhh.dk/&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;DHH&lt;/a&gt;&#39;s Arch-based distribution with the Hyprland tiling window manager and the Quickshell desktop shell, all configured out of the box. It ships with everything a developer needs on day one, from Neovim to Chromium, Obsidian to LibreOffice, and even Kdenlive and OBS Studio. But what surprised me most is how light it runs, and a laptop from 2014 now boots in seconds and apps open instantly. Yes, faster than others I tried.&lt;/p&gt;
&lt;p&gt;It also helps that the Omarchy community is thriving. The project crossed 30,000 stars on GitHub within a year, and there is now an &lt;a href=&quot;https://deepakness.com/raw/the-year-of-linux/&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;Omacom foundation&lt;/a&gt; backing it. I already love this distro enough to have been &lt;a href=&quot;https://deepakness.com/raw/omarchy-resource-library/&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;collecting Omarchy themes, setups, and resources in one place&lt;/a&gt; for a while.&lt;/p&gt;
&lt;p&gt;I took a lot of photos and screenshots during the install, and here they are.&lt;/p&gt;
&lt;p&gt;&lt;img alt=&quot;Installation completed in 1 minutes 57 seconds&quot; decoding=&quot;async&quot; loading=&quot;eager&quot; fetchpriority=&quot;high&quot; src=&quot;https://assets.deepakness.com/raw/the-omarchy/install-time.jpg&quot;&gt;&lt;/p&gt;
&lt;p&gt;&lt;img alt=&quot;A beautiful Omarchy theme&quot; decoding=&quot;async&quot; loading=&quot;lazy&quot; src=&quot;https://assets.deepakness.com/raw/the-omarchy/theme-1.jpg&quot;&gt;&lt;/p&gt;
&lt;p&gt;&lt;img alt=&quot;A beautiful Omarchy theme&quot; decoding=&quot;async&quot; loading=&quot;lazy&quot; src=&quot;https://assets.deepakness.com/raw/the-omarchy/theme-2.jpg&quot;&gt;&lt;/p&gt;
&lt;p&gt;&lt;img alt=&quot;Two tiled windows in a workspace&quot; decoding=&quot;async&quot; loading=&quot;lazy&quot; src=&quot;https://assets.deepakness.com/raw/the-omarchy/tiling-windows.png&quot;&gt;&lt;/p&gt;
&lt;p&gt;Beautiful, aren&#39;t they?&lt;/p&gt;
</content>
  </entry><entry>
    <title>Linux Mint Wi-Fi and failed update fix on 2014 MacBook Pro</title>
    <link href="https://deepakness.com/raw/fixing-wifi-linux-mint/" />
    <updated>2026-08-25T05:29:20Z</updated>
    <id>https://deepakness.com/raw/fixing-wifi-linux-mint/</id>
    <summary>The first system update on Linux Mint failed on my Mid-2014 MacBook Pro because the Broadcom Wi-Fi driver couldn&#39;t build against the new 7.0 kernel. Here&#39;s the complete fix.</summary>
    <content type="html">&lt;p&gt;After &lt;a href=&quot;https://deepakness.com/raw/fixing-wifi-fedora-macbook/&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;the Fedora 44 test&lt;/a&gt;, I wiped &lt;a href=&quot;https://deepakness.com/blog/mbp-mid-2014/&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;the old MacBook Pro&lt;/a&gt; and installed Linux Mint 22 on it, and accepted the Broadcom driver installation that the Driver Manager popup showed. But then the first system update failed, so I spent some time and finally got it fixed.&lt;/p&gt;
&lt;p&gt;The update pulled in the HWE kernel 7.0.0-30, and DKMS couldn&#39;t rebuild the proprietary &lt;code&gt;wl&lt;/code&gt; driver for it, so &lt;code&gt;linux-headers-7.0.0-30-generic&lt;/code&gt;, &lt;code&gt;linux-headers-generic-hwe-24.04&lt;/code&gt;, &lt;code&gt;linux-generic-hwe-24.04&lt;/code&gt;, and &lt;code&gt;linux-image-7.0.0-30-generic&lt;/code&gt; were left unconfigured. By the way, the Wi-Fi was working on the old 6.14 kernel.&lt;/p&gt;
&lt;p&gt;Then, canonical patches &lt;code&gt;wl&lt;/code&gt; 6.30.223.271 for every kernel bump, and while &lt;code&gt;23ubuntu1.2&lt;/code&gt; fixed 6.17, &lt;a href=&quot;https://launchpad.net/bugs/2161038&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;only 23ubuntu1.3 in noble-proposed has the linux-7.0 fix&lt;/a&gt;. I booted into 6.14, and ran this.&lt;/p&gt;
&lt;pre class=&quot;language-bash&quot; tabindex=&quot;0&quot;&gt;&lt;code class=&quot;language-bash&quot;&gt;&lt;span class=&quot;token builtin class-name&quot;&gt;echo&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&#39;deb http://archive.ubuntu.com/ubuntu noble-proposed restricted&#39;&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;|&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;sudo&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;tee&lt;/span&gt; /etc/apt/sources.list.d/noble-proposed.list
&lt;span class=&quot;token function&quot;&gt;sudo&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;apt&lt;/span&gt; update
&lt;span class=&quot;token function&quot;&gt;sudo&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;apt&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;install&lt;/span&gt; broadcom-sta-dkms&lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;6.30&lt;/span&gt;.223.271-23ubuntu1.3
&lt;span class=&quot;token function&quot;&gt;sudo&lt;/span&gt; dpkg &lt;span class=&quot;token parameter variable&quot;&gt;--configure&lt;/span&gt; &lt;span class=&quot;token parameter variable&quot;&gt;-a&lt;/span&gt;
&lt;span class=&quot;token function&quot;&gt;sudo&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;rm&lt;/span&gt; /etc/apt/sources.list.d/noble-proposed.list
&lt;span class=&quot;token function&quot;&gt;sudo&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;apt&lt;/span&gt; update
&lt;span class=&quot;token function&quot;&gt;sudo&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;reboot&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;The driver install builds &lt;code&gt;wl&lt;/code&gt; for 7.0, and &lt;code&gt;dpkg --configure -a&lt;/code&gt; finishes the stuck packages. After reboot, &lt;code&gt;uname -r&lt;/code&gt; showed &lt;code&gt;7.0.0-30-generic&lt;/code&gt;, &lt;code&gt;lsmod | grep wl&lt;/code&gt; showed the module loaded, and &lt;code&gt;nmcli device status&lt;/code&gt; showed &lt;code&gt;wlp2s0&lt;/code&gt; connected on 5 GHz.&lt;/p&gt;
&lt;p&gt;The locale warnings in the update output went away after &lt;code&gt;sudo dpkg-reconfigure locales&lt;/code&gt; with &lt;code&gt;en_IN.UTF-8&lt;/code&gt; selected, because &lt;code&gt;en_IN.ISO8859-1&lt;/code&gt; was never generated on the system. And for next time, &lt;code&gt;b43&lt;/code&gt; doesn&#39;t support this BCM4360&#39;s AC revision, installing the driver after the update wouldn&#39;t have helped either, and after any future kernel update the same check applies.&lt;/p&gt;
&lt;p&gt;Can look at &lt;code&gt;apt-cache policy broadcom-sta-dkms&lt;/code&gt; for a newer version in noble-proposed.&lt;/p&gt;
</content>
  </entry><entry>
    <title>Fedora 44 Wi-Fi and Webcam fix on Mid-2014 MacBook Pro</title>
    <link href="https://deepakness.com/raw/fixing-wifi-fedora-macbook/" />
    <updated>2026-08-24T17:20:00Z</updated>
    <id>https://deepakness.com/raw/fixing-wifi-fedora-macbook/</id>
    <summary>Wi-Fi and the FaceTime webcam didn&#39;t work after installing Fedora 44 on my Mid 2014 MacBook Pro, and here are the fixes.</summary>
    <content type="html">&lt;p&gt;I installed Fedora 44 on &lt;a href=&quot;https://deepakness.com/blog/mbp-mid-2014/&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;the $100 MacBook Pro I bought recently&lt;/a&gt; just to test Linux on it, and Wi-Fi simply didn&#39;t exist – no network, no wlan interface, and literally nothing in NetworkManager. And after spending a lot of time, here&#39;s the short version of how it was fixed.&lt;/p&gt;
&lt;p&gt;I discovered, the MacBook has a Broadcom BCM4360 Wi-Fi chip &lt;code&gt;14e4:43a0&lt;/code&gt; and the open-source &lt;code&gt;b43&lt;/code&gt; driver that Fedora loads by default doesn&#39;t support this 802.11ac chip, so the card sits there unable to do anything. It needs the proprietary &lt;code&gt;broadcom-wl&lt;/code&gt; driver, which lives in the RPM Fusion nonfree repo, and obviously doesn&#39;t automatically get installed.&lt;/p&gt;
&lt;p&gt;So the fix starts with enabling the nonfree repo and installing the driver.&lt;/p&gt;
&lt;pre class=&quot;language-bash&quot; tabindex=&quot;0&quot;&gt;&lt;code class=&quot;language-bash&quot;&gt;&lt;span class=&quot;token function&quot;&gt;sudo&lt;/span&gt; dnf &lt;span class=&quot;token function&quot;&gt;install&lt;/span&gt; https://mirrors.rpmfusion.org/nonfree/fedora/rpmfusion-nonfree-release-&lt;span class=&quot;token variable&quot;&gt;&lt;span class=&quot;token variable&quot;&gt;$(&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;rpm&lt;/span&gt; &lt;span class=&quot;token parameter variable&quot;&gt;-E&lt;/span&gt; %fedora&lt;span class=&quot;token variable&quot;&gt;)&lt;/span&gt;&lt;/span&gt;.noarch.rpm

&lt;span class=&quot;token function&quot;&gt;sudo&lt;/span&gt; dnf &lt;span class=&quot;token function&quot;&gt;install&lt;/span&gt; akmod-wl kernel-devel-&lt;span class=&quot;token variable&quot;&gt;&lt;span class=&quot;token variable&quot;&gt;$(&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;uname&lt;/span&gt; &lt;span class=&quot;token parameter variable&quot;&gt;-r&lt;/span&gt;&lt;span class=&quot;token variable&quot;&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;The &lt;code&gt;akmod-wl&lt;/code&gt; package builds the &lt;code&gt;wl&lt;/code&gt; kernel module for your running kernel and rebuilds it automatically after future kernel updates. Next, needed to stop the open drivers from claiming the card by creating &lt;code&gt;/etc/modprobe.d/broadcom-wl.conf&lt;/code&gt; with these lines.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;blacklist b43
blacklist b43legacy
blacklist brcmsmac
blacklist ssb
blacklist bcma
blacklist bcm43xx
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;And make sure &lt;code&gt;wl&lt;/code&gt; loads at boot by putting a single line in &lt;code&gt;/etc/modules-load.d/wl.conf&lt;/code&gt;.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;wl
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Then build the module and reboot.&lt;/p&gt;
&lt;pre class=&quot;language-bash&quot; tabindex=&quot;0&quot;&gt;&lt;code class=&quot;language-bash&quot;&gt;&lt;span class=&quot;token function&quot;&gt;sudo&lt;/span&gt; akmods
&lt;span class=&quot;token function&quot;&gt;sudo&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;reboot&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;After the reboot Wi-Fi showed up in the toolbar and in GNOME settings and connected without any issues. By the way, &lt;a href=&quot;https://wiki.gentoo.org/wiki/Android_USB_tethering&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;USB tethering via my Android device&lt;/a&gt; got me through the setup, because that was the only way to use internet on the Fedora device.&lt;/p&gt;
&lt;p&gt;Apart from this, &lt;strong&gt;the webcam also didn&#39;t work&lt;/strong&gt; and needed more work. This MacBook has a Broadcom 720p FaceTime HD camera (&lt;code&gt;14e4:1570&lt;/code&gt;) with no open driver at all, so &lt;code&gt;/dev/video0&lt;/code&gt; never appears. The fix has two parts, and I also installed &lt;code&gt;lm_sensors&lt;/code&gt; along the way to read fan speeds and temperatures.&lt;/p&gt;
&lt;p&gt;First the driver. It&#39;s out-of-tree and built via DKMS, which already has &lt;code&gt;kernel-devel&lt;/code&gt; available from the Wi-Fi setup.&lt;/p&gt;
&lt;pre class=&quot;language-bash&quot; tabindex=&quot;0&quot;&gt;&lt;code class=&quot;language-bash&quot;&gt;&lt;span class=&quot;token function&quot;&gt;sudo&lt;/span&gt; dnf &lt;span class=&quot;token function&quot;&gt;install&lt;/span&gt; dkms

&lt;span class=&quot;token function&quot;&gt;git&lt;/span&gt; clone &lt;span class=&quot;token parameter variable&quot;&gt;--depth&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt; https://github.com/patjak/bcwc_pcie.git
&lt;span class=&quot;token function&quot;&gt;sudo&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;cp&lt;/span&gt; &lt;span class=&quot;token parameter variable&quot;&gt;-r&lt;/span&gt; bcwc_pcie /usr/src/facetimehd-0.7.0.1
&lt;span class=&quot;token function&quot;&gt;sudo&lt;/span&gt; dkms &lt;span class=&quot;token function&quot;&gt;add&lt;/span&gt; facetimehd/0.7.0.1
&lt;span class=&quot;token function&quot;&gt;sudo&lt;/span&gt; dkms build facetimehd/0.7.0.1
&lt;span class=&quot;token function&quot;&gt;sudo&lt;/span&gt; dkms &lt;span class=&quot;token function&quot;&gt;install&lt;/span&gt; facetimehd/0.7.0.1&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Then the firmware. The camera needs Apple&#39;s proprietary firmware extracted from the macOS 10.12.6 update, and there&#39;s a script that pulls only the needed chunks from Apple&#39;s CDN and verifies them by SHA256.&lt;/p&gt;
&lt;pre class=&quot;language-bash&quot; tabindex=&quot;0&quot;&gt;&lt;code class=&quot;language-bash&quot;&gt;&lt;span class=&quot;token function&quot;&gt;git&lt;/span&gt; clone &lt;span class=&quot;token parameter variable&quot;&gt;--depth&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt; https://github.com/patjak/facetimehd-firmware.git
&lt;span class=&quot;token builtin class-name&quot;&gt;cd&lt;/span&gt; facetimehd-firmware
&lt;span class=&quot;token function&quot;&gt;sudo&lt;/span&gt; ./facetimehd-firmware-install.sh&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;The script drops &lt;code&gt;firmware.bin&lt;/code&gt; and eleven sensor calibration files into &lt;code&gt;/usr/lib/firmware/facetimehd/&lt;/code&gt;. Then load the module and the camera appears.&lt;/p&gt;
&lt;pre class=&quot;language-bash&quot; tabindex=&quot;0&quot;&gt;&lt;code class=&quot;language-bash&quot;&gt;&lt;span class=&quot;token function&quot;&gt;sudo&lt;/span&gt; modprobe facetimehd
&lt;span class=&quot;token function&quot;&gt;ls&lt;/span&gt; /dev/video0&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;I verified it with a one-frame &lt;code&gt;ffmpeg&lt;/code&gt; capture, which produced a proper 122 KB JPEG. To make it persistent across reboots, add &lt;code&gt;facetimehd&lt;/code&gt; to &lt;code&gt;/etc/modules-load.d/facetimehd.conf&lt;/code&gt; and &lt;code&gt;/etc/dracut.conf.d/facetimehd.conf&lt;/code&gt;, then rebuild the initramfs.&lt;/p&gt;
&lt;pre class=&quot;language-bash&quot; tabindex=&quot;0&quot;&gt;&lt;code class=&quot;language-bash&quot;&gt;&lt;span class=&quot;token builtin class-name&quot;&gt;echo&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;facetimehd&quot;&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;|&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;sudo&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;tee&lt;/span&gt; /etc/modules-load.d/facetimehd.conf
&lt;span class=&quot;token builtin class-name&quot;&gt;echo&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&#39;add_drivers+=&quot; facetimehd &quot;&#39;&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;|&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;sudo&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;tee&lt;/span&gt; /etc/dracut.conf.d/facetimehd.conf
&lt;span class=&quot;token function&quot;&gt;sudo&lt;/span&gt; dracut &lt;span class=&quot;token parameter variable&quot;&gt;--force&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;DKMS rebuilds the camera module automatically on kernel updates, the same way akmods handles the Wi-Fi driver. Secure Boot is a non-issue on this machine since Apple&#39;s EFI doesn&#39;t support it, so the unsigned modules load without any key enrollment.&lt;/p&gt;
</content>
  </entry><entry>
    <title>Get 10% off Z.ai GLM coding with a referral link</title>
    <link href="https://deepakness.com/raw/z-ai-referral-discount/" />
    <updated>2026-08-22T20:31:30Z</updated>
    <id>https://deepakness.com/raw/z-ai-referral-discount/</id>
    <summary>Z.ai gives invited users a 10% instant discount on their first GLM Coding subscription. Sign up through my referral link and the discount is applied automatically at checkout.</summary>
    <content type="html">&lt;p&gt;Z.ai runs an &amp;quot;Invite Friends, Get Credits&amp;quot; campaign, and if you sign up to the GLM Coding plan through &lt;a href=&quot;https://go.deepakness.com/z-ai&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;my Z.ai referral link&lt;/a&gt;, you get a 10% instant discount on your first subscription. The discount is applied automatically at checkout, so there&#39;s no coupon code to remember.&lt;/p&gt;
&lt;p&gt;Here are the conditions from the &lt;a href=&quot;https://docs.z.ai/devpack/credit-campaign-rules&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;official campaign rules&lt;/a&gt;.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;The discount works for new accounts and for existing accounts with no paid subscription history.&lt;/li&gt;
&lt;li&gt;It applies to the first GLM Coding order only. Renewals, upgrades, and downgrades are not eligible.&lt;/li&gt;
&lt;li&gt;It can&#39;t be stacked with other similar first-order discounts.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;On my side, if you subscribe through the link, I earn credits worth 10% of what you pay, and up to 20% with their tiered bonus. It&#39;s a win-win, similar to &lt;a href=&quot;https://deepakness.com/raw/opencode-referral-reward/&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;the OpenCode referral reward&lt;/a&gt; I wrote about earlier.&lt;/p&gt;
&lt;p&gt;That&#39;s it.&lt;/p&gt;
</content>
  </entry><entry>
    <title>Find all subdomains of a domain with crt.name</title>
    <link href="https://deepakness.com/raw/find-subdomains/" />
    <updated>2026-08-21T23:14:19Z</updated>
    <id>https://deepakness.com/raw/find-subdomains/</id>
    <summary>crt.name is a pre-built subdomain index compiled from CT logs and other archives. Query it from the browser with a single URL.</summary>
    <content type="html">&lt;p&gt;Came across &lt;a href=&quot;https://x.com/cryptoshan484/status/2090486831137886703&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;this post on X&lt;/a&gt; that shared a trick to find all subdomains of a domain. You add your domain in the URL below, visit it in your browser, and it shows you a bunch of subdomains:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;https://crt.name/v1/search?apex=YOUR_DOMAIN
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Just replace &lt;code&gt;YOUR_DOMAIN&lt;/code&gt; with a domain and it lists every subdomain it has on file. The index is pre-built, and as &lt;a href=&quot;https://crt.name/&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;their website explains&lt;/a&gt;, the data is assembled from multiple archives. Certificate transparency logs, retired CT logs replayed from the Internet Archive, Common Crawl, ICANN CZDS zone files, ProjectDiscovery Chaos, HaGeZi blocklists, and a prober that checks common hostnames against known apexes.&lt;/p&gt;
&lt;p&gt;Since it aggregates so many sources, the results lean toward anything that ever existed for that apex. During my testing, most of the subdomains were either old, dead, or even something that I never set up in the first place.&lt;/p&gt;
</content>
  </entry><entry>
    <title>2026: The year of Linux Desktops</title>
    <link href="https://deepakness.com/raw/the-year-of-linux/" />
    <updated>2026-08-21T16:48:21Z</updated>
    <id>https://deepakness.com/raw/the-year-of-linux/</id>
    <summary>Omarchy downloads are near 5,000 a day, the Omacom foundation launched with $8 million, and I&#39;m finally ready to move back to Linux.</summary>
    <content type="html">&lt;p&gt;Welcome to the year of Linux desktops, 2026!&lt;/p&gt;
&lt;p&gt;DHH has truly created a revolution with his &lt;a href=&quot;https://omarchy.org/&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;Linux distro Omarchy&lt;/a&gt;. Just over a year after the &lt;a href=&quot;https://github.com/basecamp/omarchy/releases/tag/v1.1.1&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;initial launch&lt;/a&gt;, the Omarchy ISO is now being downloaded &lt;a href=&quot;https://x.com/dhh/status/2090527345534722053&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;almost 5,000 times&lt;/a&gt; every day.&lt;/p&gt;
&lt;p&gt;Recently, the &lt;a href=&quot;https://omarchy.org/news/2026/08/omacom-foundation-launches-with-8-million/&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;Omacom foundation was launched&lt;/a&gt; with a whopping $8 million in funds, and the following 8 patrons contributed $1 million each for the cause.&lt;/p&gt;
&lt;p&gt;&lt;img alt=&quot;Omarchy Omacom Patrons&quot; decoding=&quot;async&quot; loading=&quot;eager&quot; fetchpriority=&quot;high&quot; src=&quot;https://assets.deepakness.com/raw/the-year-of-linux/omarchy-patrons.png&quot;&gt;&lt;/p&gt;
&lt;p&gt;Legendary folks, no?&lt;/p&gt;
&lt;p&gt;I used &lt;a href=&quot;https://deepakness.com/blog/manjaro-linux/&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;Linux for 5–6 years&lt;/a&gt;, then went back to Windows and am currently using macOS, but I have never been more excited to try Linux again. I watched &lt;a href=&quot;https://www.youtube.com/watch?v=F7fe9pa8OeE&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;DHH&#39;s new video&lt;/a&gt;. The new &lt;a href=&quot;https://github.com/basecamp/omarchy/releases/tag/v4.0.0&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;Omarchy Quattro&lt;/a&gt; looks amazing. And the next chance I get to upgrade my setup, I am moving to Linux once and for all.&lt;/p&gt;
</content>
  </entry><entry>
    <title>Chrome Web Store revises limits on extensions</title>
    <link href="https://deepakness.com/raw/chrome-extensions-limits/" />
    <updated>2026-08-20T22:31:32Z</updated>
    <id>https://deepakness.com/raw/chrome-extensions-limits/</id>
    <summary>Chrome Web Store has revised the limits of publishing Chrome extensions from the Web Store developer dashboard.</summary>
    <content type="html">&lt;p&gt;Recently, Chrome Web Store has revised its limits on number of extensions you can publish to the Web Store. I don&#39;t know what the limit was earlier, but now, for new accounts it starts from the limit of 2 published extensions as explained &lt;a href=&quot;https://developer.chrome.com/docs/webstore/publish/#item_limits&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;on this docs page&lt;/a&gt;. You can request an increase when you hit the limit of 2, and then limits increased to 4 or more, as you progress. Right now, I&#39;m at this limit of 10 published extensions as you see in the screenshot.&lt;/p&gt;
&lt;p&gt;&lt;img alt=&quot;Chrome Web Store published extensions limits&quot; decoding=&quot;async&quot; loading=&quot;eager&quot; fetchpriority=&quot;high&quot; src=&quot;https://assets.deepakness.com/raw/chrome-extensions-limits/cws-my-limiits.png&quot;&gt;&lt;/p&gt;
&lt;p&gt;And I see the below message in a popup when I click on this 8/10 limits button.&lt;/p&gt;
&lt;p&gt;&lt;img alt=&quot;Chrome Web Store message shown for limits&quot; decoding=&quot;async&quot; loading=&quot;lazy&quot; src=&quot;https://assets.deepakness.com/raw/chrome-extensions-limits/cws-limits-message.png&quot;&gt;&lt;/p&gt;
&lt;p&gt;Neither in their docs and nor in the developer dashboard it&#39;s mentioned if they will further entertain my request to increase limits from 10 to more. But I&#39;m about to publish a few extensions so let&#39;s see how it goes.&lt;/p&gt;
&lt;p&gt;I will keep this page updated as I learn more.&lt;/p&gt;
</content>
  </entry><entry>
    <title>Managing AI agent workspaces with Herdr</title>
    <link href="https://deepakness.com/raw/herdr-setup/" />
    <updated>2026-08-20T19:38:13Z</updated>
    <id>https://deepakness.com/raw/herdr-setup/</id>
    <summary>A quick breakdown of how I use Herdr as a terminal workspace manager that ties Pi, Grok, and Antigravity sessions to project panes.</summary>
    <content type="html">&lt;p&gt;After &lt;a href=&quot;https://deepakness.com/raw/cmux-config/&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;configuring cmux&lt;/a&gt; and &lt;a href=&quot;https://deepakness.com/raw/using-kero/&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;trying out Kero&lt;/a&gt;, I&#39;ve been testing &lt;a href=&quot;https://herdr.dev/&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;herdr&lt;/a&gt; as a terminal workspace manager built around coding agents. Each project gets its own workspace with tabs and panes, and herdr remembers which agent session lives where.&lt;/p&gt;
&lt;p&gt;Everything sits in plain files under &lt;code&gt;~/.config/herdr/&lt;/code&gt;.&lt;/p&gt;
&lt;pre class=&quot;language-text&quot; tabindex=&quot;0&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;~/.config/herdr/config.toml    settings and theme
~/.config/herdr/session.json   workspaces, tabs, panes, agent sessions
~/.config/herdr/herdr.log      plus herdr-server.log and herdr-client.log&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;My herdr config is small, a gruvbox UI theme with agent labels on pane borders.&lt;/p&gt;
&lt;pre class=&quot;language-toml&quot; tabindex=&quot;0&quot;&gt;&lt;code class=&quot;language-toml&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token table class-name&quot;&gt;ui&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;
&lt;span class=&quot;token key property&quot;&gt;status_indicators&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;symbols&quot;&lt;/span&gt;
&lt;span class=&quot;token key property&quot;&gt;show_agent_labels_on_pane_borders&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token boolean&quot;&gt;true&lt;/span&gt;

&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token table class-name&quot;&gt;theme&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;
&lt;span class=&quot;token key property&quot;&gt;name&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;gruvbox&quot;&lt;/span&gt;
&lt;span class=&quot;token key property&quot;&gt;auto_switch&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token boolean&quot;&gt;false&lt;/span&gt;

&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token table class-name&quot;&gt;ui.toast&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;
&lt;span class=&quot;token key property&quot;&gt;delivery&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;terminal&quot;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;I run herdr as a TUI inside the Ghostty terminal. Ghostty reads the same config file my cmux setup already used at &lt;code&gt;~/.config/ghostty/config&lt;/code&gt;, so the terminal look carried over as-is. I only changed the theme to Gruvbox Dark and left everything else default. Here&#39;s how it looks currently, but obviously I will keep improving it:&lt;/p&gt;
&lt;p&gt;&lt;img alt=&quot;Using Herdr in Ghostty&quot; decoding=&quot;async&quot; loading=&quot;eager&quot; fetchpriority=&quot;high&quot; src=&quot;https://assets.deepakness.com/raw/herdr-setup/herdr-in-ghostty.png&quot;&gt;&lt;/p&gt;
&lt;p&gt;Herdr detects the agents in each pane and shows their state, working, blocked, or idle, right in the sidebar. And it&#39;s all just so convenient to use and manage.&lt;/p&gt;
&lt;p&gt;Everything is saved to &lt;code&gt;session.json&lt;/code&gt;, so reopening herdr brings back every workspace exactly as it was, which was the one thing I missed in Kero and it somewhat worked in cmux but wasn&#39;t reliable. I&#39;m still testing it alongside cmux, but it&#39;s looking like it could become my permanent setup, eventually.&lt;/p&gt;
&lt;p&gt;Apart from this, the most clear, to the point, and convincing video I ever watched about herdr is &lt;a href=&quot;https://www.youtube.com/watch?v=qnIu-Xu64H0&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;this one from Jilles&lt;/a&gt;. This video is the reason I installed and started using herdr.&lt;/p&gt;
</content>
  </entry><entry>
    <title>Don&#39;t send report, send prompt instead</title>
    <link href="https://deepakness.com/raw/send-prompt-instead/" />
    <updated>2026-08-20T08:00:31Z</updated>
    <id>https://deepakness.com/raw/send-prompt-instead/</id>
    <summary>This post from Naval made me laugh and it also points out the irony in today&#39;s AI world.</summary>
    <content type="html">&lt;p&gt;&lt;img alt=&quot;Don&#39;t send me the report, just send me the prompt.&quot; decoding=&quot;async&quot; loading=&quot;eager&quot; fetchpriority=&quot;high&quot; src=&quot;https://assets.deepakness.com/raw/send-prompt-instead/naval-quote.png&quot;&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Don&#39;t send me the report, just send me the prompt.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;This &lt;a href=&quot;https://x.com/naval/status/2089273166049009797&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;post on X from Naval&lt;/a&gt; made me laugh that basically points out the irony when people use AI for everything.&lt;/p&gt;
</content>
  </entry><entry>
    <title>Setting up Hetzner Qwen3.8-27B in the Pi agent</title>
    <link href="https://deepakness.com/raw/hetzner-qwen-in-pi/" />
    <updated>2026-08-19T04:47:37Z</updated>
    <id>https://deepakness.com/raw/hetzner-qwen-in-pi/</id>
    <summary>Adding Hetzner&#39;s experimental Inference API as a provider in the Pi coding agent via models.json, with the full config to copy.</summary>
    <content type="html">&lt;p&gt;I added the &lt;a href=&quot;https://docs.hetzner.com/general/company-and-policy/experiments/inference/&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;Hetzner Inference API&lt;/a&gt; as a provider in my &lt;a href=&quot;https://deepakness.com/blog/pi-agent-setup/&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;Pi agent&lt;/a&gt;, the same way I &lt;a href=&quot;https://deepakness.com/raw/nvidia-models-via-opencode/&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;set up NVIDIA models in OpenCode&lt;/a&gt;. Hetzner runs an OpenAI-compatible REST API at &lt;code&gt;inference.hetzner.com&lt;/code&gt; serving open-weight Qwen models. To get an API token you log in to &lt;a href=&quot;https://experiments.hetzner.com/&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;experiments.hetzner.com&lt;/a&gt; and create one from the Inference app there. The service is free while it stays experimental, but you still have to add a credit card to the account before it lets you generate a token. The docs are at Hetzner&#39;s Inference API page linked above.&lt;/p&gt;
&lt;p&gt;Custom providers in pi live in &lt;code&gt;~/.pi/agent/models.json&lt;/code&gt; and the model ID to use is &lt;code&gt;Qwen3.8-27B&lt;/code&gt;, and you can always check the live model list with:&lt;/p&gt;
&lt;pre class=&quot;language-bash&quot; tabindex=&quot;0&quot;&gt;&lt;code class=&quot;language-bash&quot;&gt;&lt;span class=&quot;token function&quot;&gt;curl&lt;/span&gt; &lt;span class=&quot;token parameter variable&quot;&gt;-s&lt;/span&gt; https://inference.hetzner.com/api/v1/models &lt;span class=&quot;token punctuation&quot;&gt;&#92;&lt;/span&gt;
  &lt;span class=&quot;token parameter variable&quot;&gt;-H&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;Authorization: Bearer &amp;lt;YOUR_TOKEN&gt;&quot;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Here is the full provider config:&lt;/p&gt;
&lt;pre class=&quot;language-json&quot; tabindex=&quot;0&quot;&gt;&lt;code class=&quot;language-json&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;&quot;providers&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token property&quot;&gt;&quot;hetzner&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
      &lt;span class=&quot;token property&quot;&gt;&quot;baseUrl&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;https://inference.hetzner.com/api/v1&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
      &lt;span class=&quot;token property&quot;&gt;&quot;api&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;openai-completions&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
      &lt;span class=&quot;token property&quot;&gt;&quot;apiKey&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;&amp;lt;YOUR_TOKEN&gt;&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
      &lt;span class=&quot;token property&quot;&gt;&quot;compat&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
        &lt;span class=&quot;token property&quot;&gt;&quot;supportsDeveloperRole&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token boolean&quot;&gt;false&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
        &lt;span class=&quot;token property&quot;&gt;&quot;supportsReasoningEffort&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token boolean&quot;&gt;false&lt;/span&gt;
      &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
      &lt;span class=&quot;token property&quot;&gt;&quot;models&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;
        &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
          &lt;span class=&quot;token property&quot;&gt;&quot;id&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;Qwen3.8-27B&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
          &lt;span class=&quot;token property&quot;&gt;&quot;name&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;Qwen3.8 27B (Hetzner)&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
          &lt;span class=&quot;token property&quot;&gt;&quot;reasoning&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token boolean&quot;&gt;true&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
          &lt;span class=&quot;token property&quot;&gt;&quot;input&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;text&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;image&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
          &lt;span class=&quot;token property&quot;&gt;&quot;contextWindow&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;262144&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
          &lt;span class=&quot;token property&quot;&gt;&quot;cost&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt; &lt;span class=&quot;token property&quot;&gt;&quot;input&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token property&quot;&gt;&quot;output&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token property&quot;&gt;&quot;cacheRead&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token property&quot;&gt;&quot;cacheWrite&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
        &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
      &lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;The &lt;code&gt;compat&lt;/code&gt; flags tell pi to send a plain &lt;code&gt;system&lt;/code&gt; message instead of the &lt;code&gt;developer&lt;/code&gt; role and to skip the &lt;code&gt;reasoning_effort&lt;/code&gt; field, which the Qwen server does not understand. &lt;code&gt;reasoning: true&lt;/code&gt; enables thinking mode, &lt;code&gt;input&lt;/code&gt; allows text and image messages, and the context window is 262k tokens.&lt;/p&gt;
&lt;p&gt;No restart needed. Open &lt;code&gt;/model&lt;/code&gt; inside pi and the model appears as Qwen3.8 27B (Hetzner), since the file reloads whenever you open the model picker. Keep &lt;code&gt;models.json&lt;/code&gt; readable only by your user because the key sits in plain text. Rate limits are 10 requests and 100k output tokens per minute, and going over returns HTTP 429.&lt;/p&gt;
</content>
  </entry><entry>
    <title>A page for personal websites I like</title>
    <link href="https://deepakness.com/raw/personal-websites-page/" />
    <updated>2026-08-18T02:49:36Z</updated>
    <id>https://deepakness.com/raw/personal-websites-page/</id>
    <summary>Added a personal websites page to the site, collecting websites I like as screenshot cards with homepage snapshots.</summary>
    <content type="html">&lt;p&gt;I added a new page on my site for &lt;a href=&quot;https://deepakness.com/personal-websites/&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;personal websites I like&lt;/a&gt;. Each site gets a card with a snapshot of its homepage, taken the day the site was added, so the screenshot may not match what the site looks like today. The card also shows the site&#39;s dominant background color and how heavy the homepage&#39;s code is, meaning the HTML, CSS, JavaScript and fonts it loads, with images and video excluded.&lt;/p&gt;
&lt;p&gt;&lt;img alt=&quot;Personal sites I like&quot; decoding=&quot;async&quot; loading=&quot;eager&quot; fetchpriority=&quot;high&quot; src=&quot;https://assets.deepakness.com/raw/personal-websites-page/personal-sites.png&quot;&gt;&lt;/p&gt;
&lt;p&gt;The page sorts the cards by name by default, with options to sort by newest or oldest added, plus a filter for the code weight bands. Cards past the second row are deferred with &lt;code&gt;content-visibility: auto&lt;/code&gt;, so the page stays fast as the collection grows.&lt;/p&gt;
&lt;p&gt;I will keep adding interesting personal websites as I discover more.&lt;/p&gt;
</content>
  </entry><entry>
    <title>A clock for DeepSeek&#39;s time-of-day pricing</title>
    <link href="https://deepakness.com/raw/deepseek-price-clock/" />
    <updated>2026-08-22T00:00:00Z</updated>
    <published>2026-08-17T04:53:35Z</published>
    <id>https://deepakness.com/raw/deepseek-price-clock/</id>
    <summary>DeepSeek API pricing now varies by time of day, so I built a clock page to show which half of the day I&#39;m in.</summary>
    <content type="html">&lt;p&gt;DeepSeek &lt;a href=&quot;https://api-docs.deepseek.com/news/news260813/&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;moved its API rates to time-of-day pricing&lt;/a&gt; with the V4 Pro release. The cheap hours cost exactly half of the expensive ones, and the boundaries are fixed in UTC. Anywhere else in the world that means converting in your head every single time, so I built &lt;a href=&quot;https://deepakness.com/deepseek/&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;a DeepSeek peak/off-peak pricing clock page&lt;/a&gt; that shows which half of the day I&#39;m in right now.&lt;/p&gt;
&lt;p&gt;&lt;img alt=&quot;DeepSeek peak/off-peak pricing clock&quot; decoding=&quot;async&quot; loading=&quot;eager&quot; fetchpriority=&quot;high&quot; src=&quot;https://assets.deepakness.com/raw/deepseek-price-clock/ds-peak-time-clock.png&quot;&gt;&lt;/p&gt;
&lt;p&gt;By the way, &lt;a href=&quot;https://deepakness.com/deepseek/&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;you can check the clock here&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;The page shows whether it&#39;s cheap or expensive right now, how long the window lasts, when it flips next in local time, and what both models cost either way. In IST the cheap stretch runs from 3:30 PM to 6:30 AM, with expensive blocks at 6:30–9:30 AM and 11:30 AM–3:30 PM.&lt;/p&gt;
&lt;p&gt;I queue my non-urgent jobs during the cheap half and the bill drops by 50%. I&#39;ve been running V4 Pro as my daily model since &lt;a href=&quot;https://deepakness.com/raw/deepseek-v4-pro/&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;an earlier note&lt;/a&gt;, so the clock has been earning its keep. The rates come straight from &lt;a href=&quot;https://api-docs.deepseek.com/quick_start/pricing&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;the official pricing page&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Update&lt;/strong&gt;: Sat Aug 22, 2026&lt;/p&gt;
&lt;p&gt;DeepSeek &lt;a href=&quot;https://api-docs.deepseek.com/quick_start/pricing&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;changed the weekend rules&lt;/a&gt; barely a week after launching the clock. From 00:00 Beijing time on August 23, 2026, Saturdays and Sundays (Beijing time) are billed at the off-peak rate all day, and the weekday windows stay exactly as they were. In IST the cheap stretch now runs non-stop from Friday 3:30 PM to Monday 6:30 AM. The clock page handles the weekend schedule automatically, so it&#39;s still the one URL to keep open.&lt;/p&gt;
</content>
  </entry>
</feed>
