Ray Wu

Noodles are deconstructed dumplings. I’m a PM, founder, YCombinator alum.

Read this first

Markdown Blog Agent

“Shorten this.”

“Too grandiose.”

“Keep my wording.”

“Stop explaining it.”

I kept giving agents the same feedback while writing blog posts. Fixing one sentence didn’t mean the same problem disappeared from the rest of the draft.

I put those editing rules into Markdown Blog Agent.

If I say something is too grandiose, it checks the rest of the draft too. If my wording works, it leaves it alone. If the post doesn’t need a sentence, it deletes it instead of rewriting it.

Give it an idea. It asks a question if something important is missing. Otherwise, it starts writing. The final output is Markdown, so I can move it into a CMS without reformatting it.

This post is written by Markdown Blog Agent.

To try it, paste this into your AI chat:

Use https://github.com/raywu/markdown-blog-agent as the instructions for helping me write a blog post.

Read AGENTS.md and follow it as the canonical...

Continue reading →


Music Theory Agent: Duolingo on ChatGPT

I’ve found repetition helpful for learning music theory. Duolingo does this well. The questions are short, and concepts keep coming back.

But the path is fixed. If I understand an idea but keep missing one concept, it can’t change the lesson around that.

An agent can adjust as I go.

I made Music Theory Agent to try this:

🎵 Question 12

E – G – B

What chord is this?

> E minor

✅ Correct.
E – G – B = 1 – ♭3 – 5

🔥 7 · XP 42

🎵 Question 13

Change B → Bb. What happens to the chord?

If I struggle with something, it can ask about it in another way. If I get it, it moves on. Old concepts come back later.

The repo is agent agnostic. You can use it with ChatGPT, Claude, Gemini, Muse, or another AI chat that can read the repo.

Copy and paste this into your AI chat:

Use https://github.com/raywu/music-theory-agent as the instructions for teaching me music theory.

Read AGENTS.md and...

Continue reading →


ChatGPT is my (new) GTD interface

It figures out when a task needs my attention based on how much work it might take.

Marketing Illustration.png

I’ve used Getting Things Done on and off for years. My problem with GTD is simple: it only works as well as I remember to check it.

For years, I kept tasks in Airtable and used Google Calendar for a daily digest. If I stopped checking, GTD went dormant (see here).

Data entry was the other problem. I’d rather tell an agent what I need to do than fill out database fields.

I tell the agent what I need to do

My setup is simple:

Me ↔ ChatGPT ↔ Notion MCP ↔ Notion

Notion holds the tasks; MCP lets ChatGPT work with them.

I use ChatGPT because its mobile app, pinned conversations, and push notifications already give me the interface I need.

Adding something looks like:

Add a next action to write a blog post about my GTD agent, due end of week.

I can just as easily say:

The insurance quote is still...

Continue reading →


Deploy OpenClaw on VPS with Claude/Codex

github.com/raywu/do-openclaw: production-hardened OpenClaw deployment for DigitalOcean

do-openclaw is a documentation-only repo for deploying OpenClaw — an open-source, self-hosted AI agent framework — on a DigitalOcean droplet. Target: Ubuntu 24.04, Premium AMD tier (4GB / 2 vCPU, ~$24/mo).

Context

The content grew out of running multiple OpenClaw agents in production. Each deployment surfaced fresh failure modes (sandbox races, cron serialization, silent rsync skips, config-cache drift) and the fixes got generalized and landed here.

It includes: host...

Continue reading →


Tetris Flow

Flow == In the Zone

I tend to lose track of the podcast & audiobooks, when I multitask.

Except when I run.

When I am running, I’m in the moment.

I find myself retaining auditory information much better, while running. I attribute that to being in the flow.

I get in a similar zone when I play Tetris. Would I retain more, while playing Tetris?

I created Tetris Flow: https://tetris.raywu.org/

Screenshot from 2026-03-05 16-28-11.png

Screenshot from 2026-03-05 16-31-34.png

I built the v1 on React in 2020, during COVID. It wasn’t very good. Claude Code helped me rebuild it in a couple of days.

If you’d like access, send me your Google Account that you plan to login with and I’ll add you to the beta:

t e t r i s [ a t ] r a y w u . o r g

So far I really enjoy it!

Continue reading →


Using custom domain with free Gmail accounts

