Author: Daniel

  • What Are Context Markers? Why Should You Care?

    I’m currently working on a SaaS where I needed to share context across folders.

    The Problem

    Imagine the following setup:

    /home/daniel/projects/work/
    │
    ├── AGENTS.md                       # Work-level instructions
    │
    ├── shared-context/
    │   ├── AGENTS.md                   # Shared-context instructions
    │   └── healthcare/
    │       └── domain.md               # Shared healthcare knowledge
    │
    ├── test-project/
    │   ├── AGENTS.md                   # Project-level instructions
    │   ├── src/
    │   │   └── AGENTS.md               # Source-specific instructions
    │   └── README.md
    │
    └── healthcare-app/
        ├── AGENTS.md                   # Zoa project instructions
        ├── emr-app/
        └── strategy/

    How do you access the context in shared-context/healthcare/domain.md when working within healthcare-app/

    AGENTS in the sub-directory override any rules written in the parent directory. But the context/healthcare/domain.md is not loaded when necessary when you prompt within the healthcare-app/

    Solution:

    When adding a project in ChatGPT Desktop (Codex), add the working directory first. This will be set as primary. Now, add the folder that you like to share the context from.

    Verification

    “How do you verify whether context is loaded?”, might you ask. Here is where context marker helps.

    Context marker is an arbitrary string that Codex adds when asked to any file (ideally markdown).

    Here is how a context marker would look like when added.

    File: shared-context/healthcare/domain.md

    Context marker: SHARED-CONTEXT-5638

    To verify whether the files are loaded, ask Codex the following:

    Without reading any files, report the context markers already available in your instructions.

    Codex will then list the context markers from the loaded files.

    Use Context markers only to test context discovery. You don’t need to add context markers to every document.

  • Is Your Business Plan Ready?

    I called my college mate, a founder running a Fin Tech company in Chennai, to talk about the EMR SaaS I’m building.

    He asked me to share my business plan. I have never written one before. Few days later, I found myself learning what a business plan is and how to write one.

    Business plan is basically a document that includes the following:

    • What is the problem you’re trying to solve?
    • How does your product or service solves the problem?
    • Targeted market for your product or service
    • TAM, SAM, SOM (Basically, how big is the opportunity, how much of that market can you serve and how much can you realistically win)
    • Go-to-market strategy
    • Financial plan: Investments & monthly operating costs
    • Potential risks

    Writing a business plan helped me think more clearly about what I’m building, who I’m building it for how I intend to make it a business. I could have spent weeks without clarity. But his question forced me to write a business plan.

    Talking to people who’ve walked the path you’re planning to take can be incredibly valuable.

    Go talk to that person.

  • Week 43: Stepping Into SaaS

    Week: Oct 19 to Oct 25, 2026

    A week ago, I shared how a random conversation paved way for a potential SaaS. We had built the working prototype.

    This week, we got a chance to showcase our prototype, to an endocrinologist, in one of the established medical centres in Salem.

    The doctor appreciated our efforts and was happy to see the working prototype. After the demo, I asked for his feedback. He was happy to share his feedback. Every feedback is a valuable insight to improve our software.

    When asked, “How soon would you like to be on-boarded?”, he replied, “As soon as possible.” That little statement fuelled us with more enthusiasm and intention.

    I previously wrote about the experience in the post — The uncomfortable side of building something.

    Jogging

    I was able to jog for 4 days this week. I’m able to now run 1.2 Kms in a stretch since I started jogging.

    Switched To AWS

    This week I moved all my websites to AWS.

  • Sometimes, All It Takes Is a LinkedIn Post

    I found a non-promotional post on LinkedIn that caught my attention. That eventually led me to Arunan and his venture OS Works.

    We had a good conversation and got to know each other.

    I liked how he turned Open source software into a business opportunity. He is running OS Works with a team of just one. If you’re running a small business, his services might be worth exploring.

    I’m truly happy for Arunan and his new venture. Sometimes, all it takes is a LinkedIn post to start a meaningful professional relationship.

  • Moved To Amazon Lightsail

    In my earlier post, I mentioned about moving to Amazon Lightsail along with my reason.

    Today, I finally moved all my websites.

    I did everything from selecting an Lightsail instance, setting it up using Ansible, deploying the websites on to Lightsail including the DNS management all with zero downtime. I’m even leveraging the built-in monitoring feature in Amazon Lightsail.

    I’m really proud of myself.

    Also, I’m fortunate to be alive in this beautiful era where one can compound the knowledge with AI assisted tools like Codex to do more in much less time.

    My buddy, Siddharth, keeps advocating to use OpenLiteSpeed. I never got a chance to try. However, this time, I bit the bullet and switched to using OpenLiteSpeed.

  • What Is Ansible?

    Do you find setting up servers hard, each time, you move to a different hosting provider from your previous hosting service Looking to automate setting up multiple servers doing the same tasks repeatedly?

    Well, Ansible is your answer. Ansible automates the management of remote nodes and controls their desired state.

    Ansible environment has three main components.

    1. Control node
    2. Inventory
    3. Remote node(s)

    Control Node

    Control node is where Ansible is installed and shall be run to manage the remote nodes.

    Inventory

    Inventory is the list of manged nodes that are logically organized.

    Remote Node(s)

    Remote node(s) are server instances that Ansible controls.

    Take my case of moving to Amazon Lightsail for example. In my case, AWS Lightsail instance is the Remote node. Control node shall be my personal computer where I installed Ansible to control the remote nodes. Inventory is a list of managed nodes that are logically organized.

    Installing Ansible In Control Node

    Ansible can be installed using the APT (Advanced Package Tool) package management system in Ubuntu. Refer the installation guide.

    sudo apt update
    
    sudo apt install software-properties-common
    
    sudo add-apt-repository --yes --update ppa:ansible/ansible
    
    sudo apt install ansible

    Scaffolding Ansible

    I’ve scaffolded Ansbile using Codex. inventory.yml is the starting point in Ansible. Note that Ansible supports both formats — .ini and .yml

    ansible/
    ├── ansible.cfg
    ├── requirements.yml
    ├── inventory.example.yml
    ├── vars.example.yml
    ├── site.yml
    ├── .gitignore
    ├── README.md
    └── roles/
        └── admin_user/
            ├── tasks/main.yml
            └── templates/sudoers.j2

    inventory.yml is the template for server’s IP, user & the private key.

    File: ansible/inventory.yml

    ---
    all:
      children:
        wordpress:
          hosts:
            BT_Marketing_Prod_Web_01:
              ansible_host: REPLACE_WITH_STATIC_IP
              ansible_user: ubuntu
              ansible_ssh_private_key_file: /absolute/path/to/private-key.pem
              ansible_python_interpreter: /usr/bin/python3
    

    Replace placeholders with actual values in var.yml when you use variables.

    Once ready, you can verify whether Ansible is able to connect to the remote node(s) using the following command.

    ansible BT_Marketing_Prod_Web_01 -m ansible.builtin.ping -e '{"ansible_become": false}'

    This will get you started with Ansible. Use your playbook to your imagination!

    You may ask, “Why do we need Ansible when one can create and use skills available AI assisted development tools”. After all, AI solves repetitive tasks, right?

    Creating workflows using Ansible give you bullet-proof reliability. You can use such tools to leverage Ansible. Choose workflows over handing tasks to AI assisted tools.

  • How To Write Effective Prompts?

    No matter which AI Assisted development tool (ChatGPT Codex, Cursor, etc.) you use, writing effective prompts will yield better outcomes.

    I learnt that a prompt must structure information across six parts.

    1. Goal
    2. Constraints
    3. Coverage
    4. Output format
    5. Unknowns & choices
    6. Action boundary (Guardrail)

    I previously wrote about moving to Amazon Lightsail from Utho, my existing Cloud service provider. Let us use that scenario as an example to build the prompt.

    Imagine asking Codex to list the steps involved to setup production website on Amazon Lightsail using LEMP. Here is how the prompt looks:

    List the steps needed to set up a production WordPress website on an Amazon Lightsail instance using LEMP: Linux, Nginx, MySQL, and PHP.

    Use a plain Ubuntu instance rather than a preconfigured WordPress image. Check current official documentation for supported versions and instructions.

    Cover:

    • Setting up SSH access, a non-root sudo user, and firewalls.
    • Installing and configuring Nginx, MySQL, PHP-FPM, and the PHP extensions WordPress needs.
    • Creating a dedicated WordPress database and database user.
    • Installing WordPress with WP-CLI and setting appropriate file ownership and permissions.
    • Configuring Nginx for WordPress, including permalinks and PHP handling.
    • Enabling HTTPS with automatic certificate renewal.
    • Configuring backups, security updates, and basic monitoring.
    • Verifying the setup and troubleshooting common errors.

    Present the steps in execution order. For each step, explain its purpose, provide the commands or Lightsail console actions, and describe how to verify success. Clearly mark placeholders such as the domain name and IP address. Explain any choices that depend on budget or expected traffic.

    Only provide the instructions; do not create resources or make changes.

    Now, let us look how the prompt is structured across the six parts listed above.

    Goal

    List the steps needed to set up a production WordPress website on an Amazon Lightsail instance using LEMP: Linux, Nginx, MySQL, and PHP.

    Constraints

    Use a plain Ubuntu instance rather than a preconfigured WordPress image. Check current official documentation for supported versions and instructions.

    Coverage

    Lists the topics the answer must include, from setting up SSH access through backups and monitoring.

    Output Format

    Requesting steps in execution order, with purpose, commands or console actions, and verification.

    Unknowns

    Clearly mark placeholders such as the domain name and IP address. Explain any choices that depend on budget or expected traffic.

    Action Boundary

    Only provide the instructions; do not create resources or make changes.

    You don’t need to provide all parts in a prompt each time. However, having them all yields better results. Give it a try!

  • Moving To Amazon Lightsail — Predictable Billing

    I found Utho when I was looking for reliable Indian Cloud service providers. I’m impressed with their customer support. They respond quickly and resolve any issues. I had no complaints.

    Earlier this year, I was testing Open Claw, Hermes and a few other applications. Lately I don’t use those applications as much as I used to. There are only a few WordPress instances left in the server.

    I clearly know I spend more than I should for these WordPress websites. So I decided to move. This time, I chose Amazon Lightsail.

    Amazon Lightsail provides virtual private instances that come with predictable billing, same as Droplets, Linode Instances, etc.

    Another reason I wanted to move to AWS is to learn their ecosystem well.

    I developed and hosted MacroIntel.app, a signal-generation application used in production by a macro trader to implement his strategy, turning U.S. macroeconomic releases into Gold (XAU) buy/sell signals, in Amazon EC2 recently. So, understanding their ecosystem makes sense in the long run.

  • The Uncomfortable Side Of Building Something

    Last week, I wrote about how a random conversation turned in to a real product.

    With the working prototype, my schoolmate and I approached a clinic and showcased the EMR prototype to a doctor. Through our discovery questions we realised the actual pain points, and a few ideas to make our EMR even better.

    When we asked the Doctor, “how soon would you like to be on-boarded?”, he replied, “As soon as possible”. He even volunteered to connect us with his known associates.

    We know we took the first step right.

    But later that day, I couldn’t sleep at all. Because I didn’t know if I must celebrate or be concerned. One one end, I must be celebrating for validating the idea and the prototype. One the other end, I’m concerned whether all these efforts will work out in the long run.

    Questions like — “Will we be able to onboard more doctors?”, “What if we’re unable to?” didn’t let me sleep. I don’t have an answer to these questions today. And I don’t know if I will ever have answers to such questions. Maybe, this is how every SaaS is built. Maybe, this is the uncomfortable side of building something, anything.

    But I know this is the game I must be playing. I only remembered the quote by Ellen, The Iron Lady Of Africa —

    If your dreams don’t scare you, they aren’t big enough.

  • Eight Years In Business. Profits Struggle. What Do You Do To Solve?

    A few days back, an acquaintance called me to talk about his business. Our last conversation was a while ago. I remembered him being in the web and mobile application development business then.

    This time, our conversation revolved around the digital marketing business. His recent work was about creating Instagram reels for local businesses.

    When asked whether he moved away from web and mobile application development, he mentioned that he expanded his list of services.

    The average ticket size was between INR 50,000 – INR 1,00,000 with a profit margin less than 20% and no sales pipeline.

    The Problem

    When asked, “What does your ideal customer look like?”, he mentioned that he didn’t want to restrict his services to specific markets.

    Catering everyone may appear profitable. After all, you want to put all your skillets to use to make money. Sometimes, choosing a market can make you feel like you’re losing money on the table.

    The problem is clear. Pursuing shinier things in the market is novelty. But the trade-off is that you will be seen as a generalist but not a specialist.

    So, How Do You Solve?

    During the early stage of business, it is important to identify who do we want to serve and what do we solve. This is called market specialization (niche selection).

    Find what skills you’re great at, identify a problem worth solving using those skills and serve people who can’t afford to leave it unsolved.

    Let me give you an example. Now, imagine you’re a SaaS founder with funding looking to build your next MVP to be launched in 60 days. Which business would you hire?

    Consider the following positioning:

    (A) Generalist

    We help Business build software.

    (B) Industry Niche

    We help B2B business build software.

    (C) Problem-specific Niche

    We help funded B2B SaaS founders launch their first usable product in six weeks, without hiring a full engineering team. After launch, we provide ongoing product engineering so founders can focus on customers and growth.

    The last positioning clearly tells who do you serve, what do you solve and emphasises a specific problem.

    The way to get high value tickets is to identify the skills you’re great at, finding a problem you can solve using those skills, and serving people who desperately want the problems solved and the willingness to pay.