Nam Vu Personal Site
  • Home
  • My Works
  • My Photos
  • My Blog
  • Pet Projects
  • Freebies
  • About
Nam Vu Personal SiteNam Vu Personal SiteNam Vu Personal SiteNam Vu Personal Site
  • Home
  • My Works
  • My Photos
  • My Blog
  • Pet Projects
  • Freebies
  • About
July 22, 2025

Lesson from TRAE SOLO train wreck: how not to launch a product.

  • Posted By : Nam Vũ/
  • 0 comments /
  • Under : Randomness
image
Lesson from TRAE SOLO train wreck: how not to launch a product. 2

When Perplexity introduced Comet with a waitlist, I thought that was a bad business decision in this day and age where everyone is racing to be the first to market. But TRAE taught everyone that there’s always worse way to do things.

For context, TRAE is another VSCode clone with AI sprinkled on top, similar to Cursor and Windsurf, but they were back by ByteDance (the company behind TikTok) and that got everyone hyped. And for a while they gained a certain amount of cult following. Nothing like the kind of following Cursor or Windsurf have of course, they were quite late to market and initially they were only available on Mac. I used to say that in a world where Figma already gained absolute dominance, TRAE wanted to be Sketch. But they eventually released a Windows version and things started to pick up from there. They had a pretty generous Claude Sonnet rate limit for the free tier and ‘free’ always attract people. The rate limit is pretty hard though just like any other service with a free tier, couple with the fact that they still don’t have a working build for Linux, the platform with the largest amount of developer, means that TRAE remains a novelty of an editor: something people crawl back to at the end of the day when they hit the rate limit in Cursor, Windsurf or Gemini CLI.

But TRAE isn’t just a mere VSCode clone, it’s a clone backed by ByteDance, and that means they have to capital to push it forward, should they wanted to. And pushed forward they did. TREA recently launched version 2.0, marking a complete rebranding, moving away from the color Orange to a more technomatrix style Green color, and that’s not all. They’re also promising a whole new mode called SOLO, supposedly a complete all-in-one agentic mode that can do a lot more than just correcting your vibecode slops, it can also use the terminal, write documentations, use browser etc. And that got their followers losing their damn minds.

Read More

June 5, 2025

Don’t you hate seeing these 429 errors in Cline?

  • Posted By : Nam Vũ/
  • 0 comments /
  • Under : Development
image
Don't you hate seeing these 429 errors in Cline? 4

Yeah me too. If you’re seeing this you’re one of the cheapskates like me who likes vibe-coding with Cline with Google’s free Gemini API. And if you’ve seen these you’ve definitely have a handful of API keys that you swap out every once in a while. It gets tedious fast, and you probably want an auto key rotator in Cline. It’s actually one of the most requested features but they haven’t implemented it yet.

Well I don’t have something like that, but I have the next best thing: a relay server that contains all your API keys, sitting between your Cline and Google API endpoint, and swap out a new key in a round-robin fashion when there’s requests.

TLDR: here’s the Github repo

https://github.com/vnt87/geminiproxy-worker/

This is my first opensource non front-end project.

To be clear, this wasn’t my original idea. I found a project by Chakshu Gautam that implement this proxy server but written in Go. It is pretty cool and is deployable via Docker, and I’m sure a lot of folks over on r/selfhosted are going to love that.

But I already have 50+ containers on my poor mini server at home that also doubles as my wife’s HTPC. So I set out to adapt that Go-based project into JS/TS so they can be deployed as a Worker via Cloudflare’s Edge Computing infrastructure. I recently had to deploy a similar Worker project that acts as a API relay server for Telegram so my n8n bots can continue to operate after our very competent administration decided to ban it out of nowhere.


May 29, 2025

AI doesn’t always help you save time

  • Posted By : Nam Vũ/
  • 0 comments /
  • Under : AI Apps

