Raw notes

(471 notes)

Short notes, links, and thoughts – shared as I go through my day.


SharePDF crosses 400 users

SharePDF has now crossed 400 users and tens of new users are signing up every week. The rate varies as per different weeks of the month, but it's growing consistently.

The MRR is currently at $37.33 and I am very happy with the progress.


Replacing n8n with a local script for Typefully drafts

I previously wrote about how I publish blog posts and notes so fast, where I mentioned using simple terminal scripts and background automations to remove friction. One part of that workflow was an n8n automation connecting RSS feeds to Typefully to automatically draft new posts to social media.

While n8n worked, it relied on polling RSS feeds after Netlify finished deploying, and didn't give me fine-grained control over which social platforms a specific post should go to.

So I replaced the n8n setup with a small Node.js script scripts/sync-typefully.js built directly into my existing pnpm blog:push and pnpm raw:push workflow commands.

Here's how it works:

  1. Whenever I publish a post, git commits and pushes the code to GitHub first.
  2. The script polls the live post URL on deepakness.com until Netlify returns a 200 OK status. This ensures no broken 404 links on social media.
  3. Mastodon and Bluesky are enabled by default so I don't have to specify them.
  4. If I want to send the draft to extra channels like Threads, X, or LinkedIn, I can pass a flag like pnpm raw:push --platforms=threads,x.
  5. Once live, it calls the Typefully API to schedule the draft for the next free slot.

And the output in the terminal is shown like this:

[Typefully Sync] Found target file: content/raw/typefully-local-sync/index.md
[Typefully Sync] Configured platforms: mastodon, bluesky
[Typefully Sync] Waiting for Netlify deploy... Polling https://deepakness.com/raw/typefully-local-sync/
[Typefully Sync] ✓ Live page confirmed! (HTTP 200 OK after 42s)
[Typefully Sync] Sending draft to Typefully API...
[Typefully Sync] 🎉 Draft successfully scheduled in Typefully!
  Draft ID: 10183778
  Draft Title: "Replacing n8n with a local script for Typefully drafts"
  Platforms: mastodon, bluesky
  Schedule: next-free-slot

Now there are no external n8n workflows to maintain, zero broken link issues, and full control over social distribution directly from the terminal.

Absolutely love it.


Using the Kero terminal for coding

I just discovered this new terminal app called kero.sh that basically removes the need of opening an IDE like VS Code or so when vibe coding. It was recommended to me on X, and I tried and liked it immediately.

Using the Kero terminal

I mainly use the cmux app that works great, but the inbuilt files and git extension in Kero caught my attention. I miss a few things in the Kero terminal though, like the ability to drag terminal tabs to the left, right, bottom, or top sides as possible in cmux. But I can still use cmd + t or cmd + d in Kero and that is enough.

Another thing I didn't like about Kero is, cmd + + or - didn't work for zoom in or out, as I can do in basically any other terminal. You can only adjust the font size from settings, if you want bigger or smaller text.

Currently, I'm mainly using cmux but testing and trying Kero with my workflow as well. And if I like it after a few days, I'll migrate everything to using Kero.

Let's see.


Typefully now supports Substack as well

I have been using Typefully for, I think, more than 2 years now. And I was super glad to learn that it has now started supporting directly publishing posts to Substack as well. I immediately created an account on Substack, and connected it to Typefully to send my first post, as you see below.

First Substack post from DeepakNess

After this, I think, Typefully is the best social media management and automation tool out there. I haven't come across another such SaaS that is such a delight to use and actually listens to their users.

You can sign up to Typefully from here.

Apart from Substack, I have also connected my X (Twitter), Threads, Mastodon, Bluesky, and LinkedIn profiles, and everything works flawlessly.


Saving €50 each month on Hetzner

I use Hetzner VPS a lot for many of my projects and currently have 5 different servers via them. And after Hetzner hiked their prices, they still let existing users retain their old prices, at least, for now. On the new price, I would be paying €95.95/mo but on old price I'm only paying €45.95, saving €50 each month.

Saving €50 each month on Hetzner

As in the screenshot, I have these VPS currently locked on the old price.

Couldn't be happier.


OPML download on the blogroll

Added a small thing on the blogroll page today – you can now download the list as OPML and import it into your favorite RSS reader.

Download /blogroll in .opml format

