Skip to main content
Photo of DeepakNess DeepakNess

Raw Notes

Raw notes include useful resources, incomplete thoughts, ideas, micro thoughts, and learnings as I go about my day. Below, you can also subscribe to the RSS feed to stay updated:

https://deepakness.com/feed/raw.xml

Total Notes: 199


aria2 download utility tool

Came to know about this aria2 download utility CLI tool which can download anything and everything from the web, even torrent files. I got to know about this from this reply to my post on X.

brew install aria2

I installed this via homebrew by running the above command, and it does seem to be working great so far.


How to add Perplexity MCP to Claude Code

Below is the command to add the Perplexity API to Claude Code:

claude mcp add perplexity -e PERPLEXITY_API_KEY={perplexity_api_here} -- npx -y perplexity-mcp

You have to replace {perplexity_api_here} with the API from Perplexity and then run the command. When you run the command, it modifies the ~/.claude.json file to add the MCP globally.

And I learned about this from this GitHub repo and this page on Anthropic docs.


Remove mistakenly pushed files from GitHub

I accidentally pushed an incomplete blog post .md file to GitHub for my personal blog, and then had to remove from GitHub without deleting it locally. So I looked it up, and this is how it's done:

  1. Remove the file from Git tracking (but keep it locally)
git rm --cached content/blog/still-brave-browser/index.md
  1. Commit the removal
git commit -m "Commit message"
  1. Push the changes to GitHub
git push origin main

Basically, the git rm --cached command removes the file from Git's tracking without deleting it from your local filesystem, so you can continue editing it.


Using Claude Code for non-coding tasks

I came across this post on X where Lenny asked how people are using Claude Code for non-coding related tasks. To which several people replied cool ways they are using it, and I couldn't help but to list some interesting use cases here:

  1. Using Ahrefs, GA4, and GSC MCPs to find high converting pages and come up with new pillars to go after. (Link)
  2. Browserbase and Apify MCPs to find videos over 100k views in the last 90 days in the niche, and plan YouTube strategy.
  3. Obsidian, Notion, and Linear MCPs to write PRDs, auto-generate wikis, projects, and issues. (Link)
  4. Using Claude Code as a doc editor for brainstorming and planning tasks. It's explained in detail here.
  5. Researching and taking notes from YouTube videos by using the Apple Notes MCP and some CLI tools for getting YouTube transcripts. Explained here.
  6. For brainstorming domain names and checking their availability by using this MCP and the process is explained here.

So cool! I will definitely be using some of these workflows.


Modern font loading guide

I came across this blog post from Jono Alderson and learned a lot about how to best load modern fonts so that they do not slow down the website. And below are the notes that I took from the post:

Core fundamentals

  • Use WOFF2 format only: It's the most efficient and universally supported
  • Self-host fonts: Don't rely on Google Fonts or other CDNs for better performance and privacy

Loading strategy

  • Set font-display: swap: Shows fallback text immediately, then swaps when webfont loads
  • Preload critical fonts: Use the rel="preload" tag as shown below
    <link rel="preload" as="font" type="font/woff2" crossorigin href="/fonts/font.woff2">
  • Inline @font-face declarations: Put them in the <head> rather than external CSS files
  • Design with fallbacks first: Choose system fonts that match your custom font's metrics

File optimization

  • Subset fonts aggressively: Only include characters/scripts you actually need using unicode-range
  • Use variable fonts strategically: Only when they're smaller than multiple static files
  • Avoid legacy formats: No need for TTF, OTF, WOFF, or SVG fonts in modern browsers
  • Never use icon fonts: Replace with inline SVG or SVG sprites instead

Metrics and layout stability

  • Match fallback metrics: Use size-adjust, ascent-override, descent-override to prevent layout shift
  • Use font-size-adjust: Scale fallback fonts to match your custom font's x-height
  • Prevent fake bold/italic: Set font-synthesis: none and only declare weights you provide

System and fallbacks

  • Build robust system stacks: Start with -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto
  • Include emoji fonts in stack: Add system emoji fonts rather than shipping custom emoji
  • Test across platforms: Different OS render fonts differently

Performance monitoring

  • Set font budgets: Limit number of weights and file sizes
  • Test on slow networks: Use DevTools to simulate poor conditions
  • Measure layout shift: Monitor CLS caused by font loading

That's it.

By the way, I got to know about this blog post from a post on X when I was casually browsing.


Audacity audio app but on the web

Someone put the Audacity audio app on the web and named it Wavacity, and it's amazing. Worked as expected when I tried recording something directly from my laptop.

And I came to know about this from an X post. Sooo cool!


How to build a web search engine

While scrolling on X, I came across this super technical blog post about building a web search engine from scratch with 3 billion neural embeddings.

  • 3B SBERT embeddings
  • ~280M pages indexed
  • ~50k pages/sec crawl
  • ~500 ms query latency

In the post, Wilson Lin talks about topics like parsing the web, chunking text, crawler, pipeline and queues, storage (RocksDB with BlobDB), service mesh, embeddings at scale, vector search, latency (Cloudflare Argo + server-side streaming HTML), costs, etc.

