RSSAmplifier

Blog

amanhimself.dev

I'm Aman Mittal (@amanhimself). Software Developer and Tech Writer. Welcome to my blog!

amanhimself.devRSS feed ↗253 posts

Latest posts

From plan mode to auto mode in Claude Code

I am using Claude Code since February 2026 and recently I have completely stopped using "plan mode" in Claude Code most of the time and using "auto mode" most of the time during my workday. Is plan mode necessary?

2026 - half year in books

In 2026, I set a goal to read 26 books. I had the lowest expectations of myself, and I stayed true to those expectations, because in January I did not read anything. I started reading in February, which is why I decided to write a six-month review of my 2026 books at the end of July.

Notes that can never be atomic

Every guide to atomic notes eventually meets the same objection: most of what I write cannot be atomic. A meeting note is a list of actions and a transcript of a specific day. It's an event. A project plan is a spec file that contains decisions and at times, serialized tasks, glued together. I do think if a system demands everything become atomic, that system quickly becomes useless. In Sönke…

How to set a custom folder order in Obsidian

Obsidian's file explorer sorts folders alphabetically. The sort menu offers file name, modified time, and created time, and nothing else. There is no built-in way to arrange folders by hand. For my Obsidian vault, I like to see the organization in a specific way. For example, I like to keep the inbox folder at the top since it contains files I capture quickly for any reason during the day.

A minimal Obsidian vault structure that sticks

My Obsidian vault has 291 notes captured over the last three years. Some are long-form notes, prompts for tools like Claude Code, or quick captures from reading on the internet. When I created this vault, I started with 8 folders, but over time the number has grown to 16. I like to keep this vault minimal so it stays useful, but a lack of timely archiving has turned it into a disorganized mess.

How I track my token maxxing

Back in February 2026, I wrote two posts about how I am tracking Codex CLI and Claude Code token usage. During that time, I used both CLI agent tools for work and personal projects. Both posts used a tool called ccusage and its variant (at that time), @ccusage/codex. ccusage is created by ryoppippi and is a popular command-line tool to analyze coding agent token usage and costs from local data…

Moving away from Oh My Zsh (OMZ)

I've been running Oh My Zsh (OMZ) on every workstation I've ever owned. It was one of the first things I'd install when setting up a new machine or cleanly updating an existing one. For years, I've blindly copied my workstation configuration from one Macbook to the next, without questioning whether I still needed something in the current day and age, or whether it had quietly been replaced by…

New blog theme again

In January 2025, I shared an update on updating the blog theme and code block themes. The Astro setup that builds this blog uses Shiki, which makes it easier to switch between any supported code theme. What about the blog's primary and accent colors?

Week notes 17

A heavy week on the docs side. Two things shipped that I had been chewing on for a while, and a couple of small skills came together. Some reading and writing on the side too. - 🧪 Built a docs-ja-translator skill and landed the Japanese tutorial pilot at work. The skill takes an existing MDX document from Expo tutorial, mirrors it under pages/ja/<same-path, preserves frontmatter, JSX tags, code…

Playwright to Chrome

Back in January, I had just started using Codex CLI and Claude Code. I was spending more time with Codex CLI and ended up creating a small Expo and React Native app as well. As I was learning how to use these tools, I wrote about using Codex CLI with Playwright for browser automation tasks in First Few Days with Codex CLI post. The approach I discussed initially, worked for me for some tasks by…

My Mac setup

A guide on setting up Apple Mac for daily work.

Week notes 16

Mixed week. A small side-project release, a couple of satisfying wins on the work side, and a lot of late-night ideas I want to act on coming week. - 🚀 Shipped SkillsBar v1.7.0. The big addition is Codex plugin support and adding custom collections view where one can organize their skills based on a theme or topic or work repository. Codex plugins now show up under User Skills in the Codex tab,…

Replacing rm command with trash in Claude Code

The fear of losing a file is a big deal using Claude Code since it has access to bash tools and can run bash commands on its own. This is possible whenever --dangerously-skip-permissions is enabled or I have accepted edits inside a particular session. A workaround for this can be to skip running rm command inside Claude Code settings. I have added "Bash(rm:)" to a "deny" list inside Claude Code's…

Week notes 15

This week leaned heavy into to upgrading lint tools at work and a bit of writing. I also managed to create a skill to perform a tedious activity with Claude Code and /chrome tool it has, which I am going to write about in a future post. - 📝 Wrote three short blog drafts that will go live on this blog soon.

Week notes 14

Busy week with mix of publishing, drafting, and big changes. The kind where you look back and wonder how it all fit into five days. - 📝 Wrote a blog post based on the recent works on Expo docs. It talks about different layers of discoverability that have become essential for human readers and AI agents.

Docs discoverability layers