It only includes blogs that have a public feed. The file is generated at build time from the same list on the page, so it stays in sync automatically.

That's the update.


3 Reddit accounts brands should have

Came across a short talk by Ross Simmonds on how brands should show up on Reddit, and I liked it. He recommends three types of accounts brands should have:

1. Brand subredditr/yourbrand

Create this last week if you haven't already. If someone else claims it and owns it, you lose complete control. And if the subreddit already exists, slide into the mod's DMs and ask if they'd be okay with you becoming a co-mod.

2. Brand user accountu/yourbrand

This is the official brand voice. Use it only when people are saying nice things. Don't get into fights with this account.

3. Personified human account

A real person representing the brand in the subreddits where your community already exists. This one shows up when people are complaining, have problems, or are asking questions adjacent to what you sell.

Simple setup, but makes a lot of sense.


Google Search Console now supports social accounts

Google Search Console has received one of the biggest updates in years as it now supports adding social profiles like Instagram, TikTok, X, and YouTube. It will show which of your contents are performing good, and how many clicks they're getting from Google.

Google Search Console supported social accounts list

I just added and verified my X (Twitter) profile where I had to log in and give GSC access to my X profile. It requested access to details like profile picture, username, followers count, etc. as you see in the screenshot here.

Adding X profile to Google Search Console

It will take up to 48 hours for the data to appear. And it will be interesting to see those data about my X posts.


Cursor launches a new plan 'Start' in India

Cursor AI has launched a new pricing plan exclusive to India, it's called Start and costs ₹649 per month. It sits between the Free and Pro plan, and I'm sure the limits are accordingly adjusted.

Cursor Start pricing plan

I think, it's a good plan for casual coders or beginners. They can use Composer 2.5 model for everything and if more intelligence is required, Grok 4.5 can also be used.


Subscribed to SuperGrok 3-month offer

I was subscribed to Cursor's Pro+ plan and used Grok 4.5 via there, and absolutely loved the model. It's fast and intelligent. And now that my Cursor subscription has ended, I was suggested to use Grok Build via SuperGrok as there was a great ongoing offer.

SuperGrok 3-month offer

I checked and discovered that there is a pay for 1-month and get 2 months extra for free offer going on via Grok Android app. So I immediately subscribed to it and now using it via Grok Build.

So far so good, and will share my experience in the next few days.


Updated the footer of the site

I spent some time reorganizing the footer on this site. Nothing fancy, just making it easier to scan after it had slowly turned into a long flat list of links over time.

Earlier the footer menu was basically one row of everything – all with the same weight. It worked, but nothing felt primary. So I split it into two rows: the main links up top and the rest slightly smaller and quieter below.

The stats line got a small polish too. Numbers are a bit heavier now so they stand out, separators are simple center dots, and GitHub contributions stay on the second line. I had written about showing stats in the footer earlier, so this is more of a layout cleanup than a new feature.

Before:

Footer before the update

After:

Footer after the update

While I was at it, I also cleaned up a few nearby things: “Building now” on the homepage, a single Related block on posts and notes (tag matches plus the AI stack link when it fits), and a small latest writings list on the Now page. Also switched most page headings to sentence case so they feel more consistent, except on individual posts and notes.

That's the update.


Thinking of getting another wifi connection

I have a wifi connection from Airtel Fiber at my place and it's quite good, until I experienced a 2-3 hours downtime last week. And where I live, there's no strong cellular signal as well, so I'm completely dependent on the wifi for internet and calls.

To prevent this from happening again, I'm thinking of getting another wifi connection, likely from Jio Fiber. It should not be very high speed and even 30 Mbps would work as it's just for backup, as my main connection is good for me at 200 Mbps.

I'm almost sure about this and will be getting this installed next week.


$934.38 worth of usage on Cursor $60 plan

Today, my Cursor AI subscription is expiring (yet to decide whether I will renew or not) and I was surprised when I checked my usage in the last 30 days. I used $934.38 worth of tokens across different models on my Cursor Pro+ ($60/mo) plan, as you see in the screenshot here.

That's 15x!

Cursor usage on $60 plan

I used more than 2.9 billion tokens across different models, and most used were Cursor Grok 4.5 and Composer 2.5 models. While I could have managed and done better for the API models, I am still very happy with everything.

Cursor usage tokens on Pro+ plan

