Recent Updates

Share your product updates, adopt user-driven development, promote transparency and improve engagement with easy-to-use announcement boards, interactive roadmaps, feature request, help documentation and customer feedback tools.

Day 37 - Find Happiness Within Yourself

Here's what I've discovered over the years: you won't find it in other people's success.
Find happiness within yourself.
Here's what I've discovered over the years: you won't find it in other people's success.
It's easy to fall into the trap where you measure your worth by vanity metrics—views, likes, subscriber counts, new signups.Every day, I see other people hit milestones I haven't reached yet and it’s natural to compare.
But, happiness isn't external. It's internal.
It's about being proud of your journey—not comparing yourself to others, but to who you were yesterday. There will be setbacks: days when nothing works, your code breaks, nobody engages with your content, and you feel invisible.
Don’t let these moments define your journey—how you respond to them does.
Work because it lights you up inside. Share because it helps someone else. Succeed on your own terms for your own reasons.
Keep showing up. Keep building. Keep learning. The people who succeed aren't the ones who never fail—they're the ones who keep going.

Day 36 - Learn How To Code, Is It Too Late?

Is it too late to learn how to code now that AI can write code for you?
My answer? No. It's not too late. In fact, it might be the best time ever.
Here's why:
Software engineering isn't just about writing code. It's about understanding problems, architecting solutions, and making strategic decisions.
AI can generate code, sure, and sometimes the code is good but it can also be bad. It can’t architect complete solutions well, it can’t understand your users’ pain points and it can’t debug system-wide issues.
Think of AI as a superpower that amplifies what you can do—not a replacement for knowing how things work, kinda like how calculators haven't replaced the need to understand math. If you understand the fundamentals of building software, AI makes you more effective. If you don't, AI just generates code that don’t really work, can't scale, which you can't fix and can't maintain.
So, it’s not too late. Start learning.
I'm posting every weekday. See you tomorrow!

Day 35 - The Biggest Leap In Human Capability

The people who win in the next decade won't be the ones with the most knowledge. The ones who win are the ones who know how to think with AI, not just use AI.
The biggest leap in human capability—with the growth in AI.
Think about it: For the first time in history, you can have an expert to consult and help on about literally anything, instantly. You can write articles, generate code, analyse data, even create entire apps by prompting.
AI isn't a tool. It's a partner.
The people who win in the next decade won't be the ones with the most knowledge. The ones who win are the ones who know how to think with AI, not just use AI.
Your competitive advantage isn't what you know anymore—it's how fast you can ask, learn, adapt, evolve and create with AI as your co-pilot.
So, stop using AI like a search engine or chatbot. Start using it like a collaborator or a co-founder. Push it. Question it. Bounce ideas with it. Build with it.
I'm posting every weekday. See you tomorrow!

Google and Search Engines are indexing my forms

04 November 2025 — Dave CheongCoding & Architecture
I've noticed in Google Search Console that Google has been unable to index some of my pages. Here's a screenshot showing pages that are Crawled - currently not indexed
CleanShot 2025-11-04 at 17.35.31.png
Upon inspection, it turns out the URLs that have been failing are my comment creation forms and not actual pages.
CleanShot 2025-11-04 at 17.39.13.png
This was a complete surprise to me, because the forms are coded with a POST method. I naturally assumed the Googlebot wouldn't index or follow these—but that assumption turns out to be incorrect.
CleanShot 2025-11-04 at 17.41.23.png

Why Google tries to index a POST form

When Google tries to index a POST form (like a comment submission form), it’s usually because the Googlebot has discovered the form’s URL and thinks it might lead to valuable content. It'll try to index it unless it's been explicitly told not to.
In essence, be aware of the following:
  1. Form action is crawlable (and linked somewhere)
    1. Google can "see" a form if it's in the HTML code
    2. Even if it’s a POST, Google may still attempt to treat it like a GET request to see what’s behind it — since it doesn’t actually submit forms with arbitrary data
  2. No clear signal that it shouldn’t be indexed
    1. If the form or its action URL doesn’t have noindexnofollow, or isn’t blocked via robots.txt, Google assumes it might contain content
    2. Example: /comments could be interpreted as a comments listing page, not just a submission endpoint
  3. Shared URL between view and submission
    1. If the form posts to the same URL that displays the comment list (e.g., /post/123/comments), Googlebot thinks it’s a normal page worth indexing
  4. The site’s internal linking exposes the form action
    1. Sometimes templates or components include <a href="/comments">Leave a comment</a> or use the action URL in a data-action attribute — both of which can be picked up by crawlers

How to stop Google from indexing POST forms

Here are safe, SEO-friendly approaches:

Block the endpoint via robots.txt

This stops Googlebot from fetching that URL. You will have to list all paths that you want to prevent crawling. Note that this prevents crawling, but not indexing, if the URL is already known. Use noindex as well if possible.

Add a <meta name="robots" content="noindex, nofollow"> header to the response

If /comments ever returns HTML, include the following in the response:
But if the URL doesn't return meaningful HTML, you can add a HTTP response header explicitly telling the Googlebot not to index and not to follow:

Separate “display” and “submission” URLs

In the design of urls, separate the urls that display and create.
  • Use /post/123 for displaying comments associated with a given post
  • Use /api/comments (or /post/123/comments) for form submissions

Ensure the form action isn’t accidentally linked

Finally, avoid having code like this which links to the form submission URL:

Why is this important?