Ever since I learned how to vibe code, I’ve been obsessed with making micro apps/automations to assist with whatever I was doing at the time. Here’s an example: my current workplace uses a very primitive work timesheet logging system (hint: it’s a spreadsheet). They tried to ‘simplify’ it by making a small utility app that resides on the team’s Slack channel. It’s basically a small form that let you input stuffs like Dates, Time Logged, Today’s Plan, Today’s Actually Work, Tomorrow’s Plan, Issues…yadda yadda…Basically it’s a daily meeting in the form of a well, form. It is debatable if this implementation is better than filling out the spreadsheet manually, but there’s some obvious user pain point with this approach:

  • It is very tedious when user have to update multiple dates at once, which is often the case since most people tend to leave the timesheet duty toward the end of the month. Users have to completely the form one by one, once for each working day.
  • Sometimes when you’re trying to update multiple days at once, you sort of forget which date you are getting to, or if you missed any of the previous work days. Basically you need a calendar view.
  • Nobody likes making up content for Today’s Plan, Today’s Actually Work, Tomorrow’s Plan. Most people just want a single field for inputing that single task that they did that day (you know that’s true)

So when my PM reminds me that I have 3 hours left to fill out my missing 20 days of work time, I naturally decided the best course of action is to spend the next 4 hours vibecoding a tool that could potentially achieve the same thing as the Slack tool but slightly different. I know, I’m good at time optimization and decision making.

Features:

  • Light/Dark mode support (this is a must for all my apps), although the color scheme for this one is not yet optimized for usability.
  • AI-assisted content suggestion for filling out the boring stuffs (you only need to enter what you did for today, the Actual Work fields will mirror that automatically, and the Tomorrow’s Plan can be generated with a click)
  • Visual view of the current work month with how many work days have been logged and how many still need logging
  • Export to CSV with the filename being current date & time. So you can use it to populate the Google Sheet if needed.

What I learned while making this project:

  • Firebase Studio is not as useless as I initially thought. I actually started this project with v0, Lovable, bolt like usual but ended up using FS at the end. It didn’t create the best looking initial design but what it did different is auto Genkit integration, which powered the Gemini auto suggestion. In fact my experience with Firebase actually shows it being a little overzealous in inserting Genkit integration into everything, even on apps that required absolutely zero AI.
    It does work with this particular app though, so there’s that
  • How to have persistent data across different browser sessions. Traditionally most of my vibecoded app just relies on localStorage for storing data so everything just works only within the confine of that browser session. This is good for privacy but not very good for usability. Since I often use Cloudflare Pages to host my vibecoded slops, this time I learned how to leverage one of their free Page Functions to hold my data for me. This one holds pretty simple data so KV is a great choice.

You can check it out in all its glory here (there’s no auth at the moment but I will find a way to integrate it soon)


May 29, 2025

Why/how is this even allowed?

  • Posted By : Nam Vũ/
  • 0 comments /
  • Under : Rants
image 1
Adobe wants you to sign in BEFORE letting you remove any of their crapware

Why on earth should I have to authenticate with ANY party before getting to remove a piece of software on my own personal computer? Why does OSes let this happen to begin with? Adobe is no stranger to these kind of anti-user interactions, but they’re far from the only ones. NVIDIA used to force user to login before letting them interact with their GeForce driver, although this is slightly fixed with their new NVIDIA App (still an awful piece of software but at least you can update drivers without having to sign in now).

Now Adobe does provide an alternative way to uninstall their pieces of crapware, but is it really that easy? Remember this is the POS company that charges you for not wanting to give them money anymore.

image 2
Running the removal tool does nothing, the only thing it gives you is this utterly useless dialog

Honestly, how this company remains one of the biggest design product companies in the world remains an utter mystery to me. This should’ve crashed and burned a long time ago when they betrayed their user base for the first time, and yet we allowed them to not only survive, but continue to thrive up until this point.


May 9, 2025

Vĩnh Biệt Hoạ Sỹ Hùng Lân – Huyền Thoại Của Thế Hệ 8x

  • Posted By : Nam Vũ/
  • 0 comments /
  • Under : Tributes
image
Vĩnh Biệt Hoạ Sỹ Hùng Lân - Huyền Thoại Của Thế Hệ 8x 8

Hay tin bác mất cảm giác thật khó tả, muốn viết mà không biết viết gì.

Có lẽ ở VN thì bác Hùng Lân là 1 trong những hoạ sỹ có ảnh hưởng lớn nhất trong quá trình lớn lên của thế hệ 8x, 9x nói chung, và bản thân mình nói riêng, đặc biệt trong 1 số lựa chọn đưa mình đến với ngành design.

