<?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 - Everything</title>
  <subtitle>Blog posts and raw notes in one feed.</subtitle>
  <link href="https://deepakness.com/feed/archive.xml" rel="self" />
  <link href="https://deepakness.com/archive/" />
  <updated>2026-07-20T01:22:07Z</updated>
  <id>https://deepakness.com/archive/</id>
  <icon>https://deepakness.com/img/deepakness.png</icon>
  <logo>https://deepakness.com/img/deepakness.png</logo>
  <author>
    <name>DeepakNess</name>
  </author>
  <entry>
    <title>Added a paper theme and some other updates</title>
    <link href="https://deepakness.com/raw/added-paper-theme/" />
    <updated>2026-07-20T01:22:07Z</updated>
    <id>https://deepakness.com/raw/added-paper-theme/</id>
    <summary>Added a warm paper reading theme, cleaned up dark mode a bit, and made the header avatar clickable.</summary>
    <content type="html">&lt;p&gt;A few months ago I &lt;a rel=&quot;noreferrer&quot; target=&quot;_blank&quot; href=&quot;https://deepakness.com/raw/added-dark-mode/&quot;&gt;added dark mode&lt;/a&gt; to this site, and yesterday I spent some more time polishing the themes and a few other small things around the site.&lt;/p&gt;
&lt;p&gt;There is now a third option called &lt;strong&gt;paper&lt;/strong&gt; – a warm cream look that feels nicer for longer reading. Links stay monochrome in this mode, so the page feels quieter overall. The theme button in the header now cycles between light, paper, and dark. Paper uses a coffee icon, which somehow felt right for that cozy reading vibe. If you haven&#39;t picked a theme yet, the site still follows your browser preference, and once you choose one it remembers it.&lt;/p&gt;
&lt;p&gt;I also made dark mode a bit more readable – lifted the palette a little, cleaned up muted text, and made code blocks look consistent across all themes instead of shifting around. A few small alignment issues with chips and comment actions are fixed too, so switching themes shouldn&#39;t nudge the layout anymore.&lt;/p&gt;
&lt;p&gt;&lt;img alt=&quot;New header design&quot; decoding=&quot;async&quot; src=&quot;https://assets.deepakness.com/raw/added-paper-theme/new-header.png&quot;&gt;&lt;/p&gt;
&lt;p&gt;Apart from themes, I updated my profile photo in the header. It&#39;s an opaque square photo now, and clicking it opens a larger floating preview. But clicking on the name &quot;DeepakNess&quot; still takes you to the home page – only the photo opens the preview, as you see above.&lt;/p&gt;
&lt;p&gt;Also upgraded a bunch of dependencies and switched the project over to &lt;code&gt;pnpm&lt;/code&gt; while I was at it, but that&#39;s just under the hood.&lt;/p&gt;
&lt;p&gt;You can visit the &lt;a rel=&quot;noreferrer&quot; target=&quot;_blank&quot; href=&quot;https://deepakness.com/colophon/&quot;&gt;colophon&lt;/a&gt; page to see more technical details of the website.&lt;/p&gt;
&lt;p&gt;That&#39;s the update.&lt;/p&gt;
</content>
  </entry>
  <entry>
    <title>SharePDF reaches 350+ users</title>
    <link href="https://deepakness.com/raw/sharepdf-350/" />
    <updated>2026-07-19T15:27:30Z</updated>
    <id>https://deepakness.com/raw/sharepdf-350/</id>
    <summary>SharePDF recently hit 350 users mark, and here&#39;s the progress so far.</summary>
    <content type="html">&lt;p&gt;SharePDF recently hit the 350 users mark, and it makes me so happy about it. This is a kind of my first ever SaaS that I built from scratch with &lt;a rel=&quot;noreferrer&quot; target=&quot;_blank&quot; href=&quot;https://bikashkampo.com&quot;&gt;Bikash&lt;/a&gt;, and seeing this grow this much fills my heart with joy.&lt;/p&gt;
&lt;p&gt;Apart from this, we also completely revamped the UI and UX for SharePDF recently and now all pages follow a different design aesthetic everywhere.&lt;/p&gt;
&lt;p&gt;That&#39;s it.&lt;/p&gt;
&lt;p&gt;That&#39;s the update.&lt;/p&gt;
</content>
  </entry>
  <entry>
    <title>Scraping using Pi agent + Cursor SDK + Codex /goal</title>
    <link href="https://deepakness.com/raw/pi-cursor-codex-scraping/" />
    <updated>2026-07-19T04:17:16Z</updated>
    <id>https://deepakness.com/raw/pi-cursor-codex-scraping/</id>
    <summary>I think I have found the perfect scraping setup using Pi agent, Cursor SDK, and Codex /goal by using Cursor&#39;s Composer 2.5 model.</summary>
    <content type="html">&lt;p&gt;I think, I have found the perfect web scraping setup for myself. Currently, I am using the Cursor SDK via &lt;a rel=&quot;noreferrer&quot; target=&quot;_blank&quot; href=&quot;https://pi.dev/packages/pi-cursor-sdk&quot;&gt;pi-cursor-sdk&lt;/a&gt; and Codex&#39;s /goal via &lt;a rel=&quot;noreferrer&quot; target=&quot;_blank&quot; href=&quot;https://pi.dev/packages/pi-codex-goal&quot;&gt;pi-codex-goal&lt;/a&gt; inside the &lt;a rel=&quot;noreferrer&quot; target=&quot;_blank&quot; href=&quot;https://pi.dev/&quot;&gt;Pi agent&lt;/a&gt; using Cursor&#39;s Composer 2.5 model and doing great so far.&lt;/p&gt;
&lt;p&gt;&lt;img alt=&quot;Running scraping task for 2+ days in Pi agent&quot; decoding=&quot;async&quot; src=&quot;https://assets.deepakness.com/raw/pi-cursor-codex-scraping/pi-scraping-2-days.png&quot;&gt;&lt;/p&gt;
&lt;p&gt;As you can see in the above screenshot, the scraper is running for over 2 days, continuously. It stopped a few times due to the model downtime but then &lt;code&gt;/goal resume&lt;/code&gt; continued right from where it stopped.&lt;/p&gt;
&lt;p&gt;Basically, I am using the Composer 2.5 model from Cursor for this. The model writes the scraping script in Python and then keeps the process running, if it fails for any reason, the model makes necessary changes in the script and keep it running. For the last few days, as you see in the screenshot below, you can see the sudden spike in my usage. I have used more than 1.5 billion tokens as I&#39;m running multiple scrapers at the same time, continuously.&lt;/p&gt;
&lt;p&gt;&lt;img alt=&quot;Cursor AI subscription usage on Pro+ plan&quot; decoding=&quot;async&quot; src=&quot;https://assets.deepakness.com/raw/pi-cursor-codex-scraping/cursor-usage.png&quot;&gt;&lt;/p&gt;
&lt;p&gt;I&#39;m on the Pro+ plan ($60/mo) on Cursor and I think it&#39;s the best value for money AI subscription right now.&lt;/p&gt;
</content>
  </entry>
  <entry>
    <title>macOS 27 Beta dasd eating 40+GB of RAM</title>
    <link href="https://deepakness.com/raw/macos-27-dasd-issues/" />
    <updated>2026-07-16T12:04:47Z</updated>
    <id>https://deepakness.com/raw/macos-27-dasd-issues/</id>
    <summary>Found a solution to macOS 27 Golden Gate developer beta `dasd` process is eating 40+ GB of RAM and Swap.</summary>
    <content type="html">&lt;p&gt;I installed the macOS 27 Golden Gate developer beta from the very start, and now running into this &lt;code&gt;dasd&lt;/code&gt; process consuming too much computer resources most of the time. I thought this will be solved eventually, but it hasn&#39;t been solved in the developer beta 3 or even in the first public beta.&lt;/p&gt;
&lt;p&gt;Earlier, I wasn&#39;t having this issue (but most people are having this from the start) and started having this only after installing the latest update. My MacBook M2 Air 16 GB is now consuming 40+GB of RAM+Swap memory, and computer starts running very slow.&lt;/p&gt;
&lt;p&gt;So... I researched and found &lt;a rel=&quot;noreferrer&quot; target=&quot;_blank&quot; href=&quot;https://www.reddit.com/r/MacOSBeta/comments/1ulupv9/comment/ov7f5w3/&quot;&gt;this Reddit post&lt;/a&gt; where a person shares a solution that many people replied that it worked for them. I also tried the following command, and surprisingly I&#39;m not running into the issue again.&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;rm&lt;/span&gt; &lt;span class=&quot;token parameter variable&quot;&gt;-rf&lt;/span&gt; /private/var/db/powerlog 
&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;You need your admin password to run this, and it didn&#39;t break anything else for me, so it&#39;s safe to run.&lt;/p&gt;
&lt;p&gt;Honestly, I don&#39;t know what it does, but you can look it up.&lt;/p&gt;
&lt;p&gt;Hope this helps.&lt;/p&gt;
</content>
  </entry>
  <entry>
    <title>Got a monitor stand for my desk</title>
    <link href="https://deepakness.com/raw/got-a-monitor-stand/" />
    <updated>2026-07-12T06:57:14Z</updated>
    <id>https://deepakness.com/raw/got-a-monitor-stand/</id>
    <summary>Moved my monitor behind the laptop on a stand so I don&#39;t have to keep turning my head to the right.</summary>
    <content type="html">&lt;p&gt;Earlier, I used to keep my monitor towards the right of my laptop, as you see in the &lt;a rel=&quot;noreferrer&quot; target=&quot;_blank&quot; href=&quot;https://deepakness.com/blog/work-setup/&quot;&gt;old work setup&lt;/a&gt;. But a friend suggested keeping the monitor behind my laptop at some height, and I just got a monitor stand for my desk, as you see below.&lt;/p&gt;
&lt;p&gt;&lt;img alt=&quot;Monitor stand under my Samsung monitor&quot; decoding=&quot;async&quot; src=&quot;https://assets.deepakness.com/raw/got-a-monitor-stand/monitor-stand.jpg&quot;&gt;&lt;/p&gt;
&lt;p&gt;Honestly, it does make my work setup a bit better. I actually feel comfortable working like this because now I don&#39;t have to turn my head towards the right side to look at the monitor.&lt;/p&gt;
&lt;p&gt;And here&#39;s what my current setup looks like now:&lt;/p&gt;
&lt;p&gt;&lt;img alt=&quot;Laptop, monitor, and monitor stand setup on my desk&quot; decoding=&quot;async&quot; src=&quot;https://assets.deepakness.com/raw/got-a-monitor-stand/laptop-monitor.jpg&quot;&gt;&lt;/p&gt;
&lt;p&gt;The wires and all are still a bit messy, but I&#39;m perfectly okay with that. In fact, I love seeing a bit of wires going here and there on the side.&lt;/p&gt;
</content>
  </entry>
  <entry>
    <title>Minimal X v2.4 is here</title>
    <link href="https://deepakness.com/raw/minimal-x-2-4/" />
    <updated>2026-07-12T04:14:09Z</updated>
    <id>https://deepakness.com/raw/minimal-x-2-4/</id>
    <summary>A new version of Minimal X Chrome extension that makes X (Twitter) browsing experience better, is here.</summary>
    <content type="html">&lt;p&gt;Just released a new version of the &lt;a rel=&quot;noreferrer&quot; target=&quot;_blank&quot; href=&quot;https://chromewebstore.google.com/detail/minimal-x/bpneckmaohifnjgbdmmanchmdombmill&quot;&gt;Chrome extension Minimal X&lt;/a&gt; that lets you remove the persistent highlighted section from the &lt;a rel=&quot;noreferrer&quot; target=&quot;_blank&quot; href=&quot;https://x.com/explore&quot;&gt;/explore&lt;/a&gt; page.&lt;/p&gt;
&lt;p&gt;&lt;img alt=&quot;X Explore page Football section&quot; decoding=&quot;async&quot; src=&quot;https://assets.deepakness.com/raw/minimal-x-2-4/explore-football-x.png&quot;&gt;&lt;/p&gt;
&lt;p&gt;For example, currently this football section is highlighted and as I don&#39;t watch football, it&#39;s not useful for me and kind of distracting. So... when you turn on this new option &quot;Start Explore at Today&#39;s News&quot; then the highlighted section is removed and the page starts from the usual Today&#39;s News section.&lt;/p&gt;
&lt;p&gt;I will keep adding more features to make X experience even better.&lt;/p&gt;
</content>
  </entry>
  <entry>
    <title>Using Composer 2.5 as the Worker inside Cursor</title>
    <link href="https://deepakness.com/raw/composer-2-5-worker/" />
    <updated>2026-07-10T11:28:19Z</updated>
    <id>https://deepakness.com/raw/composer-2-5-worker/</id>
    <summary>I keep using different model as the orchestrator, but Composer 2.5 is the best worker model inside Cursor.</summary>
    <content type="html">&lt;p&gt;Earlier I shared my experience about &lt;a rel=&quot;noreferrer&quot; target=&quot;_blank&quot; href=&quot;https://deepakness.com/raw/grok-4-5-first-impressions/&quot;&gt;using the new Grok 4.5 model&lt;/a&gt; and also about my &lt;a rel=&quot;noreferrer&quot; target=&quot;_blank&quot; href=&quot;https://deepakness.com/raw/cursor-orchestrator-worker/&quot;&gt;orchestrator + worker setup&lt;/a&gt; inside Cursor. I was using either GPT-5.5 or Opus 4.8 or even Fable 5 models as orchestrators, but my preferences have recently changed.&lt;/p&gt;
&lt;p&gt;Nowadays, I&#39;m mostly using Grok 4.5 as the orchestrator and sometimes even GPT-5.5 Terra. These models are pretty good at orchestrating bigger, complex tasks. I just add this below line in my prompts in Cursor, and it works flawlessly.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;Delegate heavy works to the Composer 2.5 model.
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;In fact, this trick is working pretty well inside Claude Code as well. I use Fable 5 as the orchestrator and then include the below line in my prompt that hints the agent to use Sonnet 5 as the worker.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;Delegate heavy works to the Sonnet 5 model.
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Since Sonnet 5 is fast, the work is finished faster and often pretty low on the limits as well.&lt;/p&gt;
</content>
  </entry>
  <entry>
    <title>Grok 4.5 first impressions</title>
    <link href="https://deepakness.com/raw/grok-4-5-first-impressions/" />
    <updated>2026-07-08T19:46:22Z</updated>
    <id>https://deepakness.com/raw/grok-4-5-first-impressions/</id>
    <summary>Grok 4.5 is live, and here are my first impressions of the model.</summary>
    <content type="html">&lt;p&gt;Cursor &lt;a rel=&quot;noreferrer&quot; target=&quot;_blank&quot; href=&quot;https://x.com/cursor_ai/status/2074915744999969059&quot;&gt;partnered with SpaceXAI&lt;/a&gt; to train Grok 4.5 and the model &lt;a rel=&quot;noreferrer&quot; target=&quot;_blank&quot; href=&quot;https://x.ai/news/grok-4-5&quot;&gt;is now live&lt;/a&gt;. I just tried it inside Cursor and here are my first impressions:&lt;/p&gt;
&lt;p&gt;It&#39;s not as good as Opus/Fable models when it comes to frontend design related tasks. I asked it to create a few webpages, and the UI is decent but not very good. I will compare its UI design capabilities with GPT-5.5, which is not very good.&lt;/p&gt;
&lt;p&gt;Grok 4.5 is very fast when compared to the latest Opus or GPT models, even without the fast mode turned out. Also, it&#39;s reasonably priced at input $2 per million tokens and output at $6 per million tokens. As of now, I used around 13 million Grok 4.5 tokens inside Cursor, and it has costed me 2.6% of the monthly usage, as you see.&lt;/p&gt;
&lt;p&gt;&lt;img alt=&quot;Grok 4.5 usage in Cursor&quot; decoding=&quot;async&quot; src=&quot;https://assets.deepakness.com/raw/grok-4-5-first-impressions/grok-4-5-cursor.png&quot;&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;As you see above, Grok 4.3 billed inside Cursor as API pricing, but the new Grok 4.5 comes in the Auto + Composer pool.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Grok 4.5 has currently &lt;a rel=&quot;noreferrer&quot; target=&quot;_blank&quot; href=&quot;https://x.com/cursor_ai/status/2074915747302690991&quot;&gt;2x limits inside Cursor&lt;/a&gt; for a week, and is completely free inside Grok Build if you have a paid plan for SuperGrok or X, as announced by the xAI team &lt;a rel=&quot;noreferrer&quot; target=&quot;_blank&quot; href=&quot;https://x.com/veggie_eric/status/2074919353481670978&quot;&gt;in this post&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Apart from this, the new model is &lt;a rel=&quot;noreferrer&quot; target=&quot;_blank&quot; href=&quot;https://www.reddit.com/r/cursor/comments/1ur0f4b/comment/owcdisn/&quot;&gt;1.5T mixture of experts model&lt;/a&gt;, trained from scratch.&lt;/p&gt;
&lt;p&gt;From my limited use, the model feels much better than Composer 2.5, and it feels like I am using GPT-5.5 inside Codex. It&#39;s fast and pretty good with non-frontend related tasks.&lt;/p&gt;
&lt;p&gt;They mention &lt;a rel=&quot;noreferrer&quot; target=&quot;_blank&quot; href=&quot;https://cursor.com/blog/grok-4-5&quot;&gt;in the blog post&lt;/a&gt; that:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Grok 4.5 and Composer 2.5 are two different model weight classes, and we&#39;re excited to support both sizes and weights. Composer 2.5 will remain offered, and we will release new models of this size going forward.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Loved this &lt;a rel=&quot;noreferrer&quot; target=&quot;_blank&quot; href=&quot;https://x.com/rileybrown/status/2074944235577496004&quot;&gt;pricing comparison of Grok 4.5&lt;/a&gt; with other popular models:&lt;/p&gt;
&lt;p&gt;&lt;img alt=&quot;Grok 4.5 pricing comparison with other AI models&quot; decoding=&quot;async&quot; src=&quot;https://assets.deepakness.com/raw/grok-4-5-first-impressions/grok-4-5-pricing.png&quot;&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Update&lt;/strong&gt;: Jul 9, 2026&lt;/p&gt;
&lt;p&gt;The more I use Grok 4.5 the more I love it, and using it inside Cursor makes me feel I am using GPT-5.5 inside Codex. It&#39;s flawless and very reliable as well.&lt;/p&gt;
&lt;p&gt;I think, if you consider the pricing Grok 4.5 is currently the best AI model out there.&lt;/p&gt;
</content>
  </entry>
  <entry>
    <title>Cloudflare introduces Workers Cache</title>
    <link href="https://deepakness.com/raw/cf-workers-cache/" />
    <updated>2026-07-07T10:35:02Z</updated>
    <id>https://deepakness.com/raw/cf-workers-cache/</id>
    <summary>Cloudflare brings a new great feature and it&#39;s called Workers Cache, and it&#39;s going to help me significantly reduce my costs.</summary>
    <content type="html">&lt;p&gt;Cloudflare just introduced &lt;a rel=&quot;noreferrer&quot; target=&quot;_blank&quot; href=&quot;https://developers.cloudflare.com/workers/cache/&quot;&gt;Workers Cache&lt;/a&gt; which, basically, returns cached HTTP responses from the Worker without executing the Worker code first. And it&#39;s going to significantly lower down the running costs, at least for me.&lt;/p&gt;
&lt;p&gt;I found &lt;a rel=&quot;noreferrer&quot; target=&quot;_blank&quot; href=&quot;https://x.com/Jilles/status/2074208431544697037&quot;&gt;a great demo on X&lt;/a&gt;, about how it works.&lt;/p&gt;
&lt;p&gt;I&#39;m still learning about it and will soon implement to all my projects hosted on Cloudflare Workers. There must be more than 10 small-big projects hosted on Workers, and this is going to be a great weekend.&lt;/p&gt;
</content>
  </entry>
  <entry>
    <title>Updated to the macOS 27 Developer Beta 3</title>
    <link href="https://deepakness.com/raw/macos-27-db3/" />
    <updated>2026-07-07T04:37:32Z</updated>
    <id>https://deepakness.com/raw/macos-27-db3/</id>
    <summary>Just updated to the macOS 27 Golden Gate Developer Beta 3, and overall it&#39;s good.</summary>
    <content type="html">&lt;p&gt;I just updated my MacBook M2 Air to the latest macOS 27 Golden Gate Developer Beta 3 and loving it so far. Love the wallpaper and everything else.&lt;/p&gt;