For embeddings, he started with OpenAI, then ran his own inference on Runpod RTX 4090s. Rust wrapped the Python model with async stages to keep GPUs busy – reaching ~100K embeddings/sec across ~250 GPUs, ~90% GPU utilization.

The blog post is so detailed that I am unable to understand everything as of now, but I'm noting this down in my raw notes section for future references.


How to become a better programmer

I was scrolling and came across this post, where the OP has shared how one can become a better programmer by using AI tools like Claude Code. The post says:

Here's how to become a better programmer in 2025 for $200/month:

  1. Find an open source project you like.
  2. Clone it locally.
  3. Get Claude Code Max ($200/month).
  4. Let Opus 4.1 loose on the codebase and have it explain to you how things work.

Repeat this process with different projects.

And I couldn't agree more with this.

I was discussing the same thing with my friend Amit Sarda only yesterday that instead of starting to learn programming from the start, it's better to learn while vibe coding.

I am definitely going to try this, maybe not with Claude Code, but with Cursor by simply asking to explain the codebase. And can also ask in detail about certain aspects of the codebase.

Update:

Below the same original post, someone shared another way to have the codebase explained in an easy-to-understand way. You just have to replace github.com with deepwiki.org in the URL, and it opens the explained version of the repo. However, this doesn't work on all public repositories, but definitely works on all popular repositories.


Groq subtitle generator

Only a week ago, Groq has released an open-source tool to generate subtitles for videos in multiple languages, and it works like a charm. It has a web interface to upload videos, select languages, generate subtitles, and preview videos with subtitles.

I also found an informative post explaining how it works, and the post also shows examples of the quality of the subtitles. It's perfect, and 10x better than the YouTube's default auto-caption tool.

Backend tech-stack is:

  • FastAPI
  • Groq API
  • FFmpeg
  • Pydantic

And for frontend:

  • Next.js 15
  • TypeScript
  • Tailwind CSS
  • Lucide React

The best thing is, it extracts the audio only (by using FFmpeg) when you upload the video, and then the .wav audio is sent to Groq to process. It uses the OpenAI’s Whisper Large V3-turbo model but the Groq-hosted version, and then Qwen3-32b model by Groq is used for translating into the selected language.

One issue is, as of now it creates burned-in subtitles only, but still very impressive.

Update: I tweeted asking whether one can create soft subtitle and download the file as a .srt file, and they actually added a new branch that does this.

It would be really fun to use a local LLM to do this, and also build a desktop app to do this locally. I am already thinking about this, and might build one.


Fine-tuning gpt-oss

Found this quick guide to fine-tune gpt-oss model completely locally by using the Unsloth AI and Hugging Face transformers. It's a very simple-to-follow tutorial. I think, the only complex task here is to prepare the dataset for fine-tuning, otherwise it's straightforward.

Apart from this, there is also a blog post on the Unsloth AI website about fine-tuning the new OpenAI's gpt-oss model. And there's this video as well that I found to be very helpful.


Funny email typos

Came across a post on Instagram listing out some hilarious and witty email typos, and I couldn't help myself collecting here:

  1. Let's touch later
  2. I'll update you shorty
  3. Good moaning
  4. Please view the attacked documents
  5. Dear sir or madman
  6. I hope this male finds you
  7. Due to the circumcision
  8. Best regrets
  9. Thanks for your massage
  10. Genital reminder
  11. Wishing you a peasant day
  12. Hoe can I help you?
  13. Kind/best retards
  14. Best dishes
  15. You are tight
  16. Let's meat tomorrow
  17. I appreciate your patients

Obviously, most of these are completely intentional, but I burst out laughing when collecting these. So funny.


Carl Jung about sufferings of unlived lives

Came across this post on X and found this fascinating quote:

The world is full of people suffering from the effects of their own unlived life. They become bitter, critical, or rigid, not because the world is cruel to them, but because they have betrayed their own inner possibilities. The artist who never makes art becomes cynical about those who do. The lover who never risks loving mocks romance. The thinker who never commits to a philosophy sneers at belief itself. And yet, all of them suffer, because deep down they know: the life they mock is the life they were meant to live.

– Carl Jung

Though it's a combination of quotes from different Carl Jung works, it does resonate and is explained in a very thoughtful way.


OpenAI GPT-5 is here

Yes, the most awaited GPT-5 is finally here, and I got to watch the announcement livestream and also tried it for a few hours inside Cursor AI for coding. And my experience is kind of mixed here.

Initially, I thought that it's a great model as it did a few tasks better than Claude latest Sonnet and Opus models. But slowly I realized that it's not as good as they are advertising and hyping.

  • Yes, it's better than all previous OpenAI models, even the O-series ones
  • But overall Claude models are still better when it comes to coding

I haven't tried it a lot for writing and other tasks, but I am a bit disappointed when it comes to coding. Also, I noticed that it works way slower than Claude Sonnet 4 inside Cursor.

Somehow, I see GPT-5 in the ChatGPT app on my Android device, but I am still not seeing it on my desktop in the browser.

I am still testing the model for coding and other things and will keep updating the post.


Handling right click on logos