Thời bé lúc nguệch ngoạc tập vẽ thì quanh đi quẩn lại chỉ có 3 nhân vật mình hay vẽ nhất là Đô Rê Mon, Sôn Gô Ku và Dũng sĩ Hesman. Hồi đó còn chưa hề biết Hesman là truyện của Việt Nam, ko nghĩ ở VN cũng có người biết vẽ truyện tranh, cứ nghĩ nhập từ nước nào về mà sao có cả nhân vật VN như Huy Hùng hay quá. Về sau biết cả trăm tập Hesman năm ấy bác phóng tác chỉ từ 1 lần xem Voltron – Defender of the Universe thì lại càng hâm mộ bác hơn.

Rồi đến giữa những năm 2000s, lúc tập toẹ bắt đầu dùng Photoshop/Corel để lên những “Thiết kế” đầu tiên, muốn dùng text tiếng Việt có dấu thời điểm ấy là cực khó khăn vì font đẹp có hỗ trợ tiếng Việt vào thời điểm ấy cực kỳ khan hiếm, loanh quanh chỉ có mấy font công sở như VnTime, VnArial hoặc fancy hơn thì có font VNI của hải ngoại làm nhưng cách bỏ dấu rất khác. Tự nhiên lúc đấy bộ font chữ HL Thư Pháp và HL Comic dùng bảng mã BK HCM 2 kì dị xuất hiện và được cung cấp free 100% giống như phao cứu sinh cho thế hệ graphic designer đời đầu như mình. Có lẽ đây vẫn là font thư pháp được dùng nhiều nhất trong in ấn quảng cáo ở VN cho đến tận bây giờ.

Video này cũng đã được 7 năm trong lần mình may mắn được gặp bác trong talkshow về Hesman. Được nghe kể về những câu chuyện đằng sau sự hình thành của tác phẩm huyền thoại ấy. Thực lòng mà nói kể từ khi biết Hesman là chuyện của VN mình vẫn tò mò làm thế nào mà đất nước trong thời điểm khó khăn ấy lại có người đi theo 1 nghề tương đối ‘mộng mơ’ như làm truyện tranh, để rồi được biết hoá ra vẽ truyện lại chính là cách để bác và già thoát khỏi cuộc sống gian khó của thời kỳ Kinh Tế Mới. Có nhiều chuyện còn chưa kịp hỏi bác, nhưng có lẽ như vậy cũng là may mắn hơn nhiều người rồi, có nhiều người đến giờ có khi vẫn chưa biết Hesman là truyện của Việt Nam. Bộ truyện tuy bây giờ trưởng thành đọc lại có nhiều phần ngô nghê nhưng ko bao giờ quên nó đã mang đến cho 1 thằng nhóc 10 tuổi năm ấy biết đến những khái niệm khoa học đầu tiên (robot sinh học, tia hồ quang, tia tử ngoại, sóng điện trường, chân không, hố đen etc.)

Fujio Fujiko (Doraemon), Akira Toriyama (7 viên ngọc rồng) và bây giờ là là người cha già của Dũng sĩ Hesman. Lần lượt từng mảnh ký ức của những người con thế hệ 8x mùa hè năm ấy nằm khểnh đọc truyện tranh đã dần trở về với cát bụi.

Yên nghỉ nhé bác.


February 23, 2025

Remastered some old Vietnam photos for fun

  • Posted By : Nam Vũ/
  • 0 comments /
  • Under : Randomness

What’s the point of buying a 4070Ti Super OC if I don’t put it to good use, right?

Read More

February 14, 2025

You know what really grinds my gears?

  • Posted By : Nam Vũ/
  • 0 comments /
  • Under : Randomness
image 2
You know what really grinds my gears? 10

When people write docker instruction that makes use of docker run command without a detached flag.

Why is it annoying?

Say I SSH into a server, fire up a new service, wait for it to download all the necessary images and perquisites, got it all running nicely. Now all i want is to close the tunnel and go on doing other things. But no, you realize docker is still occupying your terminal. Closing the connection now would also kill the service you just launched. How stupid is that.

