Jocko Willink about failure
Besides death, all failure is psychological. – Jocko Willink
I liked this quote a lot, and also liked this image related to the quote.
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: 266
Besides death, all failure is psychological. – Jocko Willink
I liked this quote a lot, and also liked this image related to the quote.
When using Tailwind CSS, the both below code snippets for an HTML table show the same thing... but the second one looks cleaner here. It's called using Child Selectors in Tailwind CSS as being discussed in this thread on X.
<table>
<tr>
<td className="px-3 py-2">CSS</td>
<td className="px-3 py-2">Great</td>
</tr>
<tr>
<td className="px-3 py-2">Tailwind</td>
<td className="px-3 py-2">Fine</td>
</tr>
</table>
<table className="[&_td]:px-3 [&_td]:py-2">
<tr>
<td>CSS</td>
<td>Great</td>
</tr>
<tr>
<td>Tailwind</td>
<td>Fine</td>
</tr>
</table>
And I liked the Child Selectors approach because I don't have to repeat the same classes again and again. However, some people do not like this at all and you'll find that in the X thread I linked above as well.
I first wrote the how to optimize your content for AI search post in February, so it was a long due task. But finally, I updated the post with new information and tips-tricks.
Added new sections, examples, and images as well.
Alex Albert, Claude Relations at Anthropic AI, has announced on X that they will be "unifying all of their developer offerings under the Claude brand", and it's definitely for the better.
So now people will not have to use sentences like "using Claude models via Anthropic API" and can just use "using models via Claude API" as it's less confusing. A few people mention the same thing, and it does make more sense to not having to use Anthropic all the time.
And they have explained what's changing in their docs as well:
I think, it was long a due change.
OpenAI recently announced the launch of its new model GPT-5-Codex which is the smartest agentic coding model as of now. In the charts, it's showing a significant improvement over other GPT-5 models.
This is how to update and use the new Codex.
I tried updating the Codex CLI, and got the latest model right away. I will be testing it heavily over the next few days by building complex projects, let's see how it goes.
The CLS or Cumulative Layout Shift is an SEO factor now and having your website not have any kind of layout shift is a big deal now. I came across this video from Lee Robinson where he explained a trick on fixing the layout shift. It's a quick 5-min video which can be very helpful for my future projects.
Came across this post on X from Grant Lee, the co-founder of Gamma app, where he shared tips to reaching $50 million ARR (annual run rate). He explains some fascinating marketing tactics in the post.
For my Omarchy Hub project, I changed my open graph image but X/Twitter was still showing the old image for days. I changed the image filename, tried using Bitly short links, cleared all build cache, but nothing worked.
I followed the steps explained in this troubleshooting cards page, they recommended adding a random parameter, something like ?4362984378, at the end of my open graph image URL, but it didn't work either.
<meta name="twitter:image" content="http://example.com/myimage.jpg?4362984378"></meta>
Then what worked?
I discovered that adding a random query parameter at the end of the URL, that you're going to share on X, works perfectly. X treats this as a new URL and re-fetches the card image. For example, you can add something like ?test=1 like below example, or whatever random query parameter you like. And then share this URL on X.
https://omarchy.deepakness.com/setups?test=1
But don't worry, adding the query parameter isn't going to break the URL or affect the content shown on the page. It's perfectly safe to use this.
Now, you can search live on the internet when using the Claude API, because Anthropic has brought the new web fetch tool which can search for relevant information online, in the background, and then return the output.
The web fetch tool is currently in beta. To enable it, use the beta header web-fetch-2025-09-10 in your API requests.
And here's the example code provided that you can use to use the web-fetch tool:
curl https://api.anthropic.com/v1/messages \
--header "x-api-key: $ANTHROPIC_API_KEY" \
--header "anthropic-version: 2023-06-01" \
--header "anthropic-beta: web-fetch-2025-09-10" \
--header "content-type: application/json" \
--data '{
"model": "claude-opus-4-1-20250805",
"max_tokens": 1024,
"messages": [
{
"role": "user",
"content": "Please analyze the content at https://example.com/article"
}
],
"tools": [{
"type": "web_fetch_20250910",
"name": "web_fetch",
"max_uses": 5
}]
}'
You have to pass the web-fetch in the API request and it works in the background and gives you the output, as you can see in the example above.
Came across this post on X, where Vercel launched x402 which helps you build paid MCP tools, as you can try out in the demo here. It's explained as:
x402 is an open protocol that addresses this by adding payment directly into HTTP requests. It uses the 402 Payment Required status code to let any API endpoint request payment without prior account setup.
They have also created a starter which you can use to quickly build paid MCP tools.
Came across a post on X that talked about fixing the issue of Claude Code adding 2024 to its web search queries, even though it's 2025 already.
So Daniel built a simple tool that fixes this, and you can install the tool by running the following command in your terminal:
npx claude-code-templates@latest --hook=pre-tool/update-search-year --yes
Here, you can find more info about the implementation. This is very helpful.
I loved Omarchy, the new Arch-based Linux distribution created or rather popularized by DHH and couldn't help myself to create a resource website for the distro. So I created Omarchy Hub that contains setups, themes, resources, and much more information about Omarchy.
It's open-source and anyone can contribute here to make the website better.
My current flow is, whenever I see some new information about Omarchy while browsing the internet, I just take a minute to collect and add it to the website. I have multiple JSON files where I have to add the info, but AI makes the process very easy as I can just provide the URL and the screenshot, and it automatically adds a new item to the relevant JSON files.
Also, I am constantly improving the user-experience and trying to make it into an even more helpful resource library for Omarchy.
Loved this post on X explaining how to responsibly raise your prices without driving anyone mad:
The post features Nathan's SaaS Kit (previously ConvertKit), the leading email marketing tools provider.
Came across this post from DHH explaining Linux is way faster than macOS in real life, and to be exact over 7x faster for the below task:
curl -L https://cdn.kernel.org/pub/linux/kernel/v6.x/linux-6.16.tar.xz -o linux.tar.xz
time tar -xf linux.tar.xz
Running the above command on Framework desktop, with Omarchy installed, takes around 1.6 seconds whereas it takes 12.2 seconds on MBP M4 Pro. And here is what GPT-5 explains about why there's so much speed difference.
Actually, another person ran the same tests and it was similar, Linux was way faster.
A quick guide to host a Next.js app on a Hetzner VPS via Coolify:
ssh root@[IP_ADDRESS]
sudo apt update && sudo apt upgrade
curl -fsSL https://cdn.coollabs.io/coolify/install.sh | bash
http://[ID_ADDRESS]:8000 and register a new accountI have also created this step-by-step YouTube video explaining everything from creating the VPS to installing Coolify and hosting the website.
After updating the Windows 11 OS, my sister's laptop was locked out and the existing pin and password were not working at all. We tried several things, but nothing seemed to work. In fact, we even changed the Microsoft account's password from a different device, but it still wasn't able to log in (even though the Wi-Fi was on).
But we finally got a working solution from this video (method 2), but I had to improvise at the end a bit:
Troubleshoot > Advanced options > Command Prompt option which will open a new CMD windowC:
cd Windows/System32
ren utilman.exe utilman1.exe
ren cmd.exe utilman.exe
exit
control userpasswords2
Most of the steps are shown in the video in the method 2 section, but I had to do it a bit differently at the end (only #8 in the above steps is different from the video).
After that I copied all my data to an external drive and reset the PC from Settings using the 'Cloud install' option. The local and cloud reinstall options in recovery mode had failed earlier – the reinstall only worked after I signed in.
Came across this post on X where this image was shared that showed "order" vs "chaos". And that hit me really hard.
Someone the post replied, "chaos is the highest form of order", and I was like 🤯.
How accurate!
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.
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.
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:
git rm --cached content/blog/still-brave-browser/index.md
git commit -m "Commit message"
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.
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:
So cool! I will definitely be using some of these workflows.
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
Loading strategy
font-display: swap: Shows fallback text immediately, then swaps when webfont loadsrel="preload" tag as shown below<link rel="preload" as="font" type="font/woff2" crossorigin href="/fonts/font.woff2">
@font-face declarations: Put them in the <head> rather than external CSS filesFile optimization
unicode-rangeMetrics and layout stability
size-adjust, ascent-override, descent-override to prevent layout shiftfont-size-adjust: Scale fallback fonts to match your custom font's x-heightfont-synthesis: none and only declare weights you provideSystem and fallbacks
-apple-system, BlinkMacSystemFont, "Segoe UI", RobotoPerformance monitoring
That's it.
By the way, I got to know about this blog post from a post on X when I was casually browsing.
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.
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.
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:
- Find an open source project you like.
- Clone it locally.
- Get Claude Code Max ($200/month).
- 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.