Skip to main content
Photo of DeepakNess DeepakNess

Raw Notes (66)

Plaintext raw notes containing useful resources, incomplete thoughts, ideas, and learnings as I go about my day. You can subscribe to the RSS feed to stay updated.


My ASCII art

Came across this ASCII art generator tool that Guillermo shared on X, and I had to try this. I uploaded my current profile picture and the tool did a great job, you can check the results in this text file (but open on desktop in a full width window, won't work on mobile).

I also remember this idea of pixel paintings in Google Sheets from Amit Agarwal, where you give a photo and spreadsheets rows and columns are auto-adjusted and filled with colors to paint the photo.


We need simpler docs

I already had this idea to build a system to create better and simpler online documentation for apps or anything, and this recent Karpathy's tweet validates it. He argues that the primary audience for your docs are now LLMs so you should be optimizing for them, and it does make sense.

PSA It’s a new era of ergonomics.

The primary audience of your thing (product, service, library, …) is now an LLM, not a human.

LLMs don’t like to navigate, they like to scrape. LLMs don’t like to see, they like to read. LLMs don’t like to click, they like to curl.

Etc etc.

My idea is, as also Karpathy explains, have everything in a single .md file and then connect to a tool that neatly creates sidebar hierarchial links based on headings – h2 can be the main navigational links in the sidebar, and clicking on a section should expand also show h3 as sub-links.

The simple idea can be further refined, but the main concept is that there should be a single .md file containing the entire documentation that LLMs as well as humans can easily access without the need to navigate between pages.

For a better experience, the tool can be directly connected to the Git provider like GitHub so that it automatically publishes and processes the updates to the documentation.

I am not yet sure about the tech stacks, but I don't think this would very difficult to implement.


Separate sitemap for raw notes

For the personal website deepakness.com, I had only one sitemap file at /sitemap.xml earlier. But as I am publishing a lot more raw notes now, the single sitemap file was getting bigger so I created a separate sitemap for raw notes.

Now, my raw notes sitemap is at /raw-notes.xml and the rest (blog posts and a few pages) are at /sitemap.xml.

You can have up to 50,000 URLs in a sitemap as Google suggests, but keeping the sitemap file smaller is a good practices in general from the SEO perspective. For example, in WordPress, SEO plugins like Rank Math and Yoast only keep 200 URLs in a sitemap file by default, and create new sitemaps after each next 200 URLs.

And have also added both sitemap URLs in the robots.txt file. Again, not required, but good to have.


PDF runs AI

Came across this video on YouTube where the person explains how he can run LLMs inside a PDF. The source code is also available here on GitHub. Here's how it's explained:

This is a proof-of-concept project, showing that it's possible to run an entire Large Language Model in nothing but a PDF file.

I also found this super interesting Doom in a PDF file, yes, you can literally play a game right inside the PDF file.


Sorting collections in 11ty

I needed to sort my projects page as per the title, and didn't want to create a custom filter in the .eleventy.js file. So I tried Liquid sort filter like | sort: "title" but it didn't work. But then I found this after spending almost an hour searching:

| sort(attribute='title')

I have a projects.njk file where I am using this, and it works flawlessly.


Redirect subdomain to a URL in Cloudflare

I had to redirect a subdomain of my domain to an external domain, and here's how I did it using Cloudflare Redirect Rules:

Here, I will take the example that I have to redirect test.deepakness.com to the https://rohit.online URL.

Step #1: Create a new CNAME DNS record with the following details:

  • Type: CNAME
  • Name: test
  • Target: deepakness.com
  • Proxy status: Proxied
  • TTL: Auto

Step #2: Create a new rule by clicking on the Create rule > Redirect Rule button by going to the Rules section, and then fill in other info as per below instructions:

  • Rule name: As per your preference
  • If
    • Incoming requests match: Custom filter expression
    • Field: Hostname
    • Operator: equals
    • Value: test.deepakness.com
  • Then
    • Type: Static
    • URL: https://rohit.online
    • Status code: 301
    • Preserve query string: Checked
  • Place at
    • Select order: First

I wish I knew this from earlier.


Cursor is bringing a major shift

Came across this post on Reddit:

I've been leading multiple teams of engineers over the past 15 years. I'm now building one project with o3 (~$40/day in request costs) and using 0.49.

I have to say, I achieve more (and better) than I did with some of my past teams of 10+ engineers. And I'm talking about FAANG teams.

I also came across a tweet talking about the same today, and it's true that Cursor is definitely an important inflection point in the tech history, as the author describes it.


My current usage of Cursor

As I have been using Cursor a lot for coding these days, here is how I am using it currently:

  • Gemini 2.5 Pro: for logic and complex tasks
  • Claude 3.7 Sonnet: for the good looking UI
  • o3 or MAX models: for debugging if stuck

Today, I saw a tweet from Cursor's founder Eric talking about having a similar setup, here's the exact tweet:

using o3 for research & planning and gemini 2.5 pro for implementation feels really good right now

However, I received a reply to one of my tweets and it said that according to Aider, using o3 for planning and then GPT-4.1 for coding scores the highest. But... from my experience, I didn't find GPT-4.1 to write code as good as Gemini 2.5 Pro or Claude 3.7 Sonnet.


Web browsers telemetry – 2025

Came across this detailed post at sizeof.cat talking about web browser telemetry in 2025. And I was surprised to see that how many connections from these popular browsers were phoning home. Let me shock you with the list:

  • Zen Browser: 82
  • Microsoft Edge: 48
  • Floorp: 42
  • Opera: 31
  • Mozilla Firefox: 29
  • Google Chrome: 25
  • Yandex Browser: 24
  • Librewolf: 24
  • Waterfox: 21
  • Brave: 17
  • Arc Browser: 16
  • Mullvad Browser: 15
  • Vivaldi: 11
  • Apple Safari: 6
  • Ungoogled Chromium: 3
  • Pale Moon: 0
  • Kagi Orion: 0
  • Tor Browser: 0

The author mentions that some of these connections were not telemetry, see the exact paragraph here:

Of course, not everything is telemetry per se, some of the connections are from the ‘New Tab’ pages that include Youtube videos, or adblocker updates, but I strongly believe that is the same thing: the software leaks information about you and/or your computer without you actually accepting the data exchange (because you don’t have a way to accept or deny the connection since it’s the first time you’re running the browser).

There are better ways to do adblock blocklist management and not load everything on the first run without user consent. Yeah, I know what pgl.yoyo.org does today, but what will it do tomorrow? Or the day after?

Also, remember that "best browser" cannot be decided just by this one factor and you'd need to consider a lot more.


Comment via email

After my friend Rohit suggested, I have enabled a "comment via email" feature for individual posts a few days ago.

My posts didn't have comment feature earlier, so now this "comment via email" feature opens users' default email client and pre-fills to with my email and subject fields with Comment on: [current post title]. Basically, it makes it easier for people to send me emails about specific posts.

It's been only a few days since I have enabled this feature and I have already received multiple comments via emails this way. To check this, you can visit any blog post or raw note and you will see the option at the bottom.


SQLite internal viewer app

Came across an interesting project by @invisal89 that lets you see your sqlite database in a visual way.

SQLite Internal Viewer update: Each page now shows its table name—so you can finally see how every table is represented in the file format. #sqlite

Give it a try

https://sqlite-internal.pages.dev

I see that the project is hosted at Cloudflare Pages and is built using JavaScript and TypeScript as seen in the public GitHub repo.

And it can be accessed at https://sqlite-internal.pages.dev.


Cursor v0.49 brings interesting features

I have been using Cursor heavily for the past few months and I love it, have tried Windsurf and other setups as well, but I like Cursor the most.

Today, Cursor released a new update (I haven't received it yet, though) which has a feature that automatically generates rules by running the /Generate Cursor Rules command. The idea is, you keep giving a lot of instructions in your chat and the command creates the rules from that information. And the Agent can also be prompt to edit or update the rules file effectively.

One more interesting update is, MCPs now support passing images as context. For example, I have this Playwright MCP by Microsoft installed in my Cursor which automatically take screenshots of the browser window and add it to its context.


Learning by vibe coding

Nowadays, I am spending a lot of time coding with Cursor AI and learning the concepts on the way by reading through the docs and also asking questions to Gemini or ChatGPT. For example, I was implementing Clerk Auth to a Next.js project so I went through the Clerk documentation page for the same. It feels really good to also understand what you're doing exactly.

For another project, I am using Python with sqlite3 database to process 20k rows using OpenAI API and I did actually learnt the concept. I mean, I still cannot write the code from scratch but I properly understand how everything works, and can make edits to the code get the desired output.

What a time to be alive!


A guide to building AI agents by OpenAI [PDF]

OpenAI has this ebook titled a practical guide to building agents which explains the basics of designing AI agents. The ebook explains topics like what an AI agent is, when you should create an agent, design foundations, multi-agent systems, guardrails, etc. in detail.

Yes, all the code examples focus on OpenAI models only but the concept remains the same for other models. They also have diagrams in the ebook to make the concepts easier to understand.


Gemini 2.5 Flash is here

Gemini 2.5 Pro model is crazy good at coding, and now they have launched the new Gemini 2.5 Flash model (currently, in preview) which is crazy good at general tasks. Logan from Google describes it as:

Gemini 2.5 Flash is here, our first unified reasoning model with thinking budgets. 🔥

It’s on the perato frontier and punches above its price and size!!

Yes, it's a thinking model and is good with long contexts. Compared to OpenAI's new o4-mini, it's super cheap with almost comparable performance. It's priced at:

  • Input price: $0.15/1M tokens
  • Output price (no reasoning): $0.60/1M tokens
  • Output price (with reasoning): $3.50/1M tokens

You can check and compare the pricing with other models on this website.

Gemini 2.5 Flash is already available at gemini.google.com and can also be used and tested via the AI Studio. And it's available via the API as well.

When testing through the API, I liked the fact that I can set the thinking_budget to control the reasoning effort it puts for the question.


Installing the LibreWolf browser on macOS

Tried installing the LibreWolf web browser on my macOS Sequoia 15.4.1 and ran into some issues where the app was not at all opening. Whenever I clicked open the app, it would show me a dialog saying the following with two options Done and Move to Trash:

Apple could not verify "LibreWolf.app" is free of malware that may harm your Mac or compromise your privacy.

I searched about it and found this Reddit thread where the issue was being discussed. It turns out, after the macOS Sequoia 15.1 update, it stopped working for many users. One of the top comments in the thread offered a workaround as well, which worked for many users.

However, I did run any of the suggested commands and still got it working. When I first click on the app, it showed me the said dialog and I selected the Done option. After that I went to System Settings > Privacy & Security and clicked the Open Anyway (at the bottom it was being shown in front of the LibreWolf app). It asked me for the password and started working flawlessly from the next time.

I am not sure if I will be using this as my main browser yet or not, but these days I am trying different stuff as I did the same with the Ungoogled Chromium browser a few days ago.


OpenAI's o3 and o4-mini are available in ChatGPT

OpenAI's newly launched o3 and o4-mini models are now available for ChatGPT Plus users as well. Initially, I thought these models will only be available through the API, but good to know otherwise.

I tried these new models on ChatGPT and they are definitely better than their older o3-mini and o1 models. But I will still not consider them comparable to Claude 3.5/3.7 or Gemini 2.5 Pro models, at least in coding.

However, if I have to use AI for tasks other than coding, I would most likely choose ChatGPT over others.


AI for the rest of us

A while ago, my friend Rohit sent me this exact message and I think this is a fantastic idea.

Idea:

Tentative name: AI for the rest of us (this name is taken but it's the best name that describes the project)

What it is: AI publication website with some educational resources and a newsletter. AI newsletters focus even on minor updates like OpenAI released this new model, Anthropic got this funding etc. etc. For a regular person, such type of news is irrelevant. A regular person wants two things:

  • Updates on what really matter in their day-to-day life (bi-weekly newsletter should be enough)
  • Some cornerstone-type educational web pages. Like one web page on promptimg that keeps updating as the LLMs get smarter. One webpage on the AI use cases in daily lives (properly categorised, not explained in details but broad overview)

I'm not saying I'll make it or you should make it but I'm saying that such thing is needed.

I also shared the screenshot of the message on X in case someone is interested in making it. I have received a few replies but let's see if it's actually gets implemented by someone.


Grok has memory now

Like ChatGPT, xAI's Grok now has memory. It can remember all your conversations and you can ask to retrieve any information that you have talked about earlier. Now, when you ask any questions, you get more personalized suggestions.

Also, from a few days ago Grok 3 API is also available to use and you can check the pricing here. It's still in beta, though. There's a also a simple API cost calculator where you can estimate the cost of using different models including xAI's through APIs. It's minimal, clean, and completely free to use.


Small Bets – Gumroad

Just came across this tweet from Daniel Vassallo where he announces that he sold Small Bets to Gumroad for $3.6 million, which is broken as:

  • $1.8m in immediate cash
  • $900k in immediate stock options
  • $900k in stock options in the next 12 months

In addition to this, Daniel will also be helping Sahil in making Gumroad better and he won't be taking any salary. He talks more about the things in detail in the tweet.


Beware of the Gmail phishing attack

I came across this X post from @nicksdjohnson where he received a very sophisticated phishing attack email on his Gmail account. The scariest was, the email came from an official Google account no-reply@accounts.google.com email.

The person has explained everything in a super detailed manner about how the hacker is exploiting a vulnerability in Google's infrastructure. I recommend going through the entire thread to avoid getting phished.

Be safe out there.


Notion Mail is publicly available now

To give you some context, Notion has launched an AI-powered email client where you can connect your personal or workspace Gmail account (currently only Gmail). Earlier, this was in beta but now it's publicly available and you can start using it.

Some of the interesting features of the app are:

  • automatic organization of emails into suitable labels
  • AI-powered reply drafting
  • minimal and cleaner interface, just like Notion
  • available offline, much like the official Apple Mail client

Currently, it's only available for the macOS and iOS as well as Android app is planned to be launched soon, some time in 2025 itself.

On the website, there's not very clear mention of the pricing as it just says "it's free to get started". But I was going through this Reddit discussion and got to know that if you have a Notion AI subscription already, Notion Mail doesn't cost extra. But the free version of Notion Mail is usable as well, with limited features.

I am yet to try this myself.