Sure it’d only take a few additional seconds to rerun it in detached mode, but that’s still an additional 15-20s of utterly wasted time. There’s no excuse to write instruction this poorly especially for a project with multi thousands users, and especially now that we can get a machine to write better instruction for you.


February 5, 2025

Over-engineering everything: how I made an app to track my baby’s feeding activity

  • Posted By : Nam Vũ/
  • 0 comments /
  • Under : My Apps
image 2025 02 05 102129682
Over-engineering everything: how I made an app to track my baby's feeding activity 13
image 2025 02 05 095350304
Over-engineering everything: how I made an app to track my baby's feeding activity 14

If you’re following my journey into agentic AI assisted coding (which includes TextPod, SnipSnap, Bill Splitter), well, it hasn’t stopped yet.

I’ve been tasked with feeding my 4-month old baby daughter every 4 hours, and I didn’t find an app that checked all the boxes that I need (tbh I didn’t look that hard, I needed an excuse to create my own :D). Specifically, I wanted:

  • A timer that tracked how long it is since last feed
  • Previous feeds data (which include time and feed amount in ml) displayed in a timeline format.
  • Ability to retroactively edit recorded data.
  • A chart to visualize feeding amount in hourly and daily time span.
  • Light mode/Dark mode support (for when you need to use your phone in a the darkness of the nursery).
  • Multi-language support (English & Vietnamese by default).
  • Data portability (can export and import in JSON format). However this is still a work in progress, I’m using localStorage for the moment, however I’m looking into utilizing external db scheme for data consistency across multiple devices, trying Cloudflare KV but it’s still very buggy atm)
  • Optional feature: Ability to change Baby’s name (in case others want to use this) and docker container (for fast, easy deployment on your own hardware)

You can check out a demo instance here: capufeed.pages.dev


January 18, 2025

It’s 2025, let’s talk AI and what direction we are headed

  • Posted By : Nam Vũ/
  • 0 comments /
  • Under : Randomness

I just got back from my 7th, and definite last Year End Party with my company. Seeing so many people saying this will their last YEP with the company filled me with so much thoughts I couldn’t sleep, I had to get up at 5AM to write it down.

So where do we start? I guess we’ll take a quick look back at 2024.

2024 was a…pedicular year, for lack of a better word. There was so many new things to learn, and yet far fewer things to do.

Read More

January 9, 2025

Cursor stole your ‘code’ command? Here’s how to revert it

  • Posted By : Nam Vũ/
  • 4 comments /
  • Under : Randomness

I love Cursor as much as the next guy but there’s one thing I don’t like about it. When you install it on Windows or Mac, it will takeover the ‘code’ command in your terminal, which is usually reserved for VSCode (for example if you navigate to a folder and type code . it will open that folder in Cursor instead of VSCode). This is fine if you use Cursor exclusively but if you’re like me who uses Cursor and Cline side by side, then this is especially annoying when you want to launch code.

Luckily user ubergonmx from Cursor forum provided a solution on Windows, here’s how:

Open this folder %localappdata%\Programs\cursor\resources\app\bin

Delete:

  • Code
  • Code.cmd

That’s it. Now the code command will launch VSCode instead. If you look inside that folder you’d notice the file cursor and cursor.cmd are still there, which means if you want to launch cursor instead of code you can simply type cursor . , which is how it should’ve been.

That’s all folks


1234Next ›Last »
Recent Comment
  • junior pro on Cursor stole your ‘code’ command? Here’s how to revert it: “Thanks” Jun 9, 21:04
  • User on Cursor stole your ‘code’ command? Here’s how to revert it: “Useful. Thanks” May 8, 21:39
  • Super on Cursor stole your ‘code’ command? Here’s how to revert it: “Thanks” Apr 11, 19:13
  • Hyper on Cursor stole your ‘code’ command? Here’s how to revert it: “Thanks” Mar 12, 15:39
  • helmut on “Invalid Location” error when trying to add SynoCommunity Repo: “nice ty” Jan 13, 22:36
Categories
  • AI Apps
  • AI Art
  • Design
  • Development
  • DIY
  • Freebies
  • GameDev
  • Home Networking
  • Linux
  • Music
  • My Apps
  • Randomness
  • Rants
  • Side Projects
  • Songs I like
  • Tips & Tricks
  • Tributes
  • Uncategorized
  • UX Design