When someone says a doc site is "discoverable", they often mean that a human can find it through a search engine or use the in-site text-based search. Most documentation sites are built for human readers. If a page loads correctly and reads well, it is considered discoverable. This assumption covers only one dimension. Search engines need signals to crawl and index pages. They need to know which…

My Starship prompt setup

The prompt is the line you stare at before every command in a terminal app. It can be as minimal as a symbol like $ or . By default, the Terminal app on macOS uses zsh with a plain prompt that shows your macOS username. While it shows some information, it tells you nothing about the current directory you are working in. There are various configurations you can use with zsh or the shell of your…

Color-coding my Claude Code sessions

I usually have two or more sessions running at a time either in the same or different project directories. One of the longest and most used sessions I have is in my notes directory, where I am constantly creating specs or taking notes on the stuff I am working on. One problem when running multiple Claude Code sessions in different terminal windows or tabs is visually distinguishing them.

TIL Remotely accessing one MacBook from another MacBook

macOS has a built-in way to remotely access another Mac using Screen Sharing and Remote Login (SSH). No third-party tools needed. How to set it up

Using Ghostty for the first time

It's 2026, a time for AI agents and AI tools like Claude Code and Codex CLI to be alive. I am using them every day and I find myself spending more time inside a terminal app rather than a code editor. In the past, I've written about setting up and installing Oh My Zsh and using iTerm2 as my de facto terminal app. I've used iTerm2 as long as I can remember, probably around a decade. I have switched…

Slash pages you need for your blog

The pages outside /blog can matter just as much as your posts. Slash pages like /now, /about, and /uses show readers who you are beyond your writing. I currently have 12 slash pages. That's too many. Here's the thing: each one serves a purpose and I have found myself visiting other people's slash pages more than I expected. Weirdly compelling. Let me walk through what I have and why:

Using images in Claude Code

Recently I wrote a post on Running headless Codex CLI inside Claude Code, which describes a way to use Codex models in a headless way when you have Claude Code installed on your local machine. I ended up creating a skill for it where Claude Code will ask you to go through a series of questions to select which Codex model and its reasoning level. It also goes through the task you want to achieve…

Running headless Codex CLI inside Claude Code

I have both Claude Code CLI and Codex CLI installed on my local machine. I often use Codex to code review or tighten the code on something I am working on. Claude has a better terminal UI, which is not only pleasing to use, but it respects my terminal app's theme. Switching between both CLIs and then finding a way to write prompts wasn't fruitful. So I created a Skill in Claude Code to allow me to…

TIL about tracking your Claude Code tokens usage

I wrote about tracking Codex tokens usage recently, and the same tool works for Claude Code. Different command though: shell

TIL about tracking your Codex tokens usage

I use Codex for both code-related and non-code tasks in Cursor and in the terminal. I wanted a better way to track Codex token usage day by day. Recently, I learned about @ccusage/codex, which reads your local Codex logs and spits out a table of exactly how many tokens you used each day. This breakdown isn't provided by the Codex usage page.

Migrating from Cursor to VS Code

I recently migrated from Cursor to VS Code. Cursor's agentic code integration was a huge part of my daily workflow. If you're switching from Cursor to VS Code, the migration is straightforward. There are a few steps to get it right.

TIL about git shortlog

I have been using Git for all my career in the tech. I am habitual of the basic commands such as git add, commit, status, log and a few more that I use consistently. Yes, until last week, I had never once used or heard about git shortlog. Sometimes you want to know who actually did the stuff inside a repository. Or like me, at the end of each year at work, I have to compile a list of external…

2025 - A year in review

Another year, another reflection. This is my sixth consecutive year-in-review post. Writing these has become a tradition I genuinely look forward to at the end of a year. It forces me to slow down, instead of just rushing. This year, I mostly focused on work, and I had fun doing that, so I am going to keep this post short.

2025 blog stats

Recently, I was looking at my blog analytics for 2025 in fathom analytics and I have some thoughts to share. 62,500 unique visitors. 77,400 page views. I've been writing posts for years now and it always feel nice when people read them. If you are reading them, thank you!

Lessons from 10 years of blogging

On January 8th, 2026, I hit 10 years of blogging on this little corner in the vast ocean of internet. I missed the exact date to post, but I do not want to skip the marker. My first post on this blog was JavaScript Code Conventions on Jan 8, 2016. The archive now shows 223 posts. That line in the sand still feels unreal.

Week notes 13

Busy week with mix of publishing, drafting, and experimenting. - 📝 Published a post on sharing my initial experience on using Codex CLI outside of coding and mostly with Obsidian.

2025 year in books

In 2025, I set a goal to read 40 books. It was going well. Then I did not finish anything for a span of three months, but I managed to complete the goal. Overall, it felt a sustainable year, though I'd like to read more books. I won't list out all of the books I managed to read this year. But if you are curious, I use Goodreads to track my reading challenge and the books I have read. I completed…

First few days with Codex CLI

Using Codex CLI beyond coding, for Obsidian note management, and building automated workflows with MCP servers.