Apart from this, here's a screenshot from my Cursor profile that shows some more data points.

Cursor profile page screenshot

Currently, I have auto-renew turned off and have yet to decide whether I would want to renew the subscription or not. I am currently also subscribed to Claude $100 plan, and can also use Grok Build via my X Premium subscription.

I think, for now, Cursor Pro for $20/mo would be enough for me.

Apart from this, I remembered one more thing that even after I finished 100% in both Cursor Models and Other Models pools, the Auto mode kept working. I used another ~90 million tokens in the last 2-3 days of my subscription.


Claude Opus 5 first impressions

Anthropic's new Claude Opus 5 model is here, and I don't think I need to use the Fable 5 model anymore for basically anything. The new model is already better than Fable 5 in almost every aspect, as you might see in the benchmark below.

Claude Opus 5 model benchmarks

And the best thing? It's priced at the half of the Fable 5 model, the same as how previous Opus models like 4.8 where priced. So it does make sense when I say that there's no need to use Fable 5 anymore, no?

I have been using the model for the last ~30 minutes inside Claude Code, and so far I like it. I am keeping it at the Max effort and the limits are still not draining too fast like Fable. And like other Opus models, the new one is also great at frontend designs.

I will share more info as I use and experience the new model.

Update: July 25, 2026

One thing I noticed is, Opus 5 is consuming significantly fewer tokens than the previous Opus 4.8 model for the same tasks. This is confirmed in their launch post as well that Opus 5 has a lower cost per task than 4.8.

My $100 Claude plan is very usable once again.


Added a paper theme and some other updates

A few months ago I added dark mode to this site, and yesterday I spent some more time polishing the themes and a few other small things around the site.

There is now a third option called paper – 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't picked a theme yet, the site still follows your browser preference, and once you choose one it remembers it.

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't nudge the layout anymore.

New header design

Apart from themes, I updated my profile photo in the header. It's an opaque square photo now, and clicking it opens a larger floating preview. But clicking on the name "DeepakNess" still takes you to the home page – only the photo opens the preview, as you see above.

Also upgraded a bunch of dependencies and switched the project over to pnpm while I was at it, but that's just under the hood.

You can visit the colophon page to see more technical details of the website.

That's the update.


SharePDF reaches 350+ users

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 Bikash, and seeing this grow this much fills my heart with joy.

Apart from this, we also completely revamped the UI and UX for SharePDF recently and now all pages follow a different design aesthetic everywhere.

That's it.

That's the update.


Scraping using Pi agent + Cursor SDK + Codex /goal

I think, I have found the perfect web scraping setup for myself. Currently, I am using the Cursor SDK via pi-cursor-sdk and Codex's /goal via pi-codex-goal inside the Pi agent using Cursor's Composer 2.5 model and doing great so far.

Running scraping task for 2+ days in Pi agent

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 /goal resume continued right from where it stopped.

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'm running multiple scrapers at the same time, continuously.

Cursor AI subscription usage on Pro+ plan

I'm on the Pro+ plan ($60/mo) on Cursor and I think it's the best value for money AI subscription right now.


macOS 27 Beta dasd eating 40+GB of RAM

I installed the macOS 27 Golden Gate developer beta from the very start, and now running into this dasd process consuming too much computer resources most of the time. I thought this will be solved eventually, but it hasn't been solved in the developer beta 3 or even in the first public beta.

Earlier, I wasn'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.

So... I researched and found this Reddit post where a person shares a solution that many people replied that it worked for them. I also tried the following command, and surprisingly I'm not running into the issue again.

sudo rm -rf /private/var/db/powerlog 
sudo reboot

You need your admin password to run this, and it didn't break anything else for me, so it's safe to run.

Honestly, I don't know what it does, but you can look it up.

Hope this helps.


Got a monitor stand for my desk

Earlier, I used to keep my monitor towards the right of my laptop, as you see in the old work setup. 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.

Monitor stand under my Samsung monitor

Honestly, it does make my work setup a bit better. I actually feel comfortable working like this because now I don't have to turn my head towards the right side to look at the monitor.

And here's what my current setup looks like now:

Laptop, monitor, and monitor stand setup on my desk

The wires and all are still a bit messy, but I'm perfectly okay with that. In fact, I love seeing a bit of wires going here and there on the side.