&lt;p&gt;&lt;img alt=&quot;macOS 27 Golden Gate Developer Beta 3 on MacBook M2 Air&quot; decoding=&quot;async&quot; src=&quot;https://assets.deepakness.com/raw/macos-27-db3/macos-27-db3.png&quot;&gt;&lt;/p&gt;
&lt;p&gt;For some reason, I like macOS 27 Golden Gate more than the previous macOS 26 Tahoe. Even though 27 is in developer beta, it&#39;s still very good and feels better to use.&lt;/p&gt;
</content>
  </entry>
  <entry>
    <title>Cursor orchestrator and worker setup</title>
    <link href="https://deepakness.com/raw/cursor-orchestrator-worker/" />
    <updated>2026-07-03T02:03:00Z</updated>
    <id>https://deepakness.com/raw/cursor-orchestrator-worker/</id>
    <summary>A brief .cursor setup where a strong model orchestrates and Composer 2.5 standard subagents do the scoped work.</summary>
    <content type="html">&lt;p&gt;After &lt;a rel=&quot;noreferrer&quot; target=&quot;_blank&quot; href=&quot;https://x.com/ericzakariasson/status/2072639126034137444&quot;&gt;this post from Eric&lt;/a&gt;, I wanted a simple Cursor setup where a strong model plans and delegates, and a cheaper worker does the actual edits. The pattern: pick your orchestrator in the model picker, add custom subagents pinned to &lt;code&gt;composer-2.5[fast=false]&lt;/code&gt;, and attach a manual rule only when you want delegation.&lt;/p&gt;
&lt;p&gt;Although, I am not using the Fable model, but it still works pretty well. First, I &lt;a rel=&quot;noreferrer&quot; target=&quot;_blank&quot; href=&quot;https://x.com/DeepakNesss/status/2072824646500843888&quot;&gt;tried the GPT-5.5-Medium&lt;/a&gt; model as the orchestrator, but later I shifted using the Opus-4.8-High as it seemed a bit better and cheaper in Cursor.&lt;/p&gt;
&lt;p&gt;&lt;img alt=&quot;Cursor orchestrator and worker setup&quot; decoding=&quot;async&quot; src=&quot;https://assets.deepakness.com/raw/cursor-orchestrator-worker/cursor-orchestrator-worker.png&quot;&gt;&lt;/p&gt;
&lt;p&gt;Here&#39;s the folder structure:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;.cursor/
├── agents/
│   ├── implementer.md
│   ├── auditor.md
│   └── verifier.md
└── rules/
    └── orchestrator-worker.mdc
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;First, I created this file &lt;code&gt;.cursor/rules/orchestrator-worker.mdc&lt;/code&gt; with the following contents:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;---
description: Strong model orchestrates; Composer 2.5 standard subagents do scoped work. Apply manually with @orchestrator-worker.
---

# Orchestrator / worker mode

Activate only when this rule is attached.

## Models

- **Orchestrator (parent):** your strong model in the picker (e.g. `claude-opus-4-8-thinking-high`)
- **Workers:** `composer-2.5[fast=false]` – pinned in `.cursor/agents/`

## Parent

Plan, decompose, delegate, and review. Give each worker one concern, enough context, a definition of done, and a short report. Run independent pieces in parallel. Review before merging. Keep work on the parent when judgment is the whole job.

Do not spawn built-in `explore` or `generalPurpose` subagents – they default to Composer Fast.

## Workers

| Subagent      | Use for                                    |
| ------------- | ------------------------------------------ |
| `implementer` | Code edits, refactors, tests, file changes |
| `auditor`     | Read-only audits and exploration           |
| `verifier`    | Post-implementation review                 |
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Then created the implementer subagent &lt;code&gt;.cursor/agents/implementer.md&lt;/code&gt; with the following contents:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;---
name: implementer
description: Implementation specialist. Use for code edits, refactors, tests, and file changes once a plan exists.
model: composer-2.5[fast=false]
---

You are the implementation worker.

- Execute the parent&#39;s plan: edit files, run targeted tests, fix failures.
- Follow existing project conventions before adding new patterns.
- Return a concise summary: what changed, tests run, blockers.
- Prefer the smallest correct diff. Do not replan unless blocked.
- Do not create git commits unless the parent asks.
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Then the auditor subagent &lt;code&gt;.cursor/agents/auditor.md&lt;/code&gt; with read-only access:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;---
name: auditor
description: Read-only auditor. Use for audits, exploration, and reviews instead of built-in explore.
model: composer-2.5[fast=false]
readonly: true
---

You are a read-only audit subagent.

- Explore assigned domains thoroughly. Never edit files.
- Report severity, location, finding, and recommendation for each issue.
- End with a brief domain summary.
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Lastly, the verifier subagent &lt;code&gt;.cursor/agents/verifier.md&lt;/code&gt;, again with read-only access:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;---
name: verifier
description: Read-only reviewer. Use after implementation to check work matches the plan.
model: composer-2.5[fast=false]
readonly: true
---

You are a read-only verification subagent.

- Compare implementation against the parent&#39;s plan or acceptance criteria.
- Check tests cover the change when applicable.
- Return verdict (pass / pass with notes / fail) and gaps. Do not edit files.
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Because &lt;code&gt;model: composer-2.5&lt;/code&gt; alone was still resolving to Fast-mode, I have used &lt;code&gt;composer-2.5[fast=false]&lt;/code&gt; explicitly as the model string, as you see above.&lt;/p&gt;
&lt;p&gt;I only use this orchestrator-worker setup when needed, and not all the time. Here&#39;s how I do it:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;New Agent chat → pick the &lt;strong&gt;orchestrator model&lt;/strong&gt; in the model picker&lt;/li&gt;
&lt;li&gt;Type &lt;code&gt;@orchestrator-worker&lt;/code&gt; and my task&lt;/li&gt;
&lt;li&gt;Parent plans → &lt;code&gt;implementer&lt;/code&gt; codes → optional &lt;code&gt;verifier&lt;/code&gt; reviews&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;I prompt something like this:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;@orchestrator-worker Refactor the auth module.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;And for normal single-agent work, I would skip &lt;code&gt;@orchestrator-worker&lt;/code&gt; and use any model directly (mostly Composer 2.5 itself).&lt;/p&gt;
&lt;p&gt;Lastly, if you&#39;re using this you can also add your project-specific details anywhere it helps:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;orchestrator-worker.mdc&lt;/code&gt;&lt;/strong&gt; – your orchestrator model slug, stack-specific delegation rules&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Subagent files&lt;/strong&gt; – test commands, commit rules, security checks, framework conventions&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;AGENTS.md&lt;/code&gt;&lt;/strong&gt; (optional, repo root) – build commands, folder layout, code style; stays on without forcing orchestration&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The rule is manual-only, so it doesn&#39;t affect every chat.&lt;/p&gt;
&lt;p&gt;If you&#39;re setting this up, just give the link to this post to your Cursor agent and ask it to set everything up for your project. And you can also &lt;a rel=&quot;noreferrer&quot; target=&quot;_blank&quot; href=&quot;https://cursor.com/docs/subagents&quot;&gt;visit Cursor&#39; docs about subagents&lt;/a&gt; for more info on how to set everything up in a better way.&lt;/p&gt;
</content>
  </entry>
  <entry>
    <title>Does AI makes you less productive?</title>
    <link href="https://deepakness.com/raw/ai-less-productive/" />
    <updated>2026-07-01T01:50:33Z</updated>
    <id>https://deepakness.com/raw/ai-less-productive/</id>
    <summary>Read this interesting post from Dominik Sobe about AI makes him work more but feel less accomplished.</summary>
    <content type="html">&lt;p&gt;Came across &lt;a rel=&quot;noreferrer&quot; target=&quot;_blank&quot; href=&quot;https://x.com/sobedominik/status/2071881679317414325&quot;&gt;this post from Dominik Sobe on X&lt;/a&gt;, and liked how he explains that he gets to do more with AI but still feels less accomplished. I am going to copy the post content here:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;AI lowkey fu**ed up my productivity in a way I didn’t expect and I’m not sure how to feel about it.&lt;/p&gt;
&lt;p&gt;On any given day:&lt;/p&gt;
&lt;p&gt;I code more than ever.&lt;/p&gt;
&lt;p&gt;I ship features faster than ever.&lt;/p&gt;
&lt;p&gt;I do more marketing than ever before.&lt;/p&gt;
&lt;p&gt;I even make slightly more money than before.&lt;/p&gt;
&lt;p&gt;Yet, I feel like I have achieved nothing at the end of the day.&lt;/p&gt;
&lt;p&gt;I go to bed lots of times lately feeling unaccomplished.&lt;/p&gt;
&lt;p&gt;There’s this lingering thought of I could’ve done more.&lt;/p&gt;
&lt;p&gt;Run more agents in parallel, run them while I’m eating, while being in the gym, heck they should do work while I sleep! You get the gist.&lt;/p&gt;
&lt;p&gt;It sometimes drives me nuts lol&lt;/p&gt;
&lt;p&gt;I remember days pre AI where I’d work on a feature for an entire week (that now takes me less than a day) and still go to bed feeling great and happy.&lt;/p&gt;
&lt;p&gt;Now, there’s seemingly never enough.&lt;/p&gt;
&lt;p&gt;What do I do to fix this? Anyone else having similar feelings?&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;I like this post a lot.&lt;/p&gt;
</content>
  </entry>
  <entry>
    <title>Found this The Aptness of Anger paper</title>
    <link href="https://deepakness.com/raw/the-aptness-of-anger-notes/" />
    <updated>2026-06-30T07:51:17Z</updated>
    <id>https://deepakness.com/raw/the-aptness-of-anger-notes/</id>
    <summary>I am reading this interesting paper titled The Aptness of Anger by Amia Srinivasan and loving it so far.</summary>
    <content type="html">&lt;p&gt;YouTube recommended me &lt;a rel=&quot;noreferrer&quot; target=&quot;_blank&quot; href=&quot;https://www.youtube.com/watch?v=P8KI3CzWLi0&quot;&gt;this video&lt;/a&gt;, and then I discovered Amia Srinivasan&#39;s paper titled &lt;a rel=&quot;noreferrer&quot; target=&quot;_blank&quot; href=&quot;https://discovery.ucl.ac.uk/id/eprint/1542193/1/The%20Aptness%20of%20Anger_Current.pdf&quot;&gt;The Aptness of Anger&lt;/a&gt; and liked its abstract (copied below) so much that I decided to read it whole.&lt;/p&gt;
&lt;p&gt;While the paper is about a simple topic, it&#39;s still an interesting read (I&#39;m halfway through it). The main point of the paper is that getting angry about unfairness is a valid and correct response, even if the anger does not help solve the problem. Basically, the author argues that we should not only judge anger by whether it is &quot;useful&quot; but we should also respect anger when it is the truthful emotional response to an unjust world.&lt;/p&gt;
&lt;p&gt;If you love the topic, you&#39;ll love reading it.&lt;/p&gt;
</content>
  </entry>
  <entry>
    <title>Using Cursor Pro+ plan this time</title>
    <link href="https://deepakness.com/raw/using-cursor-pro-plus/" />
    <updated>2026-06-28T00:08:27Z</updated>
    <id>https://deepakness.com/raw/using-cursor-pro-plus/</id>
    <summary>Last month I subscribed to Cursor&#39;s Pro plan and loved it, so this month I&#39;ve got the Pro+ plan and loving it even more.</summary>
    <content type="html">&lt;p&gt;Last month, I &lt;a rel=&quot;noreferrer&quot; target=&quot;_blank&quot; href=&quot;https://deepakness.com/raw/cursor-value-for-money/&quot;&gt;subscribed to Cursor&#39;s Pro plan&lt;/a&gt; for $20 a month and absolutely loved using the Composer 2.5 model. I used more than 700 million tokens on the plan with a mix of Auto, Composer 2.5, Composer 2.5 Fast, Opus 4.8, and GPT-5.5 models.&lt;/p&gt;
&lt;p&gt;So... this month I decided to get the Cursor&#39;s Pro+ plan for $60 a month, and it&#39;s been great so far. In just a day, I have used more than 175 million tokens across Composer 2.5 standard and fast models, as you see in the screenshot here.&lt;/p&gt;
&lt;p&gt;&lt;img alt=&quot;Cursor&#39;s Pro+ plan usage&quot; decoding=&quot;async&quot; src=&quot;https://assets.deepakness.com/raw/using-cursor-pro-plus/pro-plus-usage.png&quot;&gt;&lt;/p&gt;
&lt;p&gt;Currently, I am also subscribed to Claude $100 plan that I use mostly for frontend design and then use Composer 2.5 for everything else. I was also subscribed to Codex $100 plan, but the subscription ended a week ago, and I think I am good with the current setup (until next month, of course).&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;By the way, I track how I am currently using AI on this regularly updated page that you might find useful.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Coming back to the current setup, Composer 2.5 has been pretty good. I don&#39;t give it very large prompts but ask it to make small changes, and it&#39;s been great so far. This &lt;a rel=&quot;noreferrer&quot; target=&quot;_blank&quot; href=&quot;https://saathi.fyi&quot;&gt;saathi.fyi&lt;/a&gt; project that I am working on with &lt;a rel=&quot;noreferrer&quot; target=&quot;_blank&quot; href=&quot;https://amitsarda.xyz&quot;&gt;Amit&lt;/a&gt;, is almost entirely built by Cursor after the initial frontend design by Claude.&lt;/p&gt;
</content>
  </entry>
  <entry>
    <title>Launching Minimal X 2.0</title>
    <link href="https://deepakness.com/raw/minimal-x-2-0/" />
    <updated>2026-06-24T03:41:36Z</updated>
    <id>https://deepakness.com/raw/minimal-x-2-0/</id>
    <summary>A major update to my Chrome extension that declutters X.com with simple toggles for ads, engagement noise, trends, and more.</summary>
    <content type="html">&lt;p&gt;I use X.com fairly often, but the interface keeps getting noisier – promoted posts, engagement counts, Grok buttons, the trends sidebar, chat drawers, and whatnot. I had already built &lt;a rel=&quot;noreferrer&quot; target=&quot;_blank&quot; href=&quot;https://chromewebstore.google.com/detail/minimal-x-hide-xcom-right/bpneckmaohifnjgbdmmanchmdombmill&quot;&gt;Minimal X&lt;/a&gt; a while ago to hide some of that clutter, but v1 was pretty basic. It just ran always-on with no settings.&lt;/p&gt;
&lt;p&gt;&lt;img alt=&quot;Minimal X 2.0 Chrome Extension&quot; decoding=&quot;async&quot; src=&quot;https://assets.deepakness.com/raw/minimal-x-2-0/minimal-x-chrome-extension.png&quot;&gt;&lt;/p&gt;
&lt;p&gt;So I rebuilt it as v2.0. Now there&#39;s a popup with toggles for every cleanup option, sensible defaults, and you can turn individual things on or off. By default it hides promoted posts, share buttons, Grok actions, Grok/Chat drawers, the right rail, and uses a compact icon-only left sidebar. You can also optionally hide engagement counts, the home composer, the new-post pill, and extra nav items like Grok, Premium, Creator Studio, and Articles.&lt;/p&gt;
&lt;p&gt;Some of the things v2 can do:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Hide promoted timeline posts and Explore promotions&lt;/li&gt;
&lt;li&gt;Hide share buttons and Grok action buttons on posts&lt;/li&gt;
&lt;li&gt;Hide the right rail, including trends, verified orgs, and footer clutter&lt;/li&gt;
&lt;li&gt;Use a compact icon-only sidebar (notification badges still work)&lt;/li&gt;
&lt;li&gt;Optionally hide reply, repost, like, bookmark, and view counts&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;It&#39;s lightweight, runs only on x.com, and doesn&#39;t collect any data. Settings are saved with Chrome sync.&lt;/p&gt;
&lt;p&gt;I&#39;ve been using it daily for the last few days and the calmer timeline is honestly hard to go back from. If you try it, let me know what you think.&lt;/p&gt;
</content>
  </entry>
  <entry>
    <title>I Bought a $100 Laptop – Mid 2014 MacBook Pro</title>
    <link href="https://deepakness.com/blog/mbp-mid-2014/" />
    <updated>2026-06-21T00:49:52Z</updated>
    <id>https://deepakness.com/blog/mbp-mid-2014/</id>
    <summary>Saw an ad and immediately bought an old MacBook Pro (Retina, 15-inch, Mid 2014), and I&#39;m super happy about it.</summary>
    <content type="html">&lt;p&gt;Two days ago, I was at home and ordered food online. I went to pre-approve the delivery on the apartment&#39;s app, and saw an ad selling an old MacBook Pro (Retina, 15-inch, Mid 2014, 16 GB RAM, 120 GB SSD) for only ₹12,000 (~$130) from another resident. I inquired immediately and went there to take a look at it.&lt;/p&gt;
&lt;p&gt;The laptop seemed in good condition, I used it for a bit, checked random stuff, and then was ready to buy. I was ready to pay the listed price, but then just asked if they could lower the price to ₹9,000 (~$100) and they agreed immediately. I, then, paid the price and took this 12-year-old laptop home, with its original charger.&lt;/p&gt;
&lt;p&gt;When I asked, their main reason for selling was that they weren&#39;t able to install newer apps – the laptop was still running macOS Big Sur, the last official update from Apple. For me, before my current MacBook Air M2, I had never used any Apple product, so I was just curious about this decade-old laptop.&lt;/p&gt;
&lt;p&gt;By the way, this is how the laptop looks. I absolutely love the backlit Apple logo here.&lt;/p&gt;
&lt;p&gt;&lt;img alt=&quot;Apple MacBook Pro Mid-2014, Lit Apple Logo&quot; decoding=&quot;async&quot; src=&quot;https://assets.deepakness.com/blog/mbp-mid-2014/backlit-logo.jpg&quot;&gt;&lt;/p&gt;
&lt;p&gt;After getting the laptop, I researched a bit about it and used the &lt;a rel=&quot;noreferrer&quot; target=&quot;_blank&quot; href=&quot;https://dortania.github.io/OpenCore-Legacy-Patcher/&quot;&gt;OpenCore Legacy Patcher (OCLP)&lt;/a&gt; and upgraded to macOS Ventura 13.7.8 and it&#39;s running fine so far. I tried installing the Codex app and a few other apps on it and they all work as expected, no lag or slowness at all. Obviously, it&#39;s not as powerful as my M2 Air, but it&#39;s more than worth the price I paid.&lt;/p&gt;
&lt;p&gt;&lt;img alt=&quot;MacOS Ventura on Mid 2014 MacBook Pro via OpenCore&quot; decoding=&quot;async&quot; src=&quot;https://assets.deepakness.com/blog/mbp-mid-2014/macos-ventura.png&quot;&gt;&lt;/p&gt;
&lt;p&gt;I haven&#39;t spent much time on it yet, but it seems like a good machine. It&#39;s heavy, but I can keep it open on my desk and use it for scraping or some long-running tasks, so I don&#39;t have to keep my main laptop running (Codex /goal, I&#39;m looking at you).&lt;/p&gt;
&lt;p&gt;I even tried installing &lt;a rel=&quot;noreferrer&quot; target=&quot;_blank&quot; href=&quot;https://omarchy.deepakness.com&quot;&gt;Omarchy Linux&lt;/a&gt; on an external SSD connected to the laptop, and it works fine as expected. Here&#39;s a picture of it booted into the &lt;a rel=&quot;noreferrer&quot; target=&quot;_blank&quot; href=&quot;https://omarchy.org&quot;&gt;Omarchy OS&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;img alt=&quot;Omarchy OS on MacBook Pro from Mid 2014&quot; decoding=&quot;async&quot; src=&quot;https://assets.deepakness.com/blog/mbp-mid-2014/omarchy.jpg&quot;&gt;&lt;/p&gt;
&lt;p&gt;The speakers aren&#39;t great, but that&#39;s not an issue because that&#39;s not what I got it for.&lt;/p&gt;
&lt;p&gt;For now, I will keep exploring things I can do with this second laptop.&lt;/p&gt;
&lt;p&gt;Let&#39;s see how it goes.&lt;/p&gt;
</content>
  </entry>
  <entry>
    <title>Best web scraping workflow using Codex</title>
    <link href="https://deepakness.com/raw/codex-data-scraping/" />
    <updated>2026-06-18T03:11:09Z</updated>
    <id>https://deepakness.com/raw/codex-data-scraping/</id>
    <summary>I think, I have finally discovered the best way to scrape data from the web with the help of Codex.</summary>
    <content type="html">&lt;p&gt;I needed to scrape 10s of thousands of rows of data from a website with strict rate-limits and all. Earlier, I would have used a tool like Octoparse for this, but this time I asked OpenAI&#39;s Codex to do it.&lt;/p&gt;