Came across this cool post on X that gives me the idea to show a dialog to download higher quality version of logos when someone does a right-click on the logo. Here's the text:

Sick of people right-click saving a small version of your logo to put in articles about you?

the classic confirm() dialog to the rescue!

But then a person also posted about how Mercury handles this thing in an even better way. When someone right clicks, they show the save the logo in different formats and also download the brand kit as a .zip file.


Pseudoprofundity

Found this new word pseudoprofundity which consists of words "pseudo" + "profound".

Pseudoprofundity: statements or ideas that appear profound or insightful but are ultimately shallow or meaningless

Examples:

  1. "The universe is a mirror reflecting the infinite potential within us."
  2. "We are all interconnected, and every action has a ripple effect."

It's clear that pseudoprofundity works because of cognitive biases, desire for meaning, and also because someone with authority made the statement.


Kitten TTS model

I came across this post from Divam Gupta who has developed a tiny text-to-speech model which is only 25 MB in size and runs without a GPU. It's 15M parameter model and is very fast even on low-end devices.

You can find the model on GitHub here and also on HuggingFace here.

I think, it would be great to use this on a Raspberry Pi when using a physical device.


OpenAI launches open-source AI models

Months after the announcement, OpenAI has finally launched its very first set of open-source models named gpt-oss-20b and gpt-oss-120b which can run even on a laptop.

OpenAI claims these models to perform at the level of the o4-mini models, which is crazy good. In fact, you can play with the models on the gpt-oss playground, for free.

Basically, the different models are categorized as:

  1. gpt-oss-20b: A medium-sized open model that can run on most desktops and laptops.
    • runs via Ollama by running ollama run gpt-oss:20b command
  2. gpt-oss-120b: A large open model designed to run in data centers and on high-end desktops and laptops.
    • runs via Ollama by running ollama run gpt-oss:120b command

You can find the actual model cards here that will give you more info about the models.

I tried downloading and running the 20b model which is about 13 GB in size, it should run slow on my laptop (Macbook Air M2 with 16GB RAM), but I wasn't able to run it due to the following error:

Error: template: :3: function "currentDate" not defined

Not sure what the issue is, but I have tweeted about it. Let's see if I find some solutions from here.

Update: Aug 6, 2025

I reinstalled Ollama and it worked, as suggested by Ollama itself in this reply on my post on X. Yes, it was a known issue from the Ollama side, and they quickly fixed this.


Anthropic launches Claude Opus 4.1

Anthropic just launched Claude Opus 4.1 which is better than Claude Opus 4 in terms of agentic tasks, coding, and reasoning. It's available immediately to paid users as well as via the API.

I think, this week we might also see the launch of major models from OpenAI like GPT-5 and from Google Gemini as well. But let's see, and buckle up.

Also, I am adding support for the new model in my Multi-AI Script for Google Sheets.

For Claude Code users, you need to run the claude update command first to be able to use the new Claude Opus 4.1 model, as explained in this post.


GEO content optimization prompt

I came across this tweet from Ivan where he has put a prompt that is claimed to optimize your content for generative search engines like ChatGPT, Claude, Gemini, Perplexity, etc.

While I don't think this will be very helpful in actually optimizing the content, this prompt still has a few things that can be useful while constructing other prompts. I am just putting this here for future references.

You are an expert in Generative Engine Optimization (GEO) the emerging discipline of optimizing content to be referenced and recommended by large language models (LLMs) like ChatGPT, Claude, Gemini, and Perplexity.

Your task is to take the content I paste below and optimize it so it becomes more likely to appear in the answers these LLMs generate when users ask related questions.

Here is the content to optimize:
[PASTE YOUR CONTENT HERE]

Please rewrite the content with the following enhancements:

1. Contextual Relevance
   - Add clear signals about who the content is for and what problem it solves.
   - Embed real-world use cases or questions this content answers.

2. Semantic Richness
   - Use natural language that matches how users ask questions (e.g. “best tools for X”, “how do I…”).
   - Include related keywords and phrases LLMs associate with the topic.

3. Answer-Style Formatting
   - Structure the content in a way that is easy for LLMs to extract as a direct response.
   - Use bullet points, numbered lists, and headers for clarity.

4. Topical Authority Signals
   - Mention data points, user outcomes, or unique value props.
   - Use specific, useful, and trust-building language.

5. Natural Brand Integration
   - If a brand, product, or service is being mentioned, weave it in naturally as a recommended or reputable option.

Please output only the optimized version. Do **not** explain your changes. Write it as if it’s a standalone, publish-ready piece designed to be cited by LLMs when generating responses.

By the way, this entire thread is definitely worth reading to gain a new perspective.


Using Macbook trackpad to weigh things

I came across a GitHub repo called TrackWeight that turns your Macbook trackpad into an accurate weighing scale. Yes, you put things on the trackpad, and it shows its correct weight.

This is how it works:

TrackWeight utilizes a custom fork of the Open Multi-Touch Support library by Takuto Nakamura to gain private access to all mouse and trackpad events on macOS. This library provides detailed touch data including pressure readings that are normally inaccessible to standard applications.

By the way, it's a DMG app that you will have to install on your device.