Minimal X v2.4 is here

Just released a new version of the Chrome extension Minimal X that lets you remove the persistent highlighted section from the /explore page.

X Explore page Football section

For example, currently this football section is highlighted and as I don't watch football, it's not useful for me and kind of distracting. So... when you turn on this new option "Start Explore at Today's News" then the highlighted section is removed and the page starts from the usual Today's News section.

I will keep adding more features to make X experience even better.


Using Composer 2.5 as the Worker inside Cursor

Earlier I shared my experience about using the new Grok 4.5 model and also about my orchestrator + worker setup 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.

Nowadays, I'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.

Delegate heavy works to the Composer 2.5 model.

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.

Delegate heavy works to the Sonnet 5 model.

Since Sonnet 5 is fast, the work is finished faster and often pretty low on the limits as well.


Grok 4.5 first impressions

Cursor partnered with SpaceXAI to train Grok 4.5 and the model is now live. I just tried it inside Cursor and here are my first impressions:

It'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.

Grok 4.5 is very fast when compared to the latest Opus or GPT models, even without the fast mode turned out. Also, it'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.

Grok 4.5 usage in Cursor

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.

Grok 4.5 has currently 2x limits inside Cursor 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 in this post.

Apart from this, the new model is 1.5T mixture of experts model, trained from scratch.

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's fast and pretty good with non-frontend related tasks.

They mention in the blog post that:

Grok 4.5 and Composer 2.5 are two different model weight classes, and we'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.

Loved this pricing comparison of Grok 4.5 with other popular models:

Grok 4.5 pricing comparison with other AI models

Update: Jul 9, 2026

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's flawless and very reliable as well.

I think, if you consider the pricing Grok 4.5 is currently the best AI model out there.


Cloudflare introduces Workers Cache

Cloudflare just introduced Workers Cache which, basically, returns cached HTTP responses from the Worker without executing the Worker code first. And it's going to significantly lower down the running costs, at least for me.

I found a great demo on X, about how it works.

I'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.


Updated to the macOS 27 Developer Beta 3

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.

macOS 27 Golden Gate Developer Beta 3 on MacBook M2 Air

For some reason, I like macOS 27 Golden Gate more than the previous macOS 26 Tahoe. Even though 27 is in developer beta, it's still very good and feels better to use.


Cursor orchestrator and worker setup

After this post from Eric, 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 composer-2.5[fast=false], and attach a manual rule only when you want delegation.

Although, I am not using the Fable model, but it still works pretty well. First, I tried the GPT-5.5-Medium model as the orchestrator, but later I shifted using the Opus-4.8-High as it seemed a bit better and cheaper in Cursor.

Cursor orchestrator and worker setup

Here's the folder structure:

.cursor/
├── agents/
│   ├── implementer.md
│   ├── auditor.md
│   └── verifier.md
└── rules/
    └── orchestrator-worker.mdc

First, I created this file .cursor/rules/orchestrator-worker.mdc with the following contents:

---
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                 |

Then created the implementer subagent .cursor/agents/implementer.md with the following contents:

---
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'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.

Then the auditor subagent .cursor/agents/auditor.md with read-only access:

---
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.

Lastly, the verifier subagent .cursor/agents/verifier.md, again with read-only access:

---
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'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.

Because model: composer-2.5 alone was still resolving to Fast-mode, I have used composer-2.5[fast=false] explicitly as the model string, as you see above.

I only use this orchestrator-worker setup when needed, and not all the time. Here's how I do it:

  1. New Agent chat → pick the orchestrator model in the model picker
  2. Type @orchestrator-worker and my task
  3. Parent plans → implementer codes → optional verifier reviews

I prompt something like this:

@orchestrator-worker Refactor the auth module.

And for normal single-agent work, I would skip @orchestrator-worker and use any model directly (mostly Composer 2.5 itself).

Lastly, if you're using this you can also add your project-specific details anywhere it helps:

  • orchestrator-worker.mdc – your orchestrator model slug, stack-specific delegation rules
  • Subagent files – test commands, commit rules, security checks, framework conventions
  • AGENTS.md (optional, repo root) – build commands, folder layout, code style; stays on without forcing orchestration

The rule is manual-only, so it doesn't affect every chat.

If you'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 visit Cursor' docs about subagents for more info on how to set everything up in a better way.