&lt;p&gt;I asked the agent to scrape the website with required data points by sending it a very simple 1 line prompt:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;scrape all pages from XYZ website with all important data points, start this as a /goal and don&#39;t stop until all required and important information is scraped.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;img alt=&quot;Web scraping using Codex&quot; decoding=&quot;async&quot; src=&quot;https://assets.deepakness.com/raw/codex-data-scraping/scraping-using-codex.png&quot;&gt;&lt;/p&gt;
&lt;p&gt;And Codex started the process as goal that &lt;strong&gt;ran for more than 13 hours 46 minutes and used only 757k tokens&lt;/strong&gt;. Because AI itself wasn&#39;t scraping the website, but Codex generated and executed the scraper, monitored failures, patched the code, handled 404/410 cases, adjusted for rate limits, added fallback logic, exported the dataset, and ran strict validation.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;write code → run it → inspect errors → patch code → resume → validate → repeat&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Next time, if I have to refresh the scraped data from the website, I just have to run &lt;code&gt;python scraper.py&lt;/code&gt; and it will run without errors as Codex has perfected the script now.&lt;/p&gt;
&lt;p&gt;Cool, right?&lt;/p&gt;
</content>
  </entry>
  <entry>
    <title>Access Telegram without VPN from India</title>
    <link href="https://deepakness.com/raw/telegram-banned-in-india/" />
    <updated>2026-06-17T06:40:11Z</updated>
    <id>https://deepakness.com/raw/telegram-banned-in-india/</id>
    <summary>After the Indian government banned Telegram in India, there&#39;s a legit way to access Telegram without using VPN.</summary>
    <content type="html">&lt;p&gt;The Indian government has &lt;a rel=&quot;noreferrer&quot; target=&quot;_blank&quot; href=&quot;https://x.com/durov/status/2066879467054649639&quot;&gt;banned Telegram in India&lt;/a&gt; for a limited time and the ban is implemented to prevent organized cheating rackets and misinformation ahead of the NEET-UG re-examination. I don&#39;t think this is a sensible solution, because my work is affected as I did all my work related communication in Telegram.&lt;/p&gt;
&lt;p&gt;While I have now fully moved to Signal, here&#39;s a trick to still use Telegram in India without using VPN but using the &lt;a rel=&quot;noreferrer&quot; target=&quot;_blank&quot; href=&quot;https://developers.cloudflare.com/1.1.1.1/&quot;&gt;Cloudflare 1.1.1.1 DNS resolver&lt;/a&gt;. I tried this both on my macOS laptop and also on my Android device, and it works as expected.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;On my macOS device:&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;I &lt;a rel=&quot;noreferrer&quot; target=&quot;_blank&quot; href=&quot;https://one.one.one.one&quot;&gt;downloaded the macOS app&lt;/a&gt; for my device and installed it and just connected as &lt;code&gt;Traffic and DNS (UDP)&lt;/code&gt; as you see in the screenshot here.&lt;/p&gt;
&lt;p&gt;&lt;img alt=&quot;Cloudflare Proxy connected on Cloudflare&quot; decoding=&quot;async&quot; src=&quot;https://assets.deepakness.com/raw/telegram-banned-in-india/cloudflare-proxy-connected-macos.png&quot;&gt;&lt;/p&gt;
&lt;p&gt;After that I opened the Telegram app, and it got connected and started working after a few seconds.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;On my Android device:&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;I already had the 1.1.1.1 app installed on my Android device, but that&#39;s not available on Google Play Store anymore. However, there&#39;s a very simple way to &lt;a rel=&quot;noreferrer&quot; target=&quot;_blank&quot; href=&quot;https://developers.cloudflare.com/1.1.1.1/setup/android/&quot;&gt;do a manual setup on Android&lt;/a&gt; in their official docs that you can follow.&lt;/p&gt;
&lt;p&gt;After the setup, just open the Telegram app, and it works as expected.&lt;/p&gt;
&lt;p&gt;Hope this helps.&lt;/p&gt;
</content>
  </entry>
  <entry>
    <title>No Thanks, ChatGPT 3.0.0 is here</title>
    <link href="https://deepakness.com/raw/no-thanks-chatgpt-3-0-0/" />
    <updated>2026-06-11T10:22:21Z</updated>
    <id>https://deepakness.com/raw/no-thanks-chatgpt-3-0-0/</id>
    <summary>I just released a new version of the No Thanks, ChatGPT Chrome extension and it now also supports exporting chats.</summary>
    <content type="html">&lt;p&gt;I just released v3.0.0 of &lt;strong&gt;No Thanks, ChatGPT&lt;/strong&gt;, my small Chrome extension that removes annoying popups and interruptions on ChatGPT.&lt;/p&gt;
&lt;p&gt;Earlier, it mostly did one thing: keep ChatGPT quieter when browsing while logged out. It dismissed things like the &quot;Thanks for trying ChatGPT&quot; dialog, signup prompts, cookie banners, sidebar upsells, and similar interruptions.&lt;/p&gt;
&lt;p&gt;But now it does one more useful thing.&lt;/p&gt;
&lt;p&gt;You can &lt;strong&gt;export ChatGPT conversations&lt;/strong&gt; locally.&lt;/p&gt;
&lt;p&gt;The new version adds a small export button inside ChatGPT, and the extension popup also has the same export options. You can export the currently loaded conversation as:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Markdown&lt;/li&gt;
&lt;li&gt;JSON&lt;/li&gt;
&lt;li&gt;HTML&lt;/li&gt;
&lt;li&gt;TXT&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;It keeps clear User and Assistant turns, and tries to preserve common formatting like headings, lists, links, tables, and code blocks.&lt;/p&gt;
&lt;p&gt;I wanted to keep this privacy-friendly, so the export happens locally in the browser. There is no backend, no analytics, no storage permission, no downloads permission, and no external network request. It just reads the conversation already rendered on the page when you click Copy or Export.&lt;/p&gt;
&lt;p&gt;I also updated the extension icon because it is now more than just a &quot;no thanks&quot; popup blocker. It is still a tiny extension, but now it feels more like a useful ChatGPT utility.&lt;/p&gt;
&lt;p&gt;You can get it from the &lt;a rel=&quot;noreferrer&quot; target=&quot;_blank&quot; href=&quot;https://chromewebstore.google.com/detail/no-thanks-chatgpt/nmgfghmecclnpobkngegmeaimijaojag&quot;&gt;Chrome Web Store here&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;And the source is on GitHub: &lt;a rel=&quot;noreferrer&quot; target=&quot;_blank&quot; href=&quot;https://github.com/deepakness/no-thanks-chatgpt&quot;&gt;https://github.com/deepakness/no-thanks-chatgpt&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;I will be adding more features soon.&lt;/p&gt;
</content>
  </entry>
  <entry>
    <title>Hardening a VPS with Tailscale</title>
    <link href="https://deepakness.com/raw/hetzner-vps-tailscale/" />
    <updated>2026-06-08T03:28:52Z</updated>
    <id>https://deepakness.com/raw/hetzner-vps-tailscale/</id>
    <summary>Hardening a public VPS by moving admin panels behind Tailscale while keeping websites public.</summary>
    <content type="html">&lt;p&gt;I recently hardened this Hetzner VPS after realizing that keeping admin panels open to the whole internet is just unnecessary risk. And honestly, &lt;a rel=&quot;noreferrer&quot; target=&quot;_blank&quot; href=&quot;https://x.com/levelsio/status/2033546675063554213&quot;&gt;@levelsio gave me the idea&lt;/a&gt; to use Tailscale from a few posts he made about this on X.&lt;/p&gt;
&lt;p&gt;On this VPS, I still have a few WordPress sites hosted through a control panel, and I wanted to make the server safer without deleting websites, moving data, or breaking normal access.&lt;/p&gt;
&lt;p&gt;The main idea was simple: websites stay public, admin access becomes private. Ports 80 and 443 stay open because visitors need them. DNS, public web traffic, nothing changes from the outside.&lt;/p&gt;
&lt;p&gt;But the control panel on its admin port, the web server admin panel, and SSH don&#39;t need to be open to every random scanner on the internet. Those are management interfaces, not public website features.&lt;/p&gt;
&lt;p&gt;Tailscale gives the VPS a private network address that only approved devices can reach. So I can open the control panel from my computer through the Tailscale IP, but someone scanning the public VPS IP cannot hit the login page anymore.&lt;/p&gt;
&lt;p&gt;The important part is the order. Don&#39;t close public SSH first – that&#39;s how you lock yourself out.&lt;/p&gt;
&lt;p&gt;The safe order I followed:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;take a snapshot first&lt;/li&gt;
&lt;li&gt;then install Tailscale on the VPS and add it to your account (disable key expiry)&lt;/li&gt;
&lt;li&gt;install Tailscale on your local machine&lt;/li&gt;
&lt;li&gt;test that the control panel, web server admin, and SSH all work through the Tailscale IP&lt;/li&gt;
&lt;li&gt;disable anything unused like FTP&lt;/li&gt;
&lt;li&gt;restrict the admin ports&lt;/li&gt;
&lt;li&gt;and only after all of that, restrict public SSH&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;For Tailscale, I used &lt;code&gt;--accept-dns=false&lt;/code&gt; because I didn&#39;t want it changing DNS behavior on the VPS. This server hosts websites and mail, so the change needed to be narrow: add private access, don&#39;t surprise anything else.&lt;/p&gt;
&lt;p&gt;For SSH, I used a rollback safety net: a systemd timer that automatically reopens public SSH after 3 minutes if I got locked out. After removing public SSH, I immediately tested both Tailscale SSH (should work) and public SSH (should fail). Only after confirming Tailscale SSH works, cancel the rollback timer.&lt;/p&gt;
&lt;p&gt;A few things to remember: keep cloud console/rescue access available as a backdoor, keep Tailscale running on your machine before trying SSH or admin panels, firewall rules aren&#39;t active until you reload, and always test websites after any firewall change.&lt;/p&gt;
&lt;p&gt;This isn&#39;t the same as rebuilding a compromised server. It&#39;s a practical hardening pass. But for a VPS that needs to keep running websites, it&#39;s a big improvement: keep the public web public, and make the sensitive admin stuff reachable only from your own devices.&lt;/p&gt;
</content>
  </entry>
  <entry>
    <title>Using the Composer 2.5 model in Pi agent harness</title>
    <link href="https://deepakness.com/raw/pi-composer-2-5/" />
    <updated>2026-06-02T14:25:47Z</updated>
    <id>https://deepakness.com/raw/pi-composer-2-5/</id>
    <summary>The best way to use Composer 2.5 inside the Pi coding agent harness via official Cursor agent SDK.</summary>
    <content type="html">&lt;p&gt;Cursor released the Composer 2.5 model a while ago, and it&#39;s very capable model while being super cheap. And since I also love the &lt;a rel=&quot;noreferrer&quot; target=&quot;_blank&quot; href=&quot;https://deepakness.com/blog/pi-agent-setup/&quot;&gt;Pi coding agent&lt;/a&gt;, I wanted to use the Composer 2.5 model inside Pi and found the perfect solution for it.&lt;/p&gt;
&lt;p&gt;It&#39;s called &lt;a rel=&quot;noreferrer&quot; target=&quot;_blank&quot; href=&quot;https://github.com/fitchmultz/pi-cursor-sdk&quot;&gt;pi-cursor-sdk&lt;/a&gt; and is created by &lt;a rel=&quot;noreferrer&quot; target=&quot;_blank&quot; href=&quot;https://x.com/fitchmultz&quot;&gt;Mitch Fultz&lt;/a&gt;. It uses the official Cursor SDK so &lt;a rel=&quot;noreferrer&quot; target=&quot;_blank&quot; href=&quot;https://x.com/fitchmultz/status/2061779337549087208&quot;&gt;Cursor&#39;s agent loop and tools are still used&lt;/a&gt; when using the model via the Pi agent. And it&#39;s a great thing because Cursor has one of the best agent harnesses out there.&lt;/p&gt;
&lt;p&gt;I have been using it for the last few days, and it works flawlessly.&lt;/p&gt;
</content>
  </entry>
  <entry>
    <title>Trying the new MiniMax M3 model via OpenCode</title>
    <link href="https://deepakness.com/raw/trying-minimax-m3/" />
    <updated>2026-06-02T06:11:23Z</updated>
    <id>https://deepakness.com/raw/trying-minimax-m3/</id>
    <summary>MiniMax M3 model was released a day ago and it&#39;s a good model, especially for UI design.</summary>
    <content type="html">&lt;p&gt;MiniMax M3 was &lt;a rel=&quot;noreferrer&quot; target=&quot;_blank&quot; href=&quot;https://www.minimax.io/blog/minimax-m3&quot;&gt;released a day ago&lt;/a&gt;, and currently it&#39;s available in OpenCode for free for the last 2-3 days (yes, from even before the release). I, finally, gave it a try and it&#39;s so good, at least at UI design.&lt;/p&gt;
&lt;p&gt;For example, &lt;a rel=&quot;noreferrer&quot; target=&quot;_blank&quot; href=&quot;https://incomparable-concha-d82f3f.netlify.app&quot;&gt;I created this website&lt;/a&gt; using &lt;a rel=&quot;noreferrer&quot; target=&quot;_blank&quot; href=&quot;https://x.com/DeepakNesss/status/2061440252787741002&quot;&gt;just two prompts&lt;/a&gt; (will share below) and it looks stunning. I am damn sure that Codex could never do this, and it&#39;s just Opus 4.8 level design but a lot cheaper. I have also taken a full page screenshot that you see here.&lt;/p&gt;
&lt;p&gt;&lt;img alt=&quot;A personal website design by the MiniMax M3 model&quot; decoding=&quot;async&quot; src=&quot;https://assets.deepakness.com/raw/trying-minimax-m3/personal-website-by-minimax-m3.png&quot;&gt;&lt;/p&gt;
&lt;p&gt;And if you&#39;re curious, prompts were:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Prompt 1:&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;create a stunning personal website for a developer. use dummy info. don&#39;t use any framework.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Prompt 2:&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;make it in light mode and don&#39;t use serif fonts. and make the design and ui even better.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;After seeing it work great at the UI design, I asked it to &lt;a rel=&quot;noreferrer&quot; target=&quot;_blank&quot; href=&quot;https://x.com/DeepakNesss/status/2061687006842020265&quot;&gt;redesign the entire dashboard&lt;/a&gt; for a new project I am working on, and it did a great job. I approved the plan and left it overnight, where it should have worked for a few hours and then when I woke up in the morning, it was ready. It had several minor errors which Codex quickly fixed, and I loved the overall UI and UX it did. I will soon be merging the new branch to the main.&lt;/p&gt;
&lt;p&gt;For all these things, I used it for free via OpenCode (for a limited time), but if you wanted to try MiniMax M3, they have a very generous plan on their official website. Their &lt;a rel=&quot;noreferrer&quot; target=&quot;_blank&quot; href=&quot;https://platform.minimax.io/docs/guides/pricing-token-plan&quot;&gt;$20/mo plan&lt;/a&gt; can get you up to ~1.6 billion tokens when you use the new M3 model. MiniMax has also released &lt;a rel=&quot;noreferrer&quot; target=&quot;_blank&quot; href=&quot;https://agent.minimax.io/download&quot;&gt;a desktop app called MiniMax Code&lt;/a&gt; and is currently available for macOS as well as Windows. It looks very similar to the Codex app, though.&lt;/p&gt;
&lt;p&gt;By the way, since MiniMax M3 is an open-weight model, you can also try the new model via any other inference provider like OpenRouter and others.&lt;/p&gt;
</content>
  </entry>
  <entry>
    <title>Pi agent lessons from Dillon&#39;s shared session</title>
    <link href="https://deepakness.com/raw/pi-agent-lessons-from-dillon/" />
    <updated>2026-05-30T23:49:27Z</updated>
    <id>https://deepakness.com/raw/pi-agent-lessons-from-dillon/</id>
    <summary>A few practical notes from Dillon Mulroy&#39;s shared Pi coding agent session.</summary>
    <content type="html">&lt;p&gt;I spent some time reading &lt;a rel=&quot;noreferrer&quot; target=&quot;_blank&quot; href=&quot;https://x.com/dillon_mulroy/status/2060018957227061299&quot;&gt;Dillon Mulroy&#39;s&lt;/a&gt; shared &lt;a rel=&quot;noreferrer&quot; target=&quot;_blank&quot; href=&quot;https://pi.dev/session/#5ddc8747b98a80ad993c18e95270038e&quot;&gt;Pi session&lt;/a&gt;, and honestly, I learned more from the workflow than the docs.&lt;/p&gt;