Adding Static Quest webring

I have seen webrings on blogs I usually read. I think they are an amazing way to discover new blogs within the community. However, I had never indulged previously to add one to my blog. Recently, I read about Static Quest on Clayton Errington's blog. I am a huge fan of Clayton's 100DaysToOffload challenge, and the blogs I've come across through his challenge are some of the most interesting blogs…

How I added llms.txt to my Astro blog

At the end of 2024, there was a growing interest in tech writing community around publishing an llms.txt file. The purpose of this file is to provide structure or full context that an LLM vendor can use to understand a site owner's intention and consume a site's content in a structured way. The whole concept is beneficial for AI crawlers. Instead of navigating through a site's HTML, CSS, and…

Week notes 12

This week was good. I was able to complete a few tasks at work and I was able to spend some time reading the books I started earlier. - 📝 The first post is about adding a yearly post count visual to an Astro blog. It talks about the approach that pulls all posts at build time, groups them by year, and renders the totals as a simple chart so my publishing cadence is obvious at a glance. It stays…

Add a yearly post-count visual to your Astro blog

A quick walkthrough to build a yearly post-count bar chart in Astro using your existing blog content collection.

Wait, there are smart quotes in my docs

How to catch smart quotes in documentation when copy-pasting from apps like Notion, and why maintaining consistency matters over time.

My default apps in 2025

It's been a year since I last updated my default apps list. The main driving force behind the update in 2025 is consistently the same app for multiple use cases and switching to Android from iOS as a primary device and eliminating some apps from my professional and personal workflows. - 📨 Mail Client: Gmail

Week notes 11

I am back to writing weekly notes and I am going to keep things casual this time. This week was a bit fast and slow at the same time.

Create a copy as markdown button for LLMs in an MDX documentation site

Using MDX for writing and managing content for a documentation site provides flexibility if you are deep into the "docs-as-code" workflow. This flexibility allows you to mix Markdown with React components, use dynamic data and stitch them together at runtime. However, this flexibility also comes with challenges. MDX files often contain components that render content at runtime and these components…

How to add a recent posts section to your Astro blog

Recent posts are a light-weight way to keep readers engaged through your blog's content. Recently, I decided to add this section at the end of each post without using any external service like an analytics service. Instead, I decided to use tags, which are already present in each blog post's frontmatter and use them to show the most recent posts. I've used tags since the beginning of my blog and…

How to use multiple iOS simulators at once with Expo CLI

Opening a React Native app created with Expo in an iOS simulator is a common developer task. By default, the app opens in the last used iOS simulator. In my case, I frequently use the iPhone 17 Pro simulator right now which runs iOS 26 version. Sometimes, I also want to open the app in another iOS simulator. For example, working on the previous blog post, I wanted to observe and simultaneously…

Large header title in Expo Router

Creating native iOS experiences in React Native is about using platform conventions. One of these patterns that Apple offers is the large header title that smoothly collapses as you scroll through a list, something you must have seen in Apple's apps like Settings or Messages. In this post, let's dive into how to use the large header title when using Expo Router library for iOS.

RSS feed in an Astro blog

One of the easiest ways to follow a site without being tracked or throttled by an Algorithm, with no login walls, is having content delivered to a reader app of your choice. This is why so many personal blogs opt to include an RSS feed. This post is just a quick guide about the implementation of RSS feed for my blog &mdash; amanhimself.dev.

Content insets with FlatList in React Native

In this quick post, let's explore how to use content insets available within FlatList in React Native to ensure that the content is properly presented behind the header. This post is a continuation of Header blur effect in Expo Router. Current approach: using useHeaderHeight hook

Exploring React Native: Header blur effect in Expo Router

Modern mobile app interfaces go beyond opaque header bars. On iOS, a frosted-glass like blur effect when scrolling a screen which contains the header is quite easy with Expo Router and React Navigation. In this article, let's explore how to implement this effect in a React Native app using Expo Router. For demonstration, the following will be the final result:

Advanced code blocks with language labels and copy buttons in Astro

Learn how to enhance your Astro blog with advanced code blocks featuring language labels and copy buttons using Shiki syntax highlighting.

Managing python environments on macOS using conda-forge

If you use your macOS for Python projects, especially for AI tools like Stable Diffusion WebUI or Open Web UI, you likely find it frustrating that macOS ships with a python3 default version. Sometimes, this version can be outdated or locked down. One project may require Python 3.11, while another requires 3.9. For example, at the time of writing the guide, the default Python version on my machine…

Exploring React Native: Fetching Data with Tanstack Query

Tanstack Query (also known as React Query) is a powerful library to fetch data and manage state in React applications. It leverages the hook oriented architecture, which goes well with modern React apps. It also offers automatic data caching, managing errors internally for easier API interactions. While building the home screen of the manga tracker app, a playground project, I decided to use this…