TL;DR We are using our custom domains via Gmail interface through SMTP2GO (free) SMTP Server to send emails, and Cloudflare (free) Email Routing to receive emails.


The goal: free custom domains for our emails on the free Gmail client (send and receive).

When we were using Google Domains with Gmail, the two services worked well together. We moved on from Google Domains and I set up our hosting on Cloudflare. Cloudflare is wonderful and natively supports Email Routing. However, it doesn’t provide a Email Server (SMTP).

We could rely on the free Gmail’s SMTP as default, but it doesn’t support DKIM signing, which lowers the chance of deliverability and renders DMARC records useless.

Bottomline: I want to be able to send emails without worrying about it going into spam. I found a good workaround via SMTP2GO.


The problem I wanted to solve are:

  1. Cloudflare does not offer Email hosting...

Continue reading →


GTD

Screenshot 2024-12-12 at 11.26.07 PM.png

I got around to building v3 of the Airtable GTD tracker / dashboard template to share. Feel free to make a copy and get started!


I run my life on GTD and am a huge advocate for the framework.

For the past several years, I’ve recommended it to many friends. I built my GTD tracker / dashboard on Airtable, and have shared a template with them.

Leveraging Airtable’s feature, I can sync this workspace with my Google Calendar. I’ve configured the setup to receive a daily digest of my tasks via Email. It’s typically in my inbox by 5:30AM Pacific Time, so I get to see what I have due that day.

Seriously. I run my life on this framework!

Not sure how it works? Read more below.


The GTD framework

Here’s a 15 min primer article on GTD: https://hamberg.no/gtd

GTD—or “Getting things done”—is a framework created by David Allen for organizing and tracking your tasks and projects.

  • Next...

Continue reading →


Decision making

  1. Do not defer decisions; we will never have perfect information so we should make decisions and revisit them once the information has changed. Switching context when deferring decisions is costly
  2. Do not make decisions through democracy. At times, decisions require intuition and at other times it requires data. We should talk through decisions and consult others for their expertise, but ultimately one person should own the decision and communicate the outcome to all stakeholders. Don’t diffuse the responsibility. Closing the loop is vital to the success of the decision (and the team)
  3. Scenario planning is part of decision making – you can never make a good decision without anticipating an outcome, nor can you make a good decision under duress. Irreversible decisions are more important to scenario plan for. Reversible decisions are almost never high stakes (refer to point 1) and should be...

Continue reading →


Email alias

TL;DR buy a domain on Google Domains and set up email forwarding to your Gmail.

I consolidated my online presence to raywu.org and finally created a short email alias to replace my personal email. I always found giving random / non essential website my personal email a bad idea.

What tipped me over was a data breach (T-mobile). They had too much of my PII. Why should I trust any other online retailer with my personal email or info?

Setting up an email alias is pretty simple. I used email forwarding on Google Domains (to forward emails to my personal account) and SMTP for Gmail to send email as my alias.

The minor trick there is to create an application specific password for my personal account to operate the SMTP.

Steps

  1. Use Google Domains to purchase a domain
  2. Go to Email > Forwarding to create an email alias and forwards to your main Gmail account
  3. Go to...

Continue reading →


My Alphabet

NYTimes, Gmail, Facebook, Twitter. These are four websites I visit the most. Every time I need a mental break, I tap “n,” “f,” “t,” into the browser URL and with one pinky action I kill some time.

It occurs to me that these handful of websites dominate the namespace of the URL autofill. I was curious to see what my present alphabet of websites look like.

I’m most surprised by “c,” “h,” “p,” “r,” “u,” on my list. I guess I rarely visit websites starting with those letters.

  1. angellist.com
  2. bankofamerica.com
  3. crossculturevc.com
  4. drive.google.com
  5. eat24.com
  6. facebook.com
  7. gmail.com
  8. heppel.dk
  9. inbox.google.com
  10. jsonlint.com
  11. kayak.com
  12. linkedin.com
  13. maps.google.com
  14. nytimes.com
  15. online.citibank.com
  16. profile.yahoo.com
  17. quicksprout.com
  18. rzchen.com
  19. seamless.com
  20. twitter.com
  21. up.jawbone.com
  22. venmo.com
  23. www.nytimes.com
  24. (no x)
  25. youtube.com
  26. zipcar.com

Continue reading →