&lt;p&gt;The main thing I noticed is that he doesn&#39;t use Pi like a quick code generator. He uses it more like a supervised senior implementation partner. The agent is not just asked to &quot;build this thing&quot;. It is given specs, constraints, examples, review notes, and a clear process.&lt;/p&gt;
&lt;p&gt;A few things I want to copy in my own Pi workflow.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;1. Write the spec first&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Before asking Pi to implement a large feature, create a small but clear tech spec with goals, constraints, routes, data model, edge cases, and test plan.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;2. Add working-style rules to &lt;code&gt;AGENTS.md&lt;/code&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;My current &lt;code&gt;AGENTS.md&lt;/code&gt; has tool preferences and writing style rules. I should also add how I want to work – something like &quot;prefer 3–5 small focused prompts over one large prompt&quot;, or &quot;never rewrite a file without showing me the diff first&quot;.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;3. Do architecture review before coding&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Instead of directly saying &quot;rebuild this&quot;, first ask Pi to inspect the existing files and explain where the design is weak, where cohesion breaks, and what should be changed.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;4. Ask for call graphs and seams&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Before implementation, ask Pi to sketch the public API, call graph, injected seams, and production vs test adapters. This makes bad design visible before code is written.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;5. Use skills for methodology&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;A simple prompt like &quot;use TDD&quot; is weaker than a full TDD skill. Dillon injects an inline &lt;code&gt;&amp;lt;skill&amp;gt;&lt;/code&gt; block that defines the philosophy, anti-patterns, and step-by-step workflow. I should create or reuse small skills for TDD, review, UI polish, refactors, and audits.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;6. Use vertical slices&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;One failing test, one small implementation, one passing check. Don&#39;t ask the model to build the whole dashboard or whole feature in one go.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;7. Give hard constraints&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Prompts should include rules like: no new package, no mock data, no broad rewrite, no nullable return, no touching unrelated files. This keeps the agent on a tighter leash.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;8. Use markdown annotations for review&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Instead of explaining everything again, paste notes like this and ask Pi to apply only those changes:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;## Markdown Annotations
- Section 4.1: update status to &quot;implemented&quot;
- Line 42: rename `fetchUrl` to `resolveShortLink`
- Section 3: remove the assumption about Cloudflare D1 – it&#39;s now R2
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;9. Codify mistakes permanently&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;When Pi makes the same kind of mistake, don&#39;t just fix it once. Add the rule to &lt;code&gt;AGENTS.md&lt;/code&gt; so future sessions inherit it.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;10. Use reference repos&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;For framework-specific work, keep local clones or examples and ask Pi to read those first. Real examples are better than model memory.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;11. Use the session tree properly&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;If a design exploration is risky, fork the session. If it goes wrong, abandon that branch instead of trying to repair a messy conversation.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;12. End with a handoff&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;At the end of a longer task, ask Pi for what changed, tests run, files modified, open issues, and the next 5 todos.&lt;/p&gt;
&lt;p&gt;This is probably the biggest takeaway for me:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Better agent results come less from one perfect prompt and more from a better engineering loop.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;The loop should be something like:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;review the existing design
→ sketch options
→ agree on the shape
→ write or update the spec
→ implement one vertical slice
→ run checks
→ review with annotations
→ save new rules in AGENTS.md
→ hand off clearly
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;I already use Pi with DeepSeek, web access, goal tracking, and vision proxy, and I wrote about that setup in my &lt;a rel=&quot;noreferrer&quot; target=&quot;_blank&quot; href=&quot;https://deepakness.com/blog/pi-agent-setup/&quot;&gt;Pi coding agent setup post&lt;/a&gt;. That setup is working nicely, but Dillon&#39;s session made me realize that it is still mostly tool-focused.&lt;/p&gt;
&lt;p&gt;The next improvement is process-focused – better specs, better review loops, better constraints, and better handoffs.&lt;/p&gt;
</content>
  </entry>
  <entry>
    <title>Setting Up and Using the Pi Coding Agent</title>
    <link href="https://deepakness.com/blog/pi-agent-setup/" />
    <updated>2026-05-29T17:04:47Z</updated>
    <id>https://deepakness.com/blog/pi-agent-setup/</id>
    <summary>My experience of setting up the Pi coding agent with DeepSeek, installing packages, and using it for side projects and experiments.</summary>
    <content type="html">&lt;p&gt;I have been using AI coding tools for a while now. At the time of writing this, I am subscribed to both Cursor and OpenAI Codex. They are great at what they do and I use them for most of my main project work.&lt;/p&gt;
&lt;p&gt;But over 2 weeks ago, I came across &lt;a rel=&quot;noreferrer&quot; target=&quot;_blank&quot; href=&quot;https://pi.dev&quot;&gt;Pi&lt;/a&gt; – an open-source terminal coding agent. It has a small core and lets you add features through extensions and packages, instead of packing everything in by default. I liked the idea, so I decided to set it up and see where it fits.&lt;/p&gt;
&lt;p&gt;I am still figuring out the right balance, but Pi has already found a place for my side projects and experiments. In this post, I&#39;ll share how I installed it, what my setup looks like, and my honest experience so far.&lt;/p&gt;
&lt;p&gt;&lt;img alt=&quot;My Pi coding agent setup&quot; decoding=&quot;async&quot; src=&quot;https://assets.deepakness.com/blog/pi-agent-setup/my-setup.png&quot;&gt;&lt;/p&gt;
&lt;h2&gt;What is Pi?&lt;/h2&gt;
&lt;p&gt;Pi is an open-source terminal coding agent created by &lt;a rel=&quot;noreferrer&quot; target=&quot;_blank&quot; href=&quot;https://mariozechner.at&quot;&gt;Mario Zechner&lt;/a&gt;. It works in your terminal and gives the AI model four tools by default – &lt;code&gt;read&lt;/code&gt;, &lt;code&gt;write&lt;/code&gt;, &lt;code&gt;edit&lt;/code&gt;, and &lt;code&gt;bash&lt;/code&gt; – to work with your codebase.&lt;/p&gt;
&lt;p&gt;There is no built-in plan mode, no sub-agents, no MCP, and no permission popups. Instead, you can add these things through extensions, skills, and packages. This keeps the core small and lets you build exactly the setup you want.&lt;/p&gt;
&lt;p&gt;Pi works with many AI providers – Anthropic, OpenAI, DeepSeek, Google Gemini, Groq, xAI, OpenRouter, Kimi, and more. You can use an API key or log in with an existing subscription.&lt;/p&gt;
&lt;h2&gt;How I use Pi alongside other tools&lt;/h2&gt;
&lt;p&gt;Right now, I use different tools for different kinds of work:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;OpenAI Codex&lt;/strong&gt; for complex tasks on my main projects&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Cursor&lt;/strong&gt; for simpler day-to-day coding on those same projects&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Pi&lt;/strong&gt; for side projects, experiments, and one-off tasks – I pair it with DeepSeek, Kimi, Cursor (via pi-cursor-sdk), and whichever model fits the task&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Pi feels right for side projects because it&#39;s fast, lightweight, and I can use cheaper models without burning through expensive subscriptions.&lt;/p&gt;
&lt;p&gt;One example: I recently used Pi with the DeepSeek v4 Flash model to scrape 285K URLs from a website. It ran for about 1.5 hours and cost me just $1 through the official DeepSeek API. I used the &lt;code&gt;pi-codex-goal&lt;/code&gt; extension to track the long-running task and it worked without issues. You can &lt;a rel=&quot;noreferrer&quot; target=&quot;_blank&quot; href=&quot;https://x.com/DeepakNesss/status/2059825248762224779&quot;&gt;read more about this on X&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;img alt=&quot;Pi scraping task with pi-codex-goal&quot; decoding=&quot;async&quot; src=&quot;https://assets.deepakness.com/blog/pi-agent-setup/scraping-using-pi.png&quot;&gt;&lt;/p&gt;
&lt;h2&gt;Installing Pi&lt;/h2&gt;
&lt;p&gt;Installation is one command:&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;-fsSL&lt;/span&gt; https://pi.dev/install.sh &lt;span class=&quot;token operator&quot;&gt;|&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;sh&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Once installed, start it by typing &lt;code&gt;pi&lt;/code&gt; in your terminal. But first, you need to set up a provider and API key.&lt;/p&gt;
&lt;h2&gt;Setting up DeepSeek as the provider&lt;/h2&gt;
&lt;p&gt;Pi has a built-in &lt;code&gt;/login&lt;/code&gt; command that makes setting up any provider easy. Here is what I did:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Opened Pi by typing &lt;code&gt;pi&lt;/code&gt; in the terminal&lt;/li&gt;
&lt;li&gt;Typed &lt;code&gt;/login&lt;/code&gt; and chose &lt;strong&gt;Use an API key&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Selected &lt;strong&gt;DeepSeek&lt;/strong&gt; from the providers list&lt;/li&gt;
&lt;li&gt;Entered my DeepSeek API key when asked&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;That&#39;s it. Pi saves the key and you&#39;re ready to go. After logging in, use &lt;code&gt;/model&lt;/code&gt; to pick your model – I chose &lt;code&gt;deepseek-v4-pro&lt;/code&gt; with &lt;code&gt;xhigh&lt;/code&gt; thinking.&lt;/p&gt;
&lt;p&gt;&lt;img alt=&quot;Model selector in Pi&quot; decoding=&quot;async&quot; src=&quot;https://assets.deepakness.com/blog/pi-agent-setup/model-selector.png&quot;&gt;&lt;/p&gt;
&lt;p&gt;I default to &lt;code&gt;xhigh&lt;/code&gt; thinking because I want the model to think deeply before making changes. For lighter tasks like the URL scraping, I switch to the faster and even cheaper &lt;code&gt;deepseek-v4-flash&lt;/code&gt; model.&lt;/p&gt;
&lt;p&gt;You can open the model picker with &lt;code&gt;Ctrl+L&lt;/code&gt;, cycle through your scoped models with &lt;code&gt;Ctrl+P&lt;/code&gt;, and change the thinking level with &lt;code&gt;Shift+Tab&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;I also use Kimi K2.7 Code and other models depending on the task – more on that in the model lineup below.&lt;/p&gt;
&lt;h2&gt;My model lineup&lt;/h2&gt;
&lt;p&gt;I have several models enabled and switch between them depending on the task:&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Model&lt;/th&gt;
&lt;th&gt;What I use it for&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;DeepSeek v4 Pro&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Default for most side project work – good balance of quality and cost&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;DeepSeek v4 Flash&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Lighter, repetitive tasks like scraping or bulk file operations – fast and cheap&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Kimi K2.6 / K2.7 Code&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Alternative when I want a second opinion or hit rate limits&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Cursor (via pi-cursor-sdk)&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Lets me use my existing Cursor subscription inside Pi without an extra API key&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;OpenAI Codex (GPT-5.5)&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Occasionally when a task benefits from a larger reasoning model&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Switching is instant – &lt;code&gt;Ctrl+L&lt;/code&gt; opens the model selector, and &lt;code&gt;Ctrl+P&lt;/code&gt; cycles through scoped models.&lt;/p&gt;
&lt;h2&gt;The interface and my custom footer&lt;/h2&gt;
&lt;p&gt;When you open Pi, the interface is clean. The editor is at the bottom, the conversation in the middle, and the footer shows your working directory, git branch, current model, thinking level, and context window usage.&lt;/p&gt;
&lt;p&gt;One thing I customized early on was the footer. The default footer shows more information than I need. So I asked Pi itself to build me a custom minimal footer. I described what I wanted – current folder, git branch with a dirty marker, model name, thinking level, active goal from pi-codex-goal, and a compact context bar – and it wrote the TypeScript extension for me.&lt;/p&gt;
&lt;p&gt;&lt;img alt=&quot;Custom minimal footer extension for Pi agent&quot; decoding=&quot;async&quot; src=&quot;https://assets.deepakness.com/blog/pi-agent-setup/custom-extension.png&quot;&gt;&lt;/p&gt;
&lt;p&gt;The extension lives at &lt;code&gt;~/.pi/agent/extensions/minimal-footer.ts&lt;/code&gt; and Pi loads it automatically on every startup. I have also put &lt;a rel=&quot;noreferrer&quot; target=&quot;_blank&quot; href=&quot;https://gist.github.com/deepakness/81e716c4654d22bee6b3a830553ec004&quot;&gt;the code in a gist&lt;/a&gt; — just drop it into the extensions folder and restart Pi. It was a small change but it made the experience feel personal. I also learned a bit about how Pi extensions work in the process.&lt;/p&gt;
&lt;h2&gt;Packages I installed&lt;/h2&gt;
&lt;p&gt;Pi packages are npm or git packages that bundle extensions, skills, prompts, and themes. You install them with &lt;code&gt;pi install&lt;/code&gt;. Here are the ones I use:&lt;/p&gt;
&lt;h3&gt;1. pi-web-access&lt;/h3&gt;
&lt;p&gt;This package gives Pi the ability to search the web, fetch page content, extract YouTube video transcripts, and explore GitHub repos. You can find it at &lt;a rel=&quot;noreferrer&quot; target=&quot;_blank&quot; href=&quot;https://pi.dev/packages/pi-web-access&quot;&gt;pi.dev/packages/pi-web-access&lt;/a&gt;.&lt;/p&gt;
&lt;pre class=&quot;language-bash&quot; tabindex=&quot;0&quot;&gt;&lt;code class=&quot;language-bash&quot;&gt;pi &lt;span class=&quot;token function&quot;&gt;install&lt;/span&gt; npm:pi-web-access&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;It works out of the box with Exa search (no API key needed), and you can optionally add API keys for Perplexity, Exa, or Gemini for more control. I configured it to use Exa as the default search provider by creating a &lt;code&gt;~/.pi/web-search.json&lt;/code&gt; file:&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;provider&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;exa&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;&quot;allowBrowserCookies&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;summaryModel&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;deepseek/deepseek-v4-flash&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;&quot;workflow&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;none&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;&quot;curatorTimeoutSeconds&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;20&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;With this package, Pi can search the web, read documentation, understand YouTube videos, and clone and explore GitHub repositories – all without leaving the terminal.&lt;/p&gt;
&lt;h3&gt;2. pi-codex-goal&lt;/h3&gt;
&lt;p&gt;This package adds goal tracking to Pi. It&#39;s built by &lt;a rel=&quot;noreferrer&quot; target=&quot;_blank&quot; href=&quot;https://github.com/fitchmultz/pi-codex-goal&quot;&gt;Mitch Fultz&lt;/a&gt;. It gives the model three new tools – &lt;code&gt;get_goal&lt;/code&gt;, &lt;code&gt;create_goal&lt;/code&gt;, and &lt;code&gt;update_goal&lt;/code&gt; – that let you create long-running tasks and track progress.&lt;/p&gt;
&lt;pre class=&quot;language-bash&quot; tabindex=&quot;0&quot;&gt;&lt;code class=&quot;language-bash&quot;&gt;pi &lt;span class=&quot;token function&quot;&gt;install&lt;/span&gt; npm:pi-codex-goal&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;I use this whenever I have a bigger task that spans multiple prompts. Instead of repeating the context each time, I create a goal once and Pi keeps track of what needs to be done. It was especially useful during the 285K URL scraping task – the goal kept the task on track even when the session got long.&lt;/p&gt;
&lt;h3&gt;3. pi-vision-proxy&lt;/h3&gt;
&lt;p&gt;DeepSeek cannot look at images – it has no vision capabilities. The &lt;a rel=&quot;noreferrer&quot; target=&quot;_blank&quot; href=&quot;https://pi.dev/packages/pi-vision-proxy&quot;&gt;pi-vision-proxy&lt;/a&gt; package fixes that by proxying images to another model that does have vision.&lt;/p&gt;
&lt;pre class=&quot;language-bash&quot; tabindex=&quot;0&quot;&gt;&lt;code class=&quot;language-bash&quot;&gt;pi &lt;span class=&quot;token function&quot;&gt;install&lt;/span&gt; npm:pi-vision-proxy&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;I have set up Kimi K2.6 as my vision model. Now, whenever I paste an image into Pi, it sends the image to Kimi with some context, and then DeepSeek uses what Kimi saw to finish the task. It works well for the occasional screenshot or design reference I throw at it.&lt;/p&gt;
&lt;p&gt;Under the hood, it batches multiple images when possible and caches repeated screenshots using perceptual hashing so the same image isn&#39;t re-analyzed. It also supports several grounding formats for precise coordinate targeting when needed. You can &lt;a rel=&quot;noreferrer&quot; target=&quot;_blank&quot; href=&quot;https://x.com/DeepakNesss/status/2058158823475724757&quot;&gt;read more about this setup on X&lt;/a&gt;, and I also have a short video in the X post as well.&lt;/p&gt;
&lt;h3&gt;4. pi-agent-browser-native&lt;/h3&gt;
&lt;p&gt;This package gives Pi a real browser inside the terminal. It can open pages, take screenshots and snapshots, click links, fill forms, run QA checks, and extract page content – all without leaving the terminal.&lt;/p&gt;
&lt;pre class=&quot;language-bash&quot; tabindex=&quot;0&quot;&gt;&lt;code class=&quot;language-bash&quot;&gt;pi &lt;span class=&quot;token function&quot;&gt;install&lt;/span&gt; npm:pi-agent-browser-native&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;I use this alongside pi-web-access. Web search finds the information, and the browser lets me interact with live pages, read documentation on sites that need JavaScript, and check things visually. It also adds the &lt;code&gt;agent_browser_web_search&lt;/code&gt; tool, which is a quicker way to search the web than opening a full browser page.&lt;/p&gt;
&lt;h3&gt;5. pi-cursor-sdk&lt;/h3&gt;
&lt;p&gt;If you already pay for a Cursor subscription, this package lets you use it inside Pi so you are not paying twice.&lt;/p&gt;
&lt;pre class=&quot;language-bash&quot; tabindex=&quot;0&quot;&gt;&lt;code class=&quot;language-bash&quot;&gt;pi &lt;span class=&quot;token function&quot;&gt;install&lt;/span&gt; npm:pi-cursor-sdk&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;I have a Cursor subscription and this was a natural fit. After installing, &lt;code&gt;cursor/auto&lt;/code&gt; shows up as a model option in the picker and I can use it just like any other provider. It is also built by &lt;a rel=&quot;noreferrer&quot; target=&quot;_blank&quot; href=&quot;https://github.com/fitchmultz/pi-cursor-sdk&quot;&gt;Mitch Fultz&lt;/a&gt;, the same person behind pi-codex-goal. Between Cursor for subscription models, DeepSeek for cheap heavy lifting, and Kimi as an alternative, I have good coverage without adding more API bills. I wrote more about using the Composer 2.5 model through this SDK in &lt;a rel=&quot;noreferrer&quot; target=&quot;_blank&quot; href=&quot;https://deepakness.com/raw/pi-composer-2-5/&quot;&gt;my raw notes&lt;/a&gt;.&lt;/p&gt;
&lt;h2&gt;Project instructions with AGENTS.md and APPEND_SYSTEM.md&lt;/h2&gt;
&lt;p&gt;Pi has two ways to give the model instructions: &lt;code&gt;AGENTS.md&lt;/code&gt; for project-specific context, and &lt;code&gt;APPEND_SYSTEM.md&lt;/code&gt; for global behavioral rules.&lt;/p&gt;
&lt;h3&gt;AGENTS.md (project context)&lt;/h3&gt;
&lt;p&gt;Pi loads &lt;code&gt;AGENTS.md&lt;/code&gt; files at startup and injects them into the system prompt. There are three discovery locations – a global one at &lt;code&gt;~/.pi/agent/AGENTS.md&lt;/code&gt;, then parent directories walking up, and finally the current directory – and they&#39;re all concatenated together.&lt;/p&gt;
&lt;p&gt;I keep my global AGENTS.md minimal. It only describes what stack I typically work with:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;# Global Pi Instructions

- Projects commonly use Laravel (PHP/Inertia/React), Next.js
  (TypeScript/Tailwind), or Astro. Check the project-root AGENTS.md for
  stack-specific rules – if none exists, ask.
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;The &quot;if none exists, ask&quot; part is important. When I&#39;m working in a plain HTML/CSS/JS folder or some other stack, the agent doesn&#39;t force a framework on me – it just asks.&lt;/p&gt;
&lt;p&gt;Most of my projects also have their own &lt;code&gt;AGENTS.md&lt;/code&gt; with framework-specific rules, but I rarely write them by hand. They&#39;re generated by the framework tooling (like Laravel Boost) with the exact package versions and conventions for that project.&lt;/p&gt;
&lt;h3&gt;APPEND_SYSTEM.md (global behavioral rules)&lt;/h3&gt;
&lt;p&gt;&lt;code&gt;AGENTS.md&lt;/code&gt; is for project context, but some rules apply across every project regardless of stack. That&#39;s where &lt;code&gt;APPEND_SYSTEM.md&lt;/code&gt; comes in. It lives at &lt;code&gt;~/.pi/agent/APPEND_SYSTEM.md&lt;/code&gt; and gets appended directly to the system prompt – which means these rules carry higher authority than AGENTS.md instructions.&lt;/p&gt;
&lt;p&gt;Here&#39;s what I put in mine:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;- If the default provider doesn&#39;t have vision capabilities, use
  pi-vision-proxy for images.
- Read relevant local files first when the answer is available in the
  codebase. If not, research online via pi-web-access. Before making a
  big change based on online research findings, confirm with me first.
- Explain risky file edits and destructive commands before executing.
- Write simply. Avoid AI-slop language – no flowery adjectives,
  unnecessary adverbs, or overly formal phrasing.