Getting this right prevents Google from wasting crawl budget, indexing junk URLs, and hurting your site’s SEO quality signals — it keeps your indexed pages clean, relevant, and user-focused.
If Google is indexing your comment submission form (and similar low-value URLs), it can hurt your SEO in a few key ways:
  1. Wasted crawl budget – Google spends time crawling form endpoints instead of your real content pages, so important pages might get crawled or updated less often.
  2. Thin or duplicate content – If those form URLs return little or no meaningful content, Google sees them as “thin pages,” which can lower your site’s overall quality score.
  3. Index bloat – Having many low-value URLs in the index dilutes your site’s relevance and makes it harder for Google to understand which pages matter.
  4. Poor user experience in search results – A user might click through from Google to a blank form or “method not allowed” page, which increases bounce rate and signals low quality.

Day 34 - Using ChatGPT to wireframe the Testimonials Wall of Love

I took a screenshot of a competitor and prompted ChatGPT to generate a responsive card-based layout. It generated everything in seconds. The structure was solid, the layout kinda worked and the code made sense. It got me about 75% of the way there.
AI is all the rage these days and I do jump on Claude or ChatGPT for assistance.
I'm working on the Testimonials feature for my startup, and I needed to create a "Wall of Love"—you know, that beautiful grid of customer testimonials you see on landing pages.
I took a screenshot of a competitor and prompted ChatGPT to generate a responsive card-based layout. It generated everything in seconds. The structure was solid, the layout kinda worked and the code made sense. It got me about 75% of the way there.
It wasn't perfect. It missed a couple of things and some of the code needed tweaking. I just fixed things by hand. Still, it saved me a ton of time.
AI is incredible for getting you started fast. It’s not a silver bullet though. Believe some of the hype; just not all of it. For now, I think you still need to understand what good code looks like. Don't expect it to replace your developers.
I'm posting every weekday. See you tomorrow!

Day 33 - Goals for November 

Two clear goals for this month
It's the first working day of a new month. It’s Day 33 of my indie hacker journey and I’ve set my self two main goals:
  1. Building out the testimonials feature in User Mastery—so teams can collect and showcase social proof
  2. Extending the platform to support multiple sites—so that User Mastery can service multiple product teams
Two clear goals. There’ll be other things to work on, but by the end of the month, these are the two things I’ll judge myself on.
If you're starting this month without clear goals, take 15 minutes right now. Write down what you want to accomplish. Be specific. Give yourself a deadline.
Make sure to break things down. For me, I've split each goal into weekly milestones. Week 1: displaying testimonial. Week 2: collecting testimonials. Week 3: multi-site architecture. Week 4: testing and polish.
I'm posting every weekday. See you tomorrow!

Article out now - Keeping a Changelog

31 October 2025 — Amy CheongChangelog
Nothing is more frustrating than the feeling of when you've just delivered an amazing new product update but no one is listening. That's where the underrated communication tool, Changelogs come in, to save your declining user engagement and remind them your product is very much alive.
I've just dropped a new article, "Keeping a Changelog: Do's, Dont's' & Tools for when you want to level up your Release Notes", a complete guide to maintaining good communication and keeping users engaged with your Changelog. Find out what you're doing wrong and how to fix it, and how level up your Changelog from boring lists and mechanical update announcements into a two-way communication and engagement tool that actually builds excitement and user retention.
Let's communicate and celebrate our achievements together, whether they be big or small!

Day 31 - One Month Indie Hacker Report Card

Quick report card after a month as an indie hacker.
Launched a landing page at usermastery.com — simple, clean, straight to the point. It's live and ready to collect early interest.
I've been working on our content editor, which is the backbone of the entire platform. This editor powers changelogs, help docs, announcements, feature requests, testimonials—everything. Getting it right means everything else builds on a solid foundation.
The Changelog functionality is coming together nicely. I even made my first changelog post using User Mastery itself—dogfooding in action. I added a commenting system too, so two-way conversation is possible.
Oh, I’ve created a simple form builder. It's works seamlessly with the rest of the platform.
And finally, I've been tuning the rendering engine for speed and ensuring everything meets compliance standards. It scores well on external tests.
A lot packed into this month. Every feature brings User Mastery closer to launch. I’m giving myself a solid B+.
I'm posting every weekday. See you on Monday!

Day 30 - Chase Your Dreams! Start Today!

Hey guys,
A month ago, I made a decision that terrified me. I decided to chase my dream of building my own startup. After years of talking about it, planning it, finding excuses—I finally did it.
And here's what I've learned: chasing your dreams is uncomfortable. Some days you wake up energised, ready to conquer the world. Other days you question everything. You wonder if you're wasting your time. You see others succeeding faster and doubt yourself.
But here's the truth: Your dreams aren't going to wait for the perfect moment. There will always be reasons not to start—not enough money, not enough time, not enough experience, not good looking enough. But if you keep waiting for perfect conditions, you'll be waiting forever.
Start messy. Start scared. Start anyway.
So if you've been sitting on a dream—whether it's changing careers, starting a business, doing something with AI, or anything else that lights you up inside—stop waiting. Start today.
Because one month from now, you'll wish you had started today.
I'm posting every weekday. See you tomorrow!

Day 29 - Building a Startup Is Hard. Stay Strong!

Hey guys, it’s almost been a month since I started my journey as an indie hacker. Time flies.
I just want to quickly say there are a lot of ups and downs building a startup.
Some days, you ship a feature and everything clicks. You feel like you’re on top of the world, like you're building something that matters.
Other days? Nothing works. Code breaks. Users don't get it. You try to explain yourself, but still they don’t get it. You question everything.
That's startup life.
Here's what I'm telling myself: The downs don't mean I’m failing. They mean I’m learning. Everything, even if small, teaches me something. Every time I’m explaining something and people react with confusion, well, that tells me I need to be clearer.
The key is to keep showing up. Keep chipping at it. Keep iterating.
Most people quit during the down days and that’s why they fail. Not because the idea was bad, but because the founder gave up when things got hard. It’s only been 29 days for me, but it’s something I need to keep in mind.
I'm posting every weekday. See you tomorrow!