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?
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.
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…
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.
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.
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…
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…
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?
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…
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…
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,…
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…
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.
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.
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…
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…
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.
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…
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:
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…
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…
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.
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.
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…
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.
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!
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.
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.
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…
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…
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…
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…
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
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…
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…
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…
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.
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 — amanhimself.dev.
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
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:
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…
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…