- Use en dashes (–) not em dashes (—).
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;A few notes on these rules:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;The vision proxy rule is now provider-agnostic. I might use Kimi, DeepSeek, or another model as my default, so instead of hardcoding a provider name, it checks whether the current model has vision capabilities.&lt;/li&gt;
&lt;li&gt;The second rule is more explicit than my earlier version. Instead of just saying &quot;don&#39;t search for things you already know&quot;, it tells the agent to read local files first, search online only when needed, and confirm before making big changes based on online research.&lt;/li&gt;
&lt;li&gt;The en dash rule is a simple mechanical preference that keeps my writing style consistent across all sessions.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Keyboard shortcuts and commands I use&lt;/h2&gt;
&lt;p&gt;Pi has many shortcuts. Here are the ones I use regularly:&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Key&lt;/th&gt;
&lt;th&gt;What it does&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;Ctrl+L&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Open the model selector&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;Ctrl+P&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Cycle through scoped models&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;Shift+Tab&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Change thinking level&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;Ctrl+C&lt;/code&gt; (twice)&lt;/td&gt;
&lt;td&gt;Quit Pi&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;Escape&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Cancel or abort the current action&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;Enter&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Send as a steering message (interrupts current work)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;Alt+Enter&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Send as a follow-up message (delivered after work finishes)&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;The difference between Enter and Alt+Enter took some time to get used to. If I want Pi to change direction mid-work, I press Enter. If I just want to add a note for after it finishes, I use Alt+Enter.&lt;/p&gt;
&lt;p&gt;And these are the commands I use, often by typing &lt;code&gt;/&lt;/code&gt; in the editor:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;/model&lt;/code&gt; – Switch models without remembering the shortcut&lt;/li&gt;
&lt;li&gt;&lt;code&gt;/settings&lt;/code&gt; – Change thinking level, theme, and other settings&lt;/li&gt;
&lt;li&gt;&lt;code&gt;/resume&lt;/code&gt; – Pick up from a previous session&lt;/li&gt;
&lt;li&gt;&lt;code&gt;/new&lt;/code&gt; – Start a fresh session&lt;/li&gt;
&lt;li&gt;&lt;code&gt;/tree&lt;/code&gt; – See the full session history and jump to any point&lt;/li&gt;
&lt;li&gt;&lt;code&gt;/compact&lt;/code&gt; – Summarize old messages to free up context&lt;/li&gt;
&lt;li&gt;&lt;code&gt;/session&lt;/code&gt; – Show current session info like tokens and cost&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The &lt;code&gt;/tree&lt;/code&gt; command is especially useful. You can see your entire conversation history like a tree, jump to any branch, and continue from there. It&#39;s great when you want to try a different approach without losing what you had before. I got very curious about it after coming across &lt;a rel=&quot;noreferrer&quot; target=&quot;_blank&quot; href=&quot;https://x.com/dillon_mulroy/status/2060018957227061299&quot;&gt;this shared Pi session&lt;/a&gt; from Dillon Mulroy. I later wrote down everything I learned from that session in &lt;a rel=&quot;noreferrer&quot; target=&quot;_blank&quot; href=&quot;https://deepakness.com/raw/pi-agent-lessons-from-dillon/&quot;&gt;my raw notes&lt;/a&gt;.&lt;/p&gt;
&lt;h2&gt;A few things I learned while using Pi&lt;/h2&gt;
&lt;p&gt;Long sessions fill up the context window. Pi has automatic compaction that summarizes older messages when you&#39;re running out of space. You can also do it manually with &lt;code&gt;/compact&lt;/code&gt;. And I love the &lt;code&gt;pi --continue&lt;/code&gt; command, that directly opens the last chat in the repo/folder.&lt;/p&gt;
&lt;p&gt;Another thing I like is the steering system. While Pi is working (running bash commands, editing files, etc.), you can type a new message and press Enter. This queues a steering message that gets delivered after the current tool finishes. I use this when I notice Pi going in the wrong direction mid-work and want to correct it quickly. Sometimes, instead of a steering message, I also do &lt;code&gt;Option+Enter&lt;/code&gt; that sends the message after previous output is completely finished generating.&lt;/p&gt;
&lt;p&gt;You can also use your OpenAI Codex subscription inside Pi, Cursor subscription via pi-cursor-sdk, 100s of models via OpenRouter, xAI, Claude and many more providers via API.&lt;/p&gt;
&lt;h2&gt;Things I like about Pi&lt;/h2&gt;
&lt;p&gt;After using Pi for a few weeks, here&#39;s what stands out:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Simple and fast:&lt;/strong&gt; The terminal interface is snappy. No Electron, no UI lag.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Customizable:&lt;/strong&gt; I built the exact footer I wanted, picked the packages I need, and the rest stays minimal.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Works with any provider:&lt;/strong&gt; I use DeepSeek and Kimi regularly, and switching between them is one shortcut away. I also learn a lot when using it – you get closer to how things actually work, unlike more polished tools where everything is hidden.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Session tree is brilliant:&lt;/strong&gt; Being able to branch conversations and go back to any point is something I miss when using other tools.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Open source (MIT):&lt;/strong&gt; I like that no company decides what features I get or how much I pay.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Compaction just works:&lt;/strong&gt; I don&#39;t think about context limits. Pi handles it in the background, and faster and better than others.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2&gt;Final thoughts&lt;/h2&gt;
&lt;p&gt;I am still using Cursor and Codex for my main project work, and I don&#39;t see that changing anytime soon. They are polished tools that do their jobs well.&lt;/p&gt;
&lt;p&gt;But Pi has earned a permanent place for my side projects and experiments. It&#39;s fast, it&#39;s cheap (especially with DeepSeek and Kimi), and the combination of Pi + a few well-chosen packages has been solid so far.&lt;/p&gt;
&lt;p&gt;Here&#39;s what my current setup looks like:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;DeepSeek v4 Pro with &lt;code&gt;xhigh&lt;/code&gt; thinking (default)&lt;/li&gt;
&lt;li&gt;DeepSeek v4 Flash for lighter tasks&lt;/li&gt;
&lt;li&gt;Kimi K2.6 / K2.7 Code as alternative models&lt;/li&gt;
&lt;li&gt;pi-web-access for web search and content extraction via Exa&lt;/li&gt;
&lt;li&gt;pi-codex-goal for tracking longer tasks&lt;/li&gt;
&lt;li&gt;pi-vision-proxy to handle images via Kimi K2.6&lt;/li&gt;
&lt;li&gt;pi-agent-browser-native for browser tasks in the terminal&lt;/li&gt;
&lt;li&gt;pi-cursor-sdk to use my Cursor subscription inside Pi&lt;/li&gt;
&lt;li&gt;APPEND_SYSTEM.md with writing style and behavior rules&lt;/li&gt;
&lt;li&gt;A custom minimal footer extension&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;That&#39;s it. I tried more packages but kept only what I actually use.&lt;/p&gt;
&lt;p&gt;If you are comfortable in the terminal and like the idea of a minimal, extensible agent, &lt;a rel=&quot;noreferrer&quot; target=&quot;_blank&quot; href=&quot;https://pi.dev&quot;&gt;give Pi a try&lt;/a&gt;. Start with the basics and add packages as you feel the need.&lt;/p&gt;
&lt;p&gt;I have been using Pi for a few weeks now and the setup is stable. I uninstalled a few extensions that didn&#39;t add enough value. The simpler the setup, the better.&lt;/p&gt;
&lt;p&gt;I will keep updating this post as I discover new things about Pi.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Update&lt;/strong&gt;: July 21, 2026&lt;/p&gt;
&lt;p&gt;Recently, I am using my Cursor subscription inside Pi a lot via the &lt;code&gt;pi-cursor-sdk&lt;/code&gt; extension. I am mostly using the Composer 2.5 model for &lt;a rel=&quot;noreferrer&quot; target=&quot;_blank&quot; href=&quot;https://deepakness.com/raw/pi-cursor-codex-scraping/&quot;&gt;simple long-running tasks as /goal&lt;/a&gt; via the &lt;code&gt;pi-codex-goal&lt;/code&gt; extension.&lt;/p&gt;
&lt;p&gt;In just past few days, I have used more than 1.5 billion tokens of the Composer 2.5 model (thanks to the 50% discount till 21st July, i.e., today).&lt;/p&gt;
</content>
  </entry>
  <entry>
    <title>Cheaper coding models are excellent with good prompts</title>
    <link href="https://deepakness.com/raw/prompting-cheaper-vs-sota-models/" />
    <updated>2026-05-29T12:17:10Z</updated>
    <id>https://deepakness.com/raw/prompting-cheaper-vs-sota-models/</id>
    <summary>Cheaper coding models like Composer, DeepSeek, Kimi, GLM, and Qwen can be excellent, but you can&#39;t prompt them like Claude Code or Codex.</summary>
    <content type="html">&lt;p&gt;Dan &lt;a rel=&quot;noreferrer&quot; target=&quot;_blank&quot; href=&quot;https://x.com/DanKulkov/status/2059863021120622749&quot;&gt;posted about cancelling Cursor after 30 minutes of using Composer 2.5&lt;/a&gt;, and while the wording was too harsh, I don&#39;t think the frustration itself is completely wrong.&lt;/p&gt;
&lt;p&gt;I &lt;a rel=&quot;noreferrer&quot; target=&quot;_blank&quot; href=&quot;https://x.com/DeepakNesss/status/2060214202472759303&quot;&gt;posted about this on X&lt;/a&gt; as well, but I think the main thing people miss is that cheaper or smaller models need to be prompted differently.&lt;/p&gt;
&lt;p&gt;You can&#39;t prompt DeepSeek, Kimi, GLM, Composer, Qwen, or other similar models the same way you prompt Claude Code or Codex.&lt;/p&gt;
&lt;p&gt;With Claude Code and Codex, especially with the latest models, you can throw a broad task at them and expect the model to explore the repository, understand patterns, implement the feature, run tests, and come back with something mostly correct. It will still make mistakes, obviously, but it can handle much more ambiguity.&lt;/p&gt;
&lt;p&gt;But these cheaper models are not great at that kind of one-shot work.&lt;/p&gt;
&lt;p&gt;If you ask them to &quot;build this full dashboard&quot;, &quot;rework the entire app&quot;, or &quot;implement this complete feature end-to-end&quot;, the result is usually messy. They will often do too much, miss existing patterns, break small things, or create a UI that looks good in one part but doesn&#39;t fully fit the app.&lt;/p&gt;
&lt;p&gt;But if you go feature-by-feature or page-by-page, they can be excellent.&lt;/p&gt;
&lt;p&gt;For example, instead of saying:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Build the entire analytics dashboard with filters, charts, empty states, settings, export, and responsive UI.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;I would rather ask:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;create the empty dashboard layout&lt;/li&gt;
&lt;li&gt;add only the filters section&lt;/li&gt;
&lt;li&gt;create the first chart&lt;/li&gt;
&lt;li&gt;add loading and empty states&lt;/li&gt;
&lt;li&gt;make the table work&lt;/li&gt;
&lt;li&gt;polish spacing and mobile layout&lt;/li&gt;
&lt;li&gt;now review the whole page and fix rough edges&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;This is a different workflow. You need more patience. You need to be more involved. You need to keep the model on a tighter leash.&lt;/p&gt;
&lt;p&gt;But the tradeoff is worth it in many cases because these models are cheap and fast enough that iterating with them still feels good.&lt;/p&gt;
&lt;p&gt;A few days ago, I built a small internal feature for SharePDF using DeepSeek V4 Pro via Pi agent. And honestly, the UI was far better than what Codex usually gives me, and everything worked as expected as well. But I didn&#39;t ask it to rebuild the whole product in one prompt. I gave it a smaller scope, checked the output, and then continued from there.&lt;/p&gt;
&lt;p&gt;This is why I still think models like Composer 2.5, DeepSeek, Kimi, GLM, and Qwen are very useful. In fact, I have already written that &lt;a rel=&quot;noreferrer&quot; target=&quot;_blank&quot; href=&quot;https://deepakness.com/raw/using-composer-2-5/&quot;&gt;Cursor&#39;s Composer 2.5 is awesome&lt;/a&gt; and that &lt;a rel=&quot;noreferrer&quot; target=&quot;_blank&quot; href=&quot;https://deepakness.com/raw/cursor-value-for-money/&quot;&gt;Cursor&#39;s $20 plan is great value&lt;/a&gt;. That doesn&#39;t mean the model will behave like Claude Code or Codex in every situation.&lt;/p&gt;
&lt;p&gt;Sometimes when you have the option, there is no point using the cheaper model. If I&#39;m doing a complicated refactor, touching billing logic, debugging something subtle, or making a change across many files, I would still prefer the best model I have access to.&lt;/p&gt;
&lt;p&gt;But if I&#39;m designing a page, improving UI, adding a smaller feature, or doing something where I can review each step quickly, I don&#39;t mind using cheaper models at all. In some cases, I even prefer them. I still consider Qwen 3.7 or even 3.6 Plus models far better at design than GPT models.&lt;/p&gt;
&lt;p&gt;So I think the correct conclusion is not &quot;Composer is bad&quot; or &quot;DeepSeek is bad&quot; or &quot;cheap models are useless&quot;.&lt;/p&gt;
&lt;p&gt;The correct conclusion is:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;don&#39;t use a cheaper model like a SOTA model.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Use Claude Code or Codex when you want more autonomy. Use DeepSeek, Kimi, GLM, Composer, or Qwen when you are willing to drive more actively.&lt;/p&gt;
&lt;p&gt;Both can be great. You just can&#39;t expect the same prompting style to work everywhere.&lt;/p&gt;
</content>
  </entry>
  <entry>
    <title>Cursor&#39;s $20 plan offers the best value for month</title>
    <link href="https://deepakness.com/raw/cursor-value-for-money/" />
    <updated>2026-05-27T17:37:42Z</updated>
    <id>https://deepakness.com/raw/cursor-value-for-money/</id>
    <summary>Tried using Cursor after 5 months, and I think their Pro plan is the best subscription you can ever get.</summary>
    <content type="html">&lt;p&gt;I last used Cursor in January this year, because it later started seeming too costly. But after their Composer 2.5 model release, I tried Cursor again after 5 months and I loved it a lot. I have been using it for a little over a week now, and it&#39;s the best model for the price out there.&lt;/p&gt;
&lt;p&gt;&lt;img alt=&quot;Cursor usage&quot; decoding=&quot;async&quot; src=&quot;https://assets.deepakness.com/raw/cursor-value-for-money/cursor-usage.png&quot;&gt;&lt;/p&gt;
&lt;p&gt;At the time of writing this post, I have used over 430 million tokens in total where almost 320 million tokens are only from Composer 2.5, as you see in the screenshot above.&lt;/p&gt;
&lt;p&gt;I have written &lt;a rel=&quot;noreferrer&quot; target=&quot;_blank&quot; href=&quot;https://x.com/DeepakNesss/status/2057819438158893452&quot;&gt;a post on X&lt;/a&gt; about things I like about Cursor and then things I don&#39;t.&lt;/p&gt;
&lt;p&gt;By the way, I am only on the $20/mo plan for Cursor Pro, and then I have only finished 54% of the monthly limits as of now. I am surprised how good the limits are even on the $20 plan, and I must say, again, that Composer 2.5 is a great model.&lt;/p&gt;
</content>
  </entry>
  <entry>
    <title>Fixing Cursor app&#39;s too much resource usage</title>
    <link href="https://deepakness.com/raw/cursor-app-resource-usage/" />
    <updated>2026-05-26T05:25:19Z</updated>
    <id>https://deepakness.com/raw/cursor-app-resource-usage/</id>
    <summary>Found the issue of Cursor app using 2-3 CPU cores at 100% each, and found the culprit. Thanks to Codex.</summary>
    <content type="html">&lt;p&gt;Cursor app had become weirdly unusable on my Mac recently, and I couldn&#39;t figure out why. So I asked Codex to do a read-only audit of my computer and create a small HTML report.&lt;/p&gt;
&lt;p&gt;Turns out Cursor itself was not exactly the problem.&lt;/p&gt;
&lt;p&gt;Cursor was launching an old Telegram MCP/plugin process from my &lt;code&gt;~/.claude&lt;/code&gt; folder, and that orphaned &lt;code&gt;bun server.ts&lt;/code&gt; process was eating a lot of CPU in the background.&lt;/p&gt;
&lt;p&gt;The funny part is, I don&#39;t even use that Claude setup anymore.&lt;/p&gt;
&lt;p&gt;So I deleted &lt;code&gt;~/.claude&lt;/code&gt;, cleared Trash, and still the process kept running. That was the interesting bit: deleting files does not stop an already running process.&lt;/p&gt;
&lt;p&gt;Codex then traced the exact PID, stopped only that orphan process, verified it didn&#39;t come back, and updated the report with what happened.&lt;/p&gt;
&lt;p&gt;Now &lt;a rel=&quot;noreferrer&quot; target=&quot;_blank&quot; href=&quot;https://x.com/DeepakNesss/status/2059117412239475024&quot;&gt;Cursor is normal again&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;The main lesson for me: agent config is not harmless. Old MCP/plugin setup can keep affecting other tools long after you forgot it exists.&lt;/p&gt;
&lt;p&gt;Also, I still don&#39;t fully understand why Cursor was launching something from my old Claude folder in the first place. But this is exactly why stale agent config feels like technical debt now.&lt;/p&gt;
</content>
  </entry>
  <entry>
    <title>Cursor&#39;s Composer 2.5 is awesome</title>
    <link href="https://deepakness.com/raw/using-composer-2-5/" />
    <updated>2026-05-22T20:16:44Z</updated>
    <id>https://deepakness.com/raw/using-composer-2-5/</id>
    <summary>Using Cursor after 5+ months, and this time the Composer 2.5 model does make the difference.</summary>
    <content type="html">&lt;p&gt;I last used Cursor in December last year, and after hearing great things about the new Composer 2.5 model, I decided to give it another try after 5+ months. While my experience is mostly positive, I will be writing about things I liked as well as things I didn&#39;t like.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;What I liked:&lt;/strong&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Composer 2.5 model is fast, even when using without the &lt;code&gt;fast&lt;/code&gt; mode. Most of the things I work on, just take seconds and sometimes a few minutes, making it faster than Codex or Claude models I have used in the past.&lt;/li&gt;
&lt;li&gt;The 2.5 model is cheap, cheaper than all its competitors, actually. I used ~100 million tokens in a day and that resulted in only ~7% usage of the monthly limit, as you see in the screenshot here. I have &lt;a rel=&quot;noreferrer&quot; target=&quot;_blank&quot; href=&quot;https://x.com/DeepakNesss/status/2057819438158893452&quot;&gt;posted on X about it&lt;/a&gt; in detail.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;img alt=&quot;Cursor usage for the Composer 2.5 model&quot; decoding=&quot;async&quot; src=&quot;https://assets.deepakness.com/raw/using-composer-2-5/cursor-usage.png&quot;&gt;&lt;/p&gt;
&lt;p&gt;For your information, I am subscribed to the Cursor Pro plan which costs $20/month. And they&#39;re currently running a 2x offer for the week, but I think it&#39;s still a great value for money even after the offer ends. When I last used Cursor, the $20 plan was basically nothing when using any decent model. But that&#39;s not the case anymore, Composer 2.5 is a great model and that makes Cursor a great subscription plan right now.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;What I didn&#39;t like:&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;I&#39;m using a MacBook Air M2 with 16 GB of RAM and the Cursor app is just consuming too much resources, so much that the laptop is constantly running hot. I have heavily used Codex or Claude Code app but never had this issue earlier, so it&#39;s clear that they need to optimize the app for performance.&lt;/p&gt;
&lt;p&gt;This was so serious that I ditched the app, and currently using the Cursor CLI only. It&#39;s great, I am loving it, and have even created a &lt;a rel=&quot;noreferrer&quot; target=&quot;_blank&quot; href=&quot;https://x.com/DeepakNesss/status/2057803723292967309&quot;&gt;custom /statusline&lt;/a&gt; for myself.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;My advice for others:&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;If you&#39;re confused about whether you should subscribe to Cursor, I would strongly suggest giving it a try. The Composer 2.5 model is amazing and can do most of your work.&lt;/p&gt;
&lt;p&gt;As per calculations from my usage, if you&#39;re using 50 million tokens per day by using the Composer 2.5 model, the $20 plan will last for ~24 days before you exhaust your monthly limit. And this is great for people working on one or two projects simultaneously.&lt;/p&gt;
&lt;p&gt;And if you can get the $60/mo plan, it&#39;s even better.&lt;/p&gt;
</content>
  </entry>
  <entry>
    <title>My experience with Antigravity 2.0 (it&#39;s bad!)</title>
    <link href="https://deepakness.com/raw/antigravity-2-0/" />
    <updated>2026-05-20T02:35:30Z</updated>
    <id>https://deepakness.com/raw/antigravity-2-0/</id>
    <summary>Testing the just-released Antigravity 2.0 with the new Gemini 3.5 Flash mode, and it&#39;s mostly bad experience.</summary>
    <content type="html">&lt;p&gt;Google &lt;a rel=&quot;noreferrer&quot; target=&quot;_blank&quot; href=&quot;https://io.google/2026/&quot;&gt;I/O 2026 happened&lt;/a&gt; and Google announced a bunch of interesting things in the event. One thing I was particularly interested in was the &lt;a rel=&quot;noreferrer&quot; target=&quot;_blank&quot; href=&quot;https://antigravity.google&quot;&gt;new Antigravity 2.0&lt;/a&gt;, as I loved using the tool and coded the first versions of &lt;a rel=&quot;noreferrer&quot; target=&quot;_blank&quot; href=&quot;https://sharepdf.app&quot;&gt;SharePDF&lt;/a&gt; by using this only in December-January this year.&lt;/p&gt;
&lt;p&gt;But the new IDE didn&#39;t live up to my expectations, and it&#39;s bad!&lt;/p&gt;
&lt;p&gt;So... let&#39;s look at &lt;strong&gt;everything bad&lt;/strong&gt; one-by-one for the new Antigravity app:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;1. Couldn&#39;t log in for hours&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;As soon as they announced Antigravity in the event, it was available for download. I updated the existing Antigravity app, and it got logged out when the new app opened. I tried logging in multiple times, but I kept seeing auth errors.&lt;/p&gt;
&lt;p&gt;&lt;img alt=&quot;Antigravity auth is not working&quot; decoding=&quot;async&quot; src=&quot;https://assets.deepakness.com/raw/antigravity-2-0/auth-not-working.png&quot;&gt;&lt;/p&gt;
&lt;p&gt;I kept seeing the above screen no matter how many times I tried. After an hour or so, the authentication successfully worked but when I quit and reopened the app, it started having the same issues again.&lt;/p&gt;
&lt;p&gt;But it finally worked when I used it after several hours.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;2. Keep asking for approvals&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;I have set Auto Execution and Review Policy options to &quot;Always Proceed&quot; as you see in the screenshot below, but it keeps asking for approvals each time.&lt;/p&gt;
&lt;p&gt;&lt;img alt=&quot;Auto Execution and Review Policy set to Always Proceed&quot; decoding=&quot;async&quot; src=&quot;https://assets.deepakness.com/raw/antigravity-2-0/always-proceed-bugs.png&quot;&gt;&lt;/p&gt;
&lt;p&gt;And this is just an example, I had to approve at least 20 times for a simple HTML page I asked it to create. I have given &quot;Full Access&quot; to it, but this is still happening.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;At least this wasn&#39;t happening on the Antigravity 1.0, right?&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;strong&gt;3. Creates lots of unwanted HTML files&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;I asked it to create a personal website for me by taking the required data from my existing website, but to be precise this was the exact prompt:&lt;/p&gt;
&lt;pre class=&quot;language-markdown&quot; tabindex=&quot;0&quot;&gt;&lt;code class=&quot;language-markdown&quot;&gt;Create a clean and minimal personal website for me.
Take whatever info you need from my existing website: deepakness.com&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;img alt=&quot;Antigravity created multiple temporary HTML files&quot; decoding=&quot;async&quot; src=&quot;https://assets.deepakness.com/raw/antigravity-2-0/temp-html-files.png&quot;&gt;&lt;/p&gt;
&lt;p&gt;And while it created the website using HTML, CSS, and JavaScript, it also created a bunch of temporary HTML files in the folder. I confronted, then it said that those can be safely deleted.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;4. No plan mode anymore&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;I don&#39;t see the plan mode anywhere in the IDE, the dropdown we had earlier for planning/fast modes, no longer appears to be there.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;5. Creates SPA all the time&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;When you don&#39;t mention the tech-stack, it always creates websites as SPA (single page applications). For the personal website sample project I created earlier:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;All views (#home, #projects, #about, #newsletter) live in a single &lt;code&gt;index.html&lt;/code&gt; and are toggled via JavaScript (&lt;code&gt;navigateTo()&lt;/code&gt; in &lt;code&gt;app.js&lt;/code&gt;) without full page reloads. It uses hash-based routing (#home, #projects, etc.) and content is dynamically shown/hidden client-side.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;I tried the same prompt (from #3 above) at least 5 times, it created SPAs every time.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;6. Has a bad design taste&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;I thought that the new model will have a great design capabilities, but it does not! It&#39;s still all purple, as you see in screenshots here.&lt;/p&gt;
&lt;p&gt;&lt;img alt=&quot;Sample personal website&quot; decoding=&quot;async&quot; src=&quot;https://assets.deepakness.com/raw/antigravity-2-0/personal-website-sample.png&quot;&gt;&lt;/p&gt;
&lt;p&gt;&lt;img alt=&quot;Another sample personal website page&quot; decoding=&quot;async&quot; src=&quot;https://assets.deepakness.com/raw/antigravity-2-0/another-sample-design.png&quot;&gt;&lt;/p&gt;
&lt;p&gt;I blame the Antigravity harness here, because designs are slightly better when I used the same prompt in the Google AI Studio.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;7. Antigravity CLI also has bugs&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;To be honest, the Antigravity CLI is far better than the previous Gemini CLI and it&#39;s better than the Antigravity app as well. But it &lt;a rel=&quot;noreferrer&quot; target=&quot;_blank&quot; href=&quot;https://x.com/DeepakNesss/status/2056819307288613009&quot;&gt;also has some bugs&lt;/a&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;the prompt input field sometimes disappear&lt;/li&gt;
&lt;li&gt;the scroll doesn&#39;t work at all sometimes&lt;/li&gt;
&lt;li&gt;keeps asking for approvals, even after setting everything as &quot;Always Proceed&quot;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;8. Other people sharing their experiences&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Here are some posts by other people who have shared about Antigravity, that I found while browsing the internet:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Robin created &lt;a rel=&quot;noreferrer&quot; target=&quot;_blank&quot; href=&quot;https://x.com/robinebers/status/2056928512364400805&quot;&gt;a quick video on X&lt;/a&gt; sharing how bad his experience was.&lt;/li&gt;
&lt;li&gt;The new 3.5 Flash model is very costly as well, as &lt;a rel=&quot;noreferrer&quot; target=&quot;_blank&quot; href=&quot;https://x.com/buildwithhassan/status/2056937585604280769&quot;&gt;shared by someone&lt;/a&gt; on X.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Now, here are some &lt;strong&gt;things I liked&lt;/strong&gt;:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;I liked the multi-folder options for projects, as I can give access to multiple folders without giving access to the entire computer.&lt;/li&gt;
&lt;li&gt;Usage limits for the new models are slightly higher than earlier on the AI Pro plan, and I think they have also added &lt;a rel=&quot;noreferrer&quot; target=&quot;_blank&quot; href=&quot;https://x.com/DeepakNesss/status/2056920991293755520&quot;&gt;1,000 extra AI credits&lt;/a&gt; for everyone.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;That&#39;s it.&lt;/p&gt;
&lt;p&gt;I will keep updating this page as I discover more things I like or dislike.&lt;/p&gt;
</content>
  </entry>
  <entry>
    <title>AI Search Optimization Skill as per Google&#39;s guidelines</title>
    <link href="https://deepakness.com/raw/ai-search-optimization-skill/" />
    <updated>2026-05-16T18:55:36Z</updated>
    <id>https://deepakness.com/raw/ai-search-optimization-skill/</id>
    <summary>Google recently released a guide to optimize your website for Google&#39;s generative AI features, so I created an AI skill for it.</summary>
    <content type="html">&lt;p&gt;Recently, Google published a detailed guide on &lt;a rel=&quot;noreferrer&quot; target=&quot;_blank&quot; href=&quot;https://developers.google.com/search/docs/fundamentals/ai-optimization-guide&quot;&gt;optimizing your website&lt;/a&gt; for generative AI features on Google Search, including a lot of interesting information. I came across this from &lt;a rel=&quot;noreferrer&quot; target=&quot;_blank&quot; href=&quot;https://x.com/gaganghotra_/status/2055313793274802428&quot;&gt;this post on X from Gagan Ghotra&lt;/a&gt;, and created a powerful skill by consulting Gagan.&lt;/p&gt;
&lt;p&gt;I &lt;a rel=&quot;noreferrer&quot; target=&quot;_blank&quot; href=&quot;https://github.com/deepakness/google-ai-search-optimization&quot;&gt;published the skill in this public GitHub repo&lt;/a&gt;, and it can be accessed, installed, and used by anyone by following the provided instructions. And also &lt;a rel=&quot;noreferrer&quot; target=&quot;_blank&quot; href=&quot;https://rumble.com/v79y054-guide-to-install-googles-generative-ai-features-skills-for-ai-agents.html&quot;&gt;created this quick video for beginners&lt;/a&gt; where I&#39;m showing how to set up and use the skill (the &lt;a rel=&quot;noreferrer&quot; target=&quot;_blank&quot; href=&quot;https://x.com/DeepakNesss/status/2055707992897753597&quot;&gt;same video on X&lt;/a&gt;).&lt;/p&gt;
&lt;p&gt;Over the next few days, I will also be using the skills on different personal projects and will keep improving as per my experience with it. But since the GitHub repo is public, other people are also welcome to contribute.&lt;/p&gt;
&lt;p&gt;And not to mention, the skill can be used with almost any AI agent/harness we have out there.&lt;/p&gt;
</content>
  </entry>
  <entry>
    <title>Freeing 100+ GB of storage on macOS using Codex</title>
    <link href="https://deepakness.com/raw/codex-macos-cleaning/" />
    <updated>2026-05-16T13:02:31Z</updated>
    <id>https://deepakness.com/raw/codex-macos-cleaning/</id>
    <summary>Freeing more than 100 GB or reclaimable storage on my Macbook Air using Codex.</summary>
    <content type="html">&lt;p&gt;I still use the MacBook Air M2 with 16 GB of RAM and only 256 GB of storage, and it was working perfectly fine for my use case until recently. I started getting the low storage warnings sometimes, and that annoyed me a lot. And I was about to factory reset my laptop... but then at the last moment, I &lt;a rel=&quot;noreferrer&quot; target=&quot;_blank&quot; href=&quot;https://x.com/DeepakNesss/status/2055552888823562724&quot;&gt;decided to ask Codex&lt;/a&gt; about it, and glad that I did.&lt;/p&gt;
&lt;p&gt;Codex helped me free more than 100 GB of storage by deleting unnecessary stuff that were there from some apps that I used and deleted earlier. For example, I once tried a local model via Hugging Face and LM Studio and they were together taking 35 GB of storage. Similarly, I tried a Docker alternative called Colima and it was taking another 19 GB, as you see in the screenshot here.&lt;/p&gt;
&lt;p&gt;&lt;img alt=&quot;Storage taken by unnecessary stuff on MacBook Air&quot; decoding=&quot;async&quot; src=&quot;https://assets.deepakness.com/raw/codex-macos-cleaning/unused-apps-storage.png&quot;&gt;&lt;/p&gt;
&lt;p&gt;It also gave me suggestion to remove folders from the &lt;code&gt;~Library/Application Support/*&lt;/code&gt; from apps which were not used or not installed on my system anymore. From here, you can see that I try a lot of applications like browsers and so on.&lt;/p&gt;
&lt;p&gt;&lt;img alt=&quot;Library &gt; Application Data on macOS&quot; decoding=&quot;async&quot; src=&quot;https://assets.deepakness.com/raw/codex-macos-cleaning/library-application-data.png&quot;&gt;&lt;/p&gt;
&lt;p&gt;The screenshots you see above, is from an HTML file that I asked Codex to create after analyzing my laptop in detail. And it created a complete checklist with all the information that I can do to optimize my laptop. It did a great job.&lt;/p&gt;
&lt;p&gt;Now, the funny thing is I earlier &lt;a rel=&quot;noreferrer&quot; target=&quot;_blank&quot; href=&quot;https://github.com/tw93/mole&quot;&gt;used Mole&lt;/a&gt; and even subscribed to the CleanMyMac app and there also weren&#39;t able to free these unnecessarily occupied storage. I tried them a few times, and they only cleared a maximum of 5-10 GB storage.&lt;/p&gt;
&lt;p&gt;Another funny thing is, I have used Linux for years in the past and I know about the file systems a bit. But I have become lazy ever since I started using macOS (I love my MacBook though) and didn&#39;t even bother to check those folders. But after Codex gave suggestions, I went and deleted unnecessary folders and files by myself, and cleared over 100 GB of storage.&lt;/p&gt;
&lt;p&gt;Life&#39;s good now!&lt;/p&gt;
</content>
  </entry>
  <entry>
    <title>SharePDF now has 200 users</title>
    <link href="https://deepakness.com/raw/sharepdf-200-users/" />
    <updated>2026-05-12T17:37:28Z</updated>
    <id>https://deepakness.com/raw/sharepdf-200-users/</id>
    <summary>The simple PDF sharing app I created now has 200 users, and it&#39;s been an amazing feeling so far.</summary>
    <content type="html">&lt;p&gt;I started working on SharePDF in January 2026, and it&#39;s been an amazing journey. It took ~4 months to reach &lt;a rel=&quot;noreferrer&quot; target=&quot;_blank&quot; href=&quot;https://sharepdf.app/blog/sharepdf-now-has-100-users&quot;&gt;100 users&lt;/a&gt;, and now we&#39;re &lt;a rel=&quot;noreferrer&quot; target=&quot;_blank&quot; href=&quot;https://sharepdf.app/blog/sharepdf-200-users&quot;&gt;looking at 200 users&lt;/a&gt; in just 20 days after that.&lt;/p&gt;
&lt;p&gt;Crazy, right? At least for me.&lt;/p&gt;
&lt;p&gt;&lt;img alt=&quot;SharePDF now has 200 users&quot; decoding=&quot;async&quot; src=&quot;https://assets.deepakness.com/raw/sharepdf-200-users/200-users.png&quot;&gt;&lt;/p&gt;
&lt;p&gt;And in the last few weeks, I have also added enhanced existing stuff and have also added a few more features to the app. Some improvements done were:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Added a way to replace PDFs while keeping the same old share link&lt;/li&gt;
&lt;li&gt;Introduced collections, a way to better manage lots of PDFs for power users&lt;/li&gt;
&lt;li&gt;Improved analytics, so now users can see more data points, including per PDF analytics as well&lt;/li&gt;
&lt;li&gt;Improved custom domain, billing, support, uploads, reliability, etc.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;And still working to make everything even better for users.&lt;/p&gt;
&lt;p&gt;Also, wrote a new blog post listing all the &lt;a rel=&quot;noreferrer&quot; target=&quot;_blank&quot; href=&quot;https://sharepdf.app/blog/sharepdf-features&quot;&gt;cool features SharePDF now has&lt;/a&gt;. I have tried to include everything here, and will probably keep this updated as well.&lt;/p&gt;
&lt;p&gt;Apart from this, I am also &lt;a rel=&quot;noreferrer&quot; target=&quot;_blank&quot; href=&quot;https://www.producthunt.com/products/sharepdf?launch=sharepdf&quot;&gt;launching SharePDF on Product Hunt&lt;/a&gt; tomorrow, i.e., May 13th at 12:30 IST. And I request your support for the launch, if you&#39;re reading this.&lt;/p&gt;
&lt;p&gt;Thank you!&lt;/p&gt;
</content>
  </entry>
  <entry>
    <title>Run NVIDIA Kimi K2.6 and others in OpenCode</title>
    <link href="https://deepakness.com/raw/nvidia-models-via-opencode/" />
    <updated>2026-05-10T07:41:09Z</updated>
    <id>https://deepakness.com/raw/nvidia-models-via-opencode/</id>
    <summary>A simple step-by-step guide to configure NVIDIA&#39;s AI models in OpenCode, set it as the default model, and verify it from the CLI.</summary>
    <content type="html">&lt;p&gt;I wanted to use &lt;a rel=&quot;noreferrer&quot; target=&quot;_blank&quot; href=&quot;https://build.nvidia.com/moonshotai/kimi-k2.6&quot;&gt;Kimi K2.6 from NVIDIA&lt;/a&gt; inside OpenCode, and it was simpler than I first thought. This and a bunch of other open-source models are free to try in NVIDIA, by the way.&lt;/p&gt;
&lt;p&gt;I only had to add the API key, model details, and the correct base URL in the OpenCode config.&lt;/p&gt;
&lt;p&gt;I wanted to try Kimi K2.6 but you can try other models as well. For Kimi, NVIDIA&#39;s model name is:&lt;/p&gt;
&lt;pre class=&quot;language-text&quot; tabindex=&quot;0&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;moonshotai/kimi-k2.6&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;But inside OpenCode, I had use it like below&lt;/p&gt;
&lt;pre class=&quot;language-text&quot; tabindex=&quot;0&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;nvidia/moonshotai/kimi-k2.6&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;I edited this file on my macOS device:&lt;/p&gt;
&lt;pre class=&quot;language-text&quot; tabindex=&quot;0&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;~/.config/opencode/opencode.jsonc&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;And added this 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;$schema&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://opencode.ai/config.json&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;&quot;model&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;nvidia/moonshotai/kimi-k2.6&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;&quot;provider&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;nvidia&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;npm&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;@ai-sdk/openai-compatible&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;NVIDIA&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;https://integrate.api.nvidia.com/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;options&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://integrate.api.nvidia.com/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;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;YOUR_NVIDIA_API_KEY_HERE&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
        &lt;span class=&quot;token property&quot;&gt;&quot;timeout&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;600000&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
        &lt;span class=&quot;token property&quot;&gt;&quot;chunkTimeout&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;60000&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
        &lt;span class=&quot;token property&quot;&gt;&quot;extraBody&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;chat_template_kwargs&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;thinking&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 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 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 property&quot;&gt;&quot;moonshotai/kimi-k2.6&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;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;Kimi K2.6&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;tool_call&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;temperature&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;attachment&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;interleaved&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;field&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;reasoning_content&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;modalities&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 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 string&quot;&gt;&quot;video&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;output&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 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;limit&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;context&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;output&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;65536&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;options&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;chat_template_kwargs&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;thinking&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 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 important bit is this URL:&lt;/p&gt;
&lt;pre class=&quot;language-text&quot; tabindex=&quot;0&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;https://integrate.api.nvidia.com/v1&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;NVIDIA&#39;s example uses the full &lt;code&gt;/chat/completions&lt;/code&gt; URL, but OpenCode only needs the base URL. It adds &lt;code&gt;/chat/completions&lt;/code&gt; by itself.&lt;/p&gt;
&lt;p&gt;Works as expected, so that&#39;s it.&lt;/p&gt;
</content>
  </entry>
  <entry>
    <title>Laravel installer getting killed after update</title>
    <link href="https://deepakness.com/raw/laravel-herd-lite-fix/" />
    <updated>2026-05-06T16:50:15Z</updated>
    <id>https://deepakness.com/raw/laravel-herd-lite-fix/</id>
    <summary>A short note on fixing Laravel installer commands getting killed on macOS after updating Herd Lite / php.new.</summary>
    <content type="html">&lt;p&gt;I ran into this after updating Laravel / Herd Lite using the &lt;code&gt;php.new&lt;/code&gt; installer. The update itself looked successful, but when I tried creating a new Laravel project, the command was immediately killed by macOS.&lt;/p&gt;
&lt;p&gt;Initially, it looked like a Laravel installer issue because I also saw a PHP parse error from inside the Laravel installer PHAR. But the actual issue was lower-level: the bundled PHP binary was getting blocked/killed when running from Herd Lite&#39;s installed bin directory.&lt;/p&gt;
&lt;p&gt;The fix was to download fresh PHP, Composer, and Laravel installer binaries and place them in a clean local bin directory. Then I updated my shell &lt;code&gt;PATH&lt;/code&gt; so this clean directory is used before the problematic Herd Lite bin path.&lt;/p&gt;
&lt;p&gt;In short:&lt;/p&gt;
&lt;pre class=&quot;language-sh&quot; tabindex=&quot;0&quot;&gt;&lt;code class=&quot;language-sh&quot;&gt;&lt;span class=&quot;token builtin class-name&quot;&gt;export&lt;/span&gt; &lt;span class=&quot;token assign-left variable&quot;&gt;&lt;span class=&quot;token environment constant&quot;&gt;PATH&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;&lt;span class=&quot;token environment constant&quot;&gt;$HOME&lt;/span&gt;/.local/herd-lite-bin:&lt;span class=&quot;token environment constant&quot;&gt;$PATH&lt;/span&gt;&quot;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;After reloading the terminal, &lt;code&gt;php&lt;/code&gt;, &lt;code&gt;composer&lt;/code&gt;, and &lt;code&gt;laravel&lt;/code&gt; resolved to the working binaries, and &lt;code&gt;laravel new&lt;/code&gt; started working again.&lt;/p&gt;
&lt;p&gt;So if Laravel commands suddenly start saying &lt;code&gt;zsh: killed&lt;/code&gt; after a Herd Lite / php.new update, check where your &lt;code&gt;php&lt;/code&gt; and &lt;code&gt;laravel&lt;/code&gt; binaries are coming from first.&lt;/p&gt;
</content>
  </entry>
  <entry>
    <title>From free tools to full SaaS</title>
    <link href="https://deepakness.com/raw/free-tools-to-saas/" />
    <updated>2026-05-06T01:10:16Z</updated>
    <id>https://deepakness.com/raw/free-tools-to-saas/</id>
    <summary>A quick thought on how to build SaaS in the age of AI, that I think still works.</summary>
    <content type="html">&lt;p&gt;I created a free tool a few months ago, and now it&#39;s getting 10-15 clicks every day from Google, as you see in the screenshot here. So... I researched a bit and realized that there is a solid SaaS opportunity on the site, I can have the main tool free but then can also build some paid features in the web app.&lt;/p&gt;
&lt;p&gt;&lt;img alt=&quot;Google Search Console screenshot of a free tool getting traffic&quot; decoding=&quot;async&quot; src=&quot;https://assets.deepakness.com/raw/free-tools-to-saas/gsc-1.png&quot;&gt;&lt;/p&gt;
&lt;p&gt;And not just this, take a look at another free tool I created before ChatGPT was launched, and it&#39;s still getting lots of traffic from Google and other referrers. Take a look at the screenshot here:&lt;/p&gt;
&lt;p&gt;&lt;img alt=&quot;GSC for another free app getting traffic from Google&quot; decoding=&quot;async&quot; src=&quot;https://assets.deepakness.com/raw/free-tools-to-saas/gsc-2.png&quot;&gt;&lt;/p&gt;
&lt;p&gt;This one is getting 80-140 clicks a day consistently for years now, and I haven&#39;t done anything with it yet, but not anymore. I am working on it to bring some paid offerings in the app, currently, in the brainstorming phase. For research, I am analyzing other similar apps and also going through the data from Google Search Console, and it&#39;s been very helpful so far.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;If you&#39;re wondering, I am not going to tell you what the app is about just yet because it&#39;s very simple, and the idea can be copied with just a prompt. But yes, I will eventually share more about these.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Honestly, &quot;distribution&quot; has always been important, but it has become even more important in the age of AI because &quot;code&quot; is not the moat anymore. In my case, I already have thousands of visitors coming to the tool and if I create the paid version, I will instantly have lots of potential customers.&lt;/p&gt;
&lt;p&gt;Also, the concept of &lt;a rel=&quot;noreferrer&quot; target=&quot;_blank&quot; href=&quot;https://deepakness.com/blog/engineering-as-marketing/&quot;&gt;engineering as marketing&lt;/a&gt; is the most rewarding than ever in the current time, because creating free tools around your main product is simpler and faster than ever. If you want to experiment something with the lowest effort, just ask any LLM to give you ideas for free tools around you main product, create one, publish it in a subdomain, and forget it for a few weeks. If you see a positive traction, create the tool on the main domain, and do a redirect from the subdomain.&lt;/p&gt;
&lt;p&gt;I think, this is the best use-case of AI for marketing.&lt;/p&gt;
</content>
  </entry>
  <entry>
    <title>Save a clipboard image to computer on macOS</title>
    <link href="https://deepakness.com/raw/save-clipboard-image-macos/" />
    <updated>2026-05-01T16:25:54Z</updated>
    <id>https://deepakness.com/raw/save-clipboard-image-macos/</id>
    <summary>Just find out this trick to save clipboard images to your computer when you&#39;re on macOS.</summary>
    <content type="html">&lt;p&gt;I take a lot of screenshots and most of the time keep them in my clipboard and then paste wherever needed, like on socials or in AI coding tools when working. But sometimes, I also need to save those images locally on my computer, and till now I have been doing one of these two things:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Either take the screenshot once again, or&lt;/li&gt;
&lt;li&gt;Paste images somewhere like on Imgur, and then save by using &amp;quot;save image as&amp;quot; feature&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Silly, but yes.&lt;/p&gt;
&lt;p&gt;However, I recently found out a trick that works like a charm, at least on macOS. The process is:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Open the Preview app, you can do so by searching for Preview via Spotlight search&lt;/li&gt;
&lt;li&gt;Press &lt;code&gt;cmd + n&lt;/code&gt; and you should already see the image from your clipboard&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Now, just save it using &lt;code&gt;cmd + s&lt;/code&gt; or however you want to, as you see in the screenshot here.&lt;/p&gt;
&lt;p&gt;&lt;img alt=&quot;Save clipboard image on computer in macOS&quot; decoding=&quot;async&quot; src=&quot;https://assets.deepakness.com/raw/save-clipboard-image-macos/save-clipboard-image.png&quot;&gt;&lt;/p&gt;
&lt;p&gt;It works as expected and even gives you image format you want to save your screenshots as.&lt;/p&gt;
&lt;p&gt;TIL.&lt;/p&gt;
</content>
  </entry>
  <entry>
    <title>DeepSeek v4 Pro should be taken seriously</title>
    <link href="https://deepakness.com/raw/deepseek-v4-pro/" />
    <updated>2026-04-30T17:01:42Z</updated>
    <id>https://deepakness.com/raw/deepseek-v4-pro/</id>
    <summary>I loved the new DeepSeek v4 Pro model so much that I think I won&#39;t be renewing my Codex subscription.</summary>
    <content type="html">&lt;p&gt;For the last 2 days, I have been using the DeepSeek v4 Pro model via &lt;a rel=&quot;noreferrer&quot; target=&quot;_blank&quot; href=&quot;https://opencode.ai/go&quot;&gt;OpenCode Go&lt;/a&gt; and it has been a fantastic experience. I never expected the model to be this good at UI as well as logic.&lt;/p&gt;
&lt;p&gt;For example, I am creating &lt;a rel=&quot;noreferrer&quot; target=&quot;_blank&quot; href=&quot;https://x.com/DeepakNesss/status/2049892556079788256&quot;&gt;a custom blog publishing CMS&lt;/a&gt; powered entirely by Cloudflare (D1, R2, and Workers). Initially, I used Codex for this and Codex did ready the first working version, but the UI was very bad and cluttered and the user-experience wasn&#39;t great either. I didn&#39;t even like the CMS a bit.&lt;/p&gt;
&lt;p&gt;But then I fired up OpenCode and gave everything to the DeepSeek v4 Pro model, and asked it to re-do and re-design everything by keeping user-experience in mind. I, then, went to the gym and the model had done its magic by the time I returned. It ran for ~35 mins and completed everything in one go, and the design was already looking much cleaner and just better.&lt;/p&gt;
&lt;p&gt;&lt;img alt=&quot;Design created by DeepSeek v4 Pro&quot; decoding=&quot;async&quot; src=&quot;https://assets.deepakness.com/raw/deepseek-v4-pro/design-by-deepseek-v4-pro.png&quot;&gt;&lt;/p&gt;
&lt;p&gt;I still had to give a few more prompts to refine some things, and it did everything perfectly. Just for your information, while working, I kept the thinking effort as default, as you see in the screenshot.&lt;/p&gt;
&lt;p&gt;&lt;img alt=&quot;DeepSeek v4 Pro thinking effort as Default&quot; decoding=&quot;async&quot; src=&quot;https://assets.deepakness.com/raw/deepseek-v4-pro/thinking-effort.png&quot;&gt;&lt;/p&gt;
&lt;p&gt;From the next month, I think I am going to &lt;a rel=&quot;noreferrer&quot; target=&quot;_blank&quot; href=&quot;https://deepakness.com/raw/50-dollar-ai/&quot;&gt;save decent amount of money&lt;/a&gt; on AI tools subscriptions. Currently, I am subscribed to Codex $100 plan but now I think Codex $20 with OpenCode $10 (+ $10-20 for extra usage) should be enough for my use case.&lt;/p&gt;
&lt;p&gt;Lastly, I think the DeepSeek v4 models should be taken more seriously by everyone. Their &lt;a rel=&quot;noreferrer&quot; target=&quot;_blank&quot; href=&quot;https://api-docs.deepseek.com/quick_start/pricing&quot;&gt;API pricing&lt;/a&gt; is also currently discounted by 75%, and there is absolutely no reason to not use this model.&lt;/p&gt;
</content>
  </entry>
  <entry>
    <title>Introducing EternalQR – a dynamic QR code tool</title>
    <link href="https://deepakness.com/raw/eternalqr-intro/" />
    <updated>2026-04-28T03:24:11Z</updated>
    <id>https://deepakness.com/raw/eternalqr-intro/</id>
    <summary>Introducing EternalQR, a dynamic QR code tool with editable links, scan analytics, and simple pricing.</summary>
    <content type="html">&lt;p&gt;Introducing &lt;a rel=&quot;noreferrer&quot; target=&quot;_blank&quot; href=&quot;https://eternalqr.app&quot;&gt;EternalQR&lt;/a&gt; – a small web-app to create dynamic QR codes, update their links later, track scans, customize them, and download them as PNG or SVG files.&lt;/p&gt;
&lt;p&gt;I got the idea for this from something that happened to my brother.&lt;/p&gt;
&lt;p&gt;He had created a video on YouTube and added a QR code to it using some free QR code tool he found online. Initially, the QR code was working correctly. But later, when the video started getting lots of views, the QR code stopped working.&lt;/p&gt;
&lt;p&gt;And because the QR code was already inside the video, there was no way to update or replace it.&lt;/p&gt;
&lt;p&gt;That made me think that QR codes are a bit different from normal links. A link on a website can be changed anytime. But a QR code often ends up in places that are hard to edit later – YouTube videos, restaurant menus, business cards, flyers, packaging, event signs, invoices, stickers, and so on.&lt;/p&gt;
&lt;p&gt;So I created &lt;a rel=&quot;noreferrer&quot; target=&quot;_blank&quot; href=&quot;https://eternalqr.app&quot;&gt;EternalQR&lt;/a&gt; around one simple idea: if a QR code is already created and used somewhere, normal plan changes should not turn it into a dead link.&lt;/p&gt;
&lt;p&gt;&lt;img alt=&quot;Creating new QR code in EternalQR app&quot; decoding=&quot;async&quot; src=&quot;https://assets.deepakness.com/raw/eternalqr-intro/create-new-qr-code.png&quot;&gt;&lt;/p&gt;
&lt;p&gt;Some things it supports right now:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;dynamic QR codes with editable destinations&lt;/li&gt;
&lt;li&gt;scan analytics with country, device, browser, referrer, and time&lt;/li&gt;
&lt;li&gt;QR codes for websites, contact cards, Wi-Fi, SMS, email, phone, and plain text&lt;/li&gt;
&lt;li&gt;logo and color customization&lt;/li&gt;
&lt;li&gt;PNG and SVG downloads&lt;/li&gt;
&lt;li&gt;pause, expiry dates, tags, and basic dashboard management&lt;/li&gt;
&lt;li&gt;existing QR codes keep redirecting through normal plan changes&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The &lt;a rel=&quot;noreferrer&quot; target=&quot;_blank&quot; href=&quot;https://x.com/DeepakNesss/status/2048801107334627425&quot;&gt;app is built on&lt;/a&gt; Cloudflare Workers, D1, and KV, so redirects are very cheap to serve. Paid plans are mainly for things like more QR codes, longer analytics history, customization, and other features.&lt;/p&gt;
&lt;p&gt;The pricing is also kept simple:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Free – 5 QR codes&lt;/li&gt;
&lt;li&gt;Starter – $5/mo for 50 QR codes&lt;/li&gt;
&lt;li&gt;Pro – $19/mo for unlimited QR codes&lt;/li&gt;
&lt;li&gt;Lifetime – $89 once for Starter features&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Not to mention, but all these plans come with unlimited scans.&lt;/p&gt;
&lt;p&gt;Here&#39;s how an already created QR code page looks, with scan analytics and more.&lt;/p&gt;
&lt;p&gt;&lt;img alt=&quot;Scan analytics for QR codes at EternalQR&quot; decoding=&quot;async&quot; src=&quot;https://assets.deepakness.com/raw/eternalqr-intro/scan-analytics.png&quot;&gt;&lt;/p&gt;
&lt;p&gt;It&#39;s not a huge ambitious product, but just a practical tool for a problem I saw happen in real life.&lt;/p&gt;
</content>
  </entry>
  <entry>
    <title>Compact Tabs are back in the Safari browser</title>
    <link href="https://deepakness.com/raw/safari-compact-tabs-in-26-4-1/" />
    <updated>2026-04-26T20:42:27Z</updated>
    <id>https://deepakness.com/raw/safari-compact-tabs-in-26-4-1/</id>
    <summary>Apple brought back the Compact Tabs feature in the Safari browser in the latest macOS Tahoe 26.4.1 update.</summary>
    <content type="html">&lt;p&gt;I love using the Safari web browser on my MacBook, especially when I&#39;m traveling because it consumes less battery on the laptop. But with the macOS Tahoe 26 update, the Compact tabs feature was removed from the browser, and I was sad about it.&lt;/p&gt;
&lt;p&gt;And I&#39;m just learning that with the new macOS Tahoe 26.4.1 update, the compact tabs feature is back in the Safari browser, as you see in the screenshot here.&lt;/p&gt;
&lt;p&gt;&lt;img alt=&quot;Compact tabs feature in the Safari browser. &quot; decoding=&quot;async&quot; src=&quot;https://assets.deepakness.com/raw/safari-compact-tabs-in-26-4-1/compact-tabs-safari.png&quot;&gt;&lt;/p&gt;
&lt;p&gt;It&#39;s good already, but I think it behaves a bit differently than it did in the macOS Sequoia or Sonoma, when it was still available. But it&#39;s still good, and I&#39;m using it for a day and love it.&lt;/p&gt;
&lt;p&gt;Thank you, Apple.&lt;/p&gt;
</content>
  </entry>
  <entry>
    <title>How to best spend $50 on AI coding tools</title>
    <link href="https://deepakness.com/raw/50-dollar-ai/" />
    <updated>2026-04-24T16:24:36Z</updated>
    <id>https://deepakness.com/raw/50-dollar-ai/</id>
    <summary>If you have $50 to spend each month on AI coding tools, go with Claude Pro, Codex Plus, and OpenCode Go.</summary>
    <content type="html">&lt;p&gt;I have been spending over $100 every month on Claude Max and Codex Pro plans as I use the latest models from these providers for coding, but now I don&#39;t think that&#39;s the best way to do it anymore.&lt;/p&gt;
&lt;p&gt;The current best option I think is, instead of getting higher plan for any one AI tool, get smaller plans for multiple providers. And the best combo I can think of is the following.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Claude Pro – $20/mo&lt;/li&gt;
&lt;li&gt;Codex Plus – $20/mo&lt;/li&gt;
&lt;li&gt;OpenCode Go – $10/mo&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Getting all these will only cost $50, but this is more than enough for my requirements. Here I will save money and also have access to top models from multiple providers. The different models can be used for different tasks that they&#39;re actually good at, for example:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;for all design and UI related work – use the latest Claude models&lt;/li&gt;
&lt;li&gt;for complex logic and programming – use the latest Codex models&lt;/li&gt;
&lt;li&gt;for smaller tasks and everything else – use Kimi, GLM, or Qwen models via OpenCode&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;And not just me but several &lt;a rel=&quot;noreferrer&quot; target=&quot;_blank&quot; href=&quot;https://x.com/DanKulkov/status/2047701466408976525&quot;&gt;other people&lt;/a&gt; are also starting to realize this.&lt;/p&gt;
&lt;p&gt;Currently, I am subscribed to Codex $100 plan that ends next month, and also to OpenCode Go plan. But I&#39;m going to downgrade Codex to $20 plan and then also subscribe to Claude $20 plan and keep my OpenCode Go for $10.&lt;/p&gt;
&lt;p&gt;That should be more than enough for three &lt;a rel=&quot;noreferrer&quot; target=&quot;_blank&quot; href=&quot;https://deepakness.com/projects/&quot;&gt;full-time projects&lt;/a&gt; I am currently working on.&lt;/p&gt;
</content>
  </entry>
  <entry>
    <title>My experience with the new GPT-5.5 model</title>
    <link href="https://deepakness.com/raw/gpt-5-5-experience/" />
    <updated>2026-04-24T08:41:29Z</updated>
    <id>https://deepakness.com/raw/gpt-5-5-experience/</id>
    <summary>Yesterday, OpenAI launched its new GPT-5.5 model and I am documenting my experiences in this post.</summary>
    <content type="html">&lt;p&gt;Yesterday, OpenAI launched the newest &lt;a rel=&quot;noreferrer&quot; target=&quot;_blank&quot; href=&quot;https://openai.com/index/introducing-gpt-5-5/&quot;&gt;model GPT-5.5&lt;/a&gt; which I was too excited about for the last few days. And here are my experiences so far with using the new model inside the Codex app.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;GPT-5.5 is far &lt;a rel=&quot;noreferrer&quot; target=&quot;_blank&quot; href=&quot;https://x.com/DeepakNesss/status/2047393668324331616&quot;&gt;better in frontend design&lt;/a&gt; than other OpenAI models like GPT-5.4 or 5.3-Codex. But it&#39;s still not at the level of Opus 4.7 of 4.6 when it comes to UI design.&lt;/li&gt;
&lt;li&gt;Even though it was claimed by Sam Altman that the new model &lt;a rel=&quot;noreferrer&quot; target=&quot;_blank&quot; href=&quot;https://x.com/sama/status/2047378254575685707&quot;&gt;uses fewer tokens per task&lt;/a&gt; than previous models, it&#39;s not the case when I use it. In my case, it used way more tokens than GPT-5.4 because earlier I could never finish the 5-hour limit on the $100 plan, but today I did, as you see below.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;img alt=&quot;GPT-5.5 token usage&quot; decoding=&quot;async&quot; src=&quot;https://assets.deepakness.com/raw/gpt-5-5-experience/gpt-5-5-token-usage.png&quot;&gt;&lt;/p&gt;
&lt;ol start=&quot;3&quot;&gt;
&lt;li&gt;The new model, GPT-5.5, definitely feels slightly faster than the previous, GPT-5.4, model in the standard mode. I think, both are equally faster in the speed/fast mode.&lt;/li&gt;
&lt;li&gt;I didn&#39;t notice any significant improvement in the programming though with the GPT-5.5 model, it feels similarly capable as GPT-5.4 model. Or, maybe I haven&#39;t tested this enough yet.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Also, the new Codex app feels snappier and the UI and UX is slightly improved now.&lt;/p&gt;
&lt;p&gt;Apart from this, I can still not rely completely on the Codex subscription itself. I can &lt;a rel=&quot;noreferrer&quot; target=&quot;_blank&quot; href=&quot;https://x.com/DeepakNesss/status/2047184706412953894&quot;&gt;use OpenCode&lt;/a&gt; with models like GLM-5.1 and Kimi-K2.6 for frontend design and then GPT-5.5 for everything else. The OpenCode Go plan is very generous at $10/mo and has crazy limits as well. So if I had to reduce my monthly spending, I would go with OpenCode Go ($10/mo) + ChatGPT Plus ($20/mo) and maybe $20-30 extra on OpenCode, and that should cover all my requirements.&lt;/p&gt;
&lt;p&gt;I&#39;m still playing with the GPT-5.5 model so if I find something new worth sharing, I will keep this post updated.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Update&lt;/strong&gt;: Apr 25, 2026&lt;/p&gt;
&lt;p&gt;I &lt;a rel=&quot;noreferrer&quot; target=&quot;_blank&quot; href=&quot;https://x.com/DeepakNesss/status/2047640208347447332&quot;&gt;posted about limits draining too fast on X&lt;/a&gt; and many people recommended that I should rarely use Extra High effort for my tasks, and suggested using either Medium or High for most tasks. So... I gave the &quot;High&quot; effort a try, and it&#39;s good, I am satisfied with it so far.&lt;/p&gt;
</content>
  </entry>
  <entry>
    <title>SharePDF reaches 100 users</title>
    <link href="https://deepakness.com/raw/sharepdf-100-users/" />
    <updated>2026-04-23T06:43:06Z</updated>
    <id>https://deepakness.com/raw/sharepdf-100-users/</id>
    <summary>Probably my first proper SaaS product has now reached 100 users and I am so happy for it.</summary>
    <content type="html">&lt;p&gt;The app to share PDFs, &lt;a rel=&quot;noreferrer&quot; target=&quot;_blank&quot; href=&quot;https://sharepdf.app&quot;&gt;SharePDF.app&lt;/a&gt;, that I created early this year has now reached the milestone of &lt;a rel=&quot;noreferrer&quot; target=&quot;_blank&quot; href=&quot;https://sharepdf.app/blog/sharepdf-now-has-100-users&quot;&gt;100 users&lt;/a&gt; and I&#39;m so happy for it. It took around 4 months to reach this milestone and I don&#39;t know what, but it makes me super happy.&lt;/p&gt;
&lt;p&gt;I have been documenting most of the things &lt;a rel=&quot;noreferrer&quot; target=&quot;_blank&quot; href=&quot;https://deepakness.com/sharepdf/&quot;&gt;on this page&lt;/a&gt; and reading previous logs takes me through the journey of things I did in the past few months – how I finalized which tech-stack to use, how I decided different features the app has, and more.&lt;/p&gt;
&lt;p&gt;SharePDF is running stable and I don&#39;t need to do much on it now. But I still have 1-2 features or rather enhancements planned for near future. Also, I will be working on improving the landing pages as well, and maybe even create a few new ones targeting keywords that get searched a lot.&lt;/p&gt;
</content>
  </entry>
  <entry>
    <title>Codex is smarter than Claude Code</title>
    <link href="https://deepakness.com/raw/codex-is-smarter-than-claude/" />
    <updated>2026-04-21T07:07:11Z</updated>
    <id>https://deepakness.com/raw/codex-is-smarter-than-claude/</id>
    <summary>After seriously using Codex for a few days, it definitely seems smarter than Claude Code. It&#39;s just bad at design.</summary>
    <content type="html">&lt;p&gt;After seriously using Codex for a few days, it definitely seems smarter than Claude Code. But Codex is just awful at design. I have tried to make good designs using Codex multiple times, and it just doesn&#39;t work. In fact, I tried creating a few new pages for my Vemgram project that I am mainly working on these days, and even though the site has a design system set up, Codex is still unable to create designs that matches the aesthetics of the rest of the website.&lt;/p&gt;
&lt;p&gt;I am very much disappointed for that.&lt;/p&gt;
&lt;p&gt;For this reason, nowadays, I have started using &lt;a rel=&quot;noreferrer&quot; target=&quot;_blank&quot; href=&quot;https://opencode.ai/&quot;&gt;OpenCode&lt;/a&gt; whenever I need to design something. I love the newest launched models like Kimi K2.5, Qwen 3.6 Plus, and GLM-5.1 models inside OpenCode. These open-source models are almost as good as Opus 4.6/4.7 when it comes to design.&lt;/p&gt;
&lt;p&gt;Apart from this, I am hearing rumors that OpenAI is about to launch GPT-5.5 and also that it&#39;s great at design. If that&#39;s the case, I won&#39;t regret subscribing to Codex Pro at all.&lt;/p&gt;
</content>
  </entry>
  <entry>
    <title>After Claude, now Codex can&#39;t keep up with the demand</title>
    <link href="https://deepakness.com/raw/codex-cant-keep-up/" />
    <updated>2026-04-20T15:18:22Z</updated>
    <id>https://deepakness.com/raw/codex-cant-keep-up/</id>
    <summary>I wonder if they can&#39;t keep up with rising demands, why don&#39;t they pause Codex signups temporarily?</summary>
    <content type="html">&lt;p&gt;It&#39;s been almost an hour since OpenAI&#39;s &lt;a rel=&quot;noreferrer&quot; target=&quot;_blank&quot; href=&quot;https://status.openai.com&quot;&gt;Codex is completely down&lt;/a&gt;, as you see in the screenshot below. I recently moved away from Claude for this reason, and now I am facing the same issues here as well.&lt;/p&gt;
&lt;p&gt;&lt;img alt=&quot;Codex is down&quot; decoding=&quot;async&quot; src=&quot;https://assets.deepakness.com/raw/codex-cant-keep-up/codex-down.png&quot;&gt;&lt;/p&gt;
&lt;p&gt;Codex still hasn&#39;t become as bad as Claude was a week ago and before that, but it seems like it&#39;s getting there. And it&#39;s surprising to me that if these AI companies can&#39;t keep up with the rising demands, why don&#39;t they just pause new signups temporarily? I mean, it will be better for everyone, no? – for users and then for their own brand image as well.&lt;/p&gt;
&lt;p&gt;This is not at all fair for users. They&#39;re paying the premium to just experience degraded performance all the time. For example, just take a look at &lt;a rel=&quot;noreferrer&quot; target=&quot;_blank&quot; href=&quot;https://status.claude.com&quot;&gt;Claude&#39;s status chart&lt;/a&gt; for the last 90 days and you&#39;ll see lots of yellows and reds.&lt;/p&gt;
&lt;p&gt;&lt;img alt=&quot;Claude status for the last 90 days&quot; decoding=&quot;async&quot; src=&quot;https://assets.deepakness.com/raw/codex-cant-keep-up/claude-status-90.png&quot;&gt;&lt;/p&gt;
&lt;p&gt;I, myself, had been paying at least $100 each month to Claude and now to Codex, but getting the same degraded performance. Honestly, I don&#39;t blame OpenAI or Anthropic for that they can&#39;t keep up with the demand, but I blame them because why are they still allowing signups and ruining the experience for everyone? They should just pause signups for some time till they get more compute, and if required pause again for some time till they get more compute, and so on.&lt;/p&gt;
&lt;p&gt;I also run a SaaS, and I will feel very bad if I keep charging a fee to my customers and if my app is consistently down. I will even refund them and pause new signups till I get things sorted.&lt;/p&gt;
&lt;p&gt;That&#39;s it.&lt;/p&gt;
&lt;p&gt;Sorry for the rant, really.&lt;/p&gt;
</content>
  </entry>
  <entry>
    <title>I like Claude Code CLI&#39;s no flicker mode</title>
    <link href="https://deepakness.com/raw/claude-no-flicker-mode/" />
    <updated>2026-04-14T12:31:19Z</updated>
    <id>https://deepakness.com/raw/claude-no-flicker-mode/</id>
    <summary>Just started using Claude Code&#39;s new no-flicker or full-screen mode and I like it better than earlier.</summary>
    <content type="html">&lt;p&gt;I just started using Claude Code&#39;s new &lt;a rel=&quot;noreferrer&quot; target=&quot;_blank&quot; href=&quot;https://code.claude.com/docs/en/fullscreen&quot;&gt;no-flicker or full-screen mode&lt;/a&gt; for the CLI and I like it better than earlier. When enabled, it just sends the text input field at the bottom of the screen and makes it sticky. Just like how you see in the screenshot here:&lt;/p&gt;
&lt;p&gt;&lt;img alt=&quot;Claude Code CLI no-flicker mode&quot; decoding=&quot;async&quot; src=&quot;https://assets.deepakness.com/raw/claude-no-flicker-mode/claude-no-flicker.png&quot;&gt;&lt;/p&gt;
&lt;p&gt;I like it because it doesn&#39;t disturb me when Claude is generating a large output, then I can keep reading from the top while it outputs at the bottom, without disturbing my flow.&lt;/p&gt;
</content>
  </entry>
  <entry>
    <title>Mistakes were made at Google Search Console</title>
    <link href="https://deepakness.com/raw/mistakes-at-gsc/" />
    <updated>2026-04-14T12:10:00Z</updated>
    <id>https://deepakness.com/raw/mistakes-at-gsc/</id>
    <summary>Receiving emails from GSC that are normally sent when a new site is added to Google Search Console.</summary>
    <content type="html">&lt;p&gt;Today, I suddenly started receiving emails like below from Google Search Console for all my sites already added. These emails are normally sent when a new site is added to the GSC for tracking the search performance, but mistakes were made, for sure.&lt;/p&gt;
&lt;p&gt;&lt;img alt=&quot;Repeated emails from Google Search Console&quot; decoding=&quot;async&quot; src=&quot;https://assets.deepakness.com/raw/mistakes-at-gsc/emails-from-gsc.png&quot;&gt;&lt;/p&gt;
&lt;p&gt;I have at least 8-10 sites added to this Gmail account and I received emails for all those in a 3-5 hour span. I also &lt;a rel=&quot;noreferrer&quot; target=&quot;_blank&quot; href=&quot;https://x.com/DeepakNesss/status/2044010310160564235&quot;&gt;posted about this on X&lt;/a&gt; and several people confirmed that they have also received the same emails.&lt;/p&gt;
&lt;p&gt;&lt;img alt=&quot;GSC email detail&quot; decoding=&quot;async&quot; src=&quot;https://assets.deepakness.com/raw/mistakes-at-gsc/gsc-email-detail.png&quot;&gt;&lt;/p&gt;
&lt;p&gt;And if you&#39;re curious about the contents of these emails, see the screenshot above. It&#39;s the same that Google sends when you add a new site to GSC.&lt;/p&gt;
&lt;p&gt;I hope they fix it soon and do not annoy me, again.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Update&lt;/strong&gt;: Apr 15, 2026&lt;/p&gt;
&lt;p&gt;It was just a &quot;glitch&quot; as everyone suspected, as confirmed by John Muller from Google. Learned about this from &lt;a rel=&quot;noreferrer&quot; target=&quot;_blank&quot; href=&quot;https://x.com/gaganghotra_/status/2044132632058048933&quot;&gt;this post on X&lt;/a&gt; by Gagan Ghotra.&lt;/p&gt;
</content>
  </entry>
  <entry>
    <title>Introducing SharePDF app</title>
    <link href="https://deepakness.com/raw/introducing-sharepdf/" />
    <updated>2026-04-14T04:29:42Z</updated>
    <id>https://deepakness.com/raw/introducing-sharepdf/</id>
    <summary>SharePDF is a web app to upload and share PDFs as URLs and track their analytics in an easier and better way.</summary>
    <content type="html">&lt;p&gt;Introducing &lt;a rel=&quot;noreferrer&quot; target=&quot;_blank&quot; href=&quot;https://sharepdf.app&quot;&gt;SharePDF&lt;/a&gt; – a web-app to host PDFs, share them as URLs, track their view analytics, and do much more. It&#39;s live and working, and already has more than 80 users at the time of writing this post.&lt;/p&gt;
&lt;p&gt;I had this idea to create an app that makes sharing PDFs easier for at least 2 years, but I never worked on it. However, somehow I started working on it from January this year, i.e. 2026. I haven&#39;t done any kind of marketing as of now, and still regularly getting signups from sources I wouldn&#39;t even have guessed – Instagram and ChatGPT. Yes, someone must have created some content that people are discovering SharePDF from.&lt;/p&gt;
&lt;p&gt;&lt;img alt=&quot;SharePDF X intro&quot; decoding=&quot;async&quot; src=&quot;https://assets.deepakness.com/raw/introducing-sharepdf/sharepdf-x-intro.png&quot;&gt;&lt;/p&gt;
&lt;p&gt;Today, I have also &lt;a rel=&quot;noreferrer&quot; target=&quot;_blank&quot; href=&quot;https://x.com/DeepakNesss/status/2043864578615062884&quot;&gt;posted on X&lt;/a&gt; for the first time about the app. Apart from this, I have also been sharing build logs &lt;a rel=&quot;noreferrer&quot; target=&quot;_blank&quot; href=&quot;https://deepakness.com/sharepdf/&quot;&gt;on this page&lt;/a&gt; on my website – it just helps me keep myself in the loop.&lt;/p&gt;
&lt;p&gt;Currently, I am not working on new features for the app but mainly working on improving the landing page, copy, and user experience.&lt;/p&gt;
&lt;p&gt;By the way, I also &lt;a rel=&quot;noreferrer&quot; target=&quot;_blank&quot; href=&quot;https://deepakness.com/raw/introducing-vemgram/&quot;&gt;launched Vemgram&lt;/a&gt;, a platform to connect Indian manufacturers with buyers, a few days ago. So, now, I have two full time projects that I am working on these days.&lt;/p&gt;
</content>
  </entry>
  <entry>
    <title>Better utilize Claude Code limits</title>
    <link href="https://deepakness.com/raw/better-utilize-claude-limits/" />
    <updated>2026-04-11T04:01:14Z</updated>
    <id>https://deepakness.com/raw/better-utilize-claude-limits/</id>
    <summary>A quick guide to better utilize Claude Code limits so that tokens don&#39;t go to waste.</summary>
    <content type="html">&lt;p&gt;Came across &lt;a rel=&quot;noreferrer&quot; target=&quot;_blank&quot; href=&quot;https://x.com/hqmank/status/2042201466769903906&quot;&gt;this post on X&lt;/a&gt; that shares a hack, a way to maximum utilize your Claude Code usage limits by setting up scheduled tasks. It seems silly at first, but it&#39;s actually helpful.&lt;/p&gt;
&lt;p&gt;&lt;img alt=&quot;Claude Code reset Cron&quot; decoding=&quot;async&quot; src=&quot;https://assets.deepakness.com/raw/better-utilize-claude-limits/reset-cron.png&quot;&gt;&lt;/p&gt;
&lt;p&gt;As explained in the post, I set up a cron that sends &quot;hi&quot; every 5 hours starting from 8AM IST so that as soon as the limit resets, it immediately starts a new cycle so that you have clean time blocks.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;30 2,7,12,17 * * *
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;And the best thing is, you don&#39;t need any extra tool to use for this.&lt;/p&gt;
</content>
  </entry>
  <entry>
    <title>Meta&#39;s new Muse Spark model is here</title>
    <link href="https://deepakness.com/raw/meta-muse-spark-launch/" />
    <updated>2026-04-08T17:21:02Z</updated>
    <id>https://deepakness.com/raw/meta-muse-spark-launch/</id>
    <summary>Meta just launched a new AI model called Muse Spark which is now available to use via Meta.ai app.</summary>
    <content type="html">&lt;p&gt;Meta just &lt;a rel=&quot;noreferrer&quot; target=&quot;_blank&quot; href=&quot;https://ai.meta.com/blog/introducing-muse-spark-msl/&quot;&gt;launched a new AI model&lt;/a&gt; called Muse Spark which is now available to use via meta.ai and the Meta app. It&#39;s not available via the API, yet.&lt;/p&gt;
&lt;p&gt;As of now, it looks good on the evals as you see in the screenshot here. In categories, it&#39;s shown to be even better than Opus 4.6 and GPT-5.4.&lt;/p&gt;
&lt;p&gt;&lt;img alt=&quot;Muse Spark model looks good on evals&quot; decoding=&quot;async&quot; src=&quot;https://assets.deepakness.com/raw/meta-muse-spark-launch/muse-spark-evals.png&quot;&gt;&lt;/p&gt;
&lt;p&gt;I tried the model via meta.ai web interface with my Facebook login, and I must say that it has a better sense of design than GPT-5.4. For example, I just asked it to create a minimal personal website and this was the result.&lt;/p&gt;
&lt;p&gt;&lt;img alt=&quot;Muse Spark at web design&quot; decoding=&quot;async&quot; src=&quot;https://assets.deepakness.com/raw/meta-muse-spark-launch/design.png&quot;&gt;&lt;/p&gt;
&lt;p&gt;I am still testing this, and will keep this post updated.&lt;/p&gt;
&lt;p&gt;Also, I must say that I liked the meta.ai web interface and it feels fast and snappy. It even let me see the website in a new tab.&lt;/p&gt;
</content>
  </entry>
  <entry>
    <title>Milla Jovovich&#39;s mempalace is nice, but...</title>
    <link href="https://deepakness.com/raw/milla-jovovich-mempalace/" />
    <updated>2026-04-07T16:13:12Z</updated>
    <id>https://deepakness.com/raw/milla-jovovich-mempalace/</id>
    <summary>Milla Jovovich launched an open-source AI memory system that is nice, but with lots of false claims.</summary>
    <content type="html">&lt;p&gt;Milla Jovovich launched an open-source AI memory system called &lt;a rel=&quot;noreferrer&quot; target=&quot;_blank&quot; href=&quot;https://github.com/milla-jovovich/mempalace&quot;&gt;mempalace&lt;/a&gt; with a bold claim saying &quot;highest-scoring AI memory system ever benchmarked&quot;. She first announced about this &lt;a rel=&quot;noreferrer&quot; target=&quot;_blank&quot; href=&quot;https://www.instagram.com/reel/DWzNnqwD2Lu/&quot;&gt;on her Instagram&lt;/a&gt; and then it&#39;s &lt;a rel=&quot;noreferrer&quot; target=&quot;_blank&quot; href=&quot;https://x.com/NetworkChuck/status/2041505133025194343&quot;&gt;picked by multiple folks&lt;/a&gt; from there.&lt;/p&gt;
&lt;p&gt;And yes, that &lt;a rel=&quot;noreferrer&quot; target=&quot;_blank&quot; href=&quot;https://en.wikipedia.org/wiki/Milla_Jovovich&quot;&gt;Milla Jovovich&lt;/a&gt; from movies like Resident Evil and The Fifth Element. She&#39;s an engineer and loves to code as well.&lt;/p&gt;
&lt;p&gt;But then I came across &lt;a rel=&quot;noreferrer&quot; target=&quot;_blank&quot; href=&quot;https://github.com/milla-jovovich/mempalace/issues/27&quot;&gt;this issue on GitHub&lt;/a&gt; that highlights multiple false claims, as you see in the screenshot.&lt;/p&gt;
&lt;p&gt;&lt;img alt=&quot;Issues with mempalace by Milla Jovovich&quot; decoding=&quot;async&quot; src=&quot;https://assets.deepakness.com/raw/milla-jovovich-mempalace/mempalace-issues.png&quot;&gt;&lt;/p&gt;
&lt;p&gt;As she claims in the video, it&#39;s still work in progress, and she might still be working on this, so there might be some gaps in the README vs the actual codebase. But the concept of the tool is still very good, and there is also lots of good information &lt;a rel=&quot;noreferrer&quot; target=&quot;_blank&quot; href=&quot;https://github.com/milla-jovovich/mempalace/blob/main/README.md&quot;&gt;in the README file&lt;/a&gt; that you can explore.&lt;/p&gt;
</content>
  </entry>
</feed>
