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
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

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

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
image 2025 02 05 095350304

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ũ/
  • 3 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


December 31, 2024

Is it time to move on from WordPress?

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

I’ve been a WordPress user for as long as I’ve been in tech, maybe 20 plus years. I think I picked it up as early as 2004 or something, back when it was one of the blogging platform that you can self-host just like Blogger or Movable Type. Back then Drupal, Mambo (which later spawned Joomla) and a few forum software like phpBB, InvisionBoard and vBulletin with ‘portal’ addon were considered CMS.

The reason I picked and sticked with WP was simple, it was dead easy for non-developer like myself. In the olden days, if you want to apply a ‘mod’, you need to either open up the source file, find the exact line and modify the code in there as per the author’s instruction. WordPress revolutionized this process by introducing a plugin system that essentially just works™. You only need to find the plugin, download a zip file, extract it, then FTP to your server and upload the files to wp-content/plugins and it would automagically show up in the Plugins section in your admin panel. I know that sounds like a lot of work by today’s standard, especially with the WP plugin repository just streamlined everything so you can literally add a plugin by clicking a button or two, but back then it was like magic. WordPress’s simplicity is something that many webmasters these days take for granted, but once in a while you get a reality check when switching to another legacy system (looking at you nopCommerce, having to restart the literal effing app on each plugin removal/addition is unacceptable in 2024, hell it was barely acceptable in 2012 when the project was conceived).

But enough preamble, let’s go back to the current state of things. With its ease of use, WP has now gradually grown to power close to half the whole damn internet. But 2024 has been a pretty rough year of the WordPress ecosystem, mostly because Matt Mullenweg, the guy who was supposed to be its leader, made a series of inexplicable self-destructive actions in 2024 that pretty much ruined the whole platform’s reputation. The whole thing was confusing to be honest, it started off with Mullenweg declaring war with WP Engine, a competitor to his own WordPress.org, which was a normal as any other drama, but then it got weird. Instead of pooling his resource and battle WPE like a normal person, he proceeded to destroy himself, his company and basically his entire legacy that he built over the cause of 2 decades, even resorting to thievery. It’s inexplicable, if I was a conspiracy theorist I might even assume he was working for WP Engine to begin with.

And even putting the whole drama thing aside, WordPress as a platform itself is showing its age. I learned a bunch of new things this year, even made a few fun projects using more modern tech and noticed just how fast everything is these days compare to WordPress. Some people attribute this to PHP but I disagree, Laravel is a thing and I’ve seen Laravel projects with speed that rival anything else in existence. No it’s a problem with WordPress, it’s been going for far too long, become far too bloated for its own good.

I’ve explored building a new site with Astro, migrated every post I have here over there and generally I’m happy with the speed, but I’m still too lazy to migrate over decade worth of images to the new site, so right now it’s only a massive wall of text with no images. It shouldn’t be too hard to migrate the images to imagekit or cloudinary but because I always want to take any opportunity to learn new way to self-host things (aka. likes to overcomplicate things), I want to spin up minIO and host my own S3 to keep my stuffs. That of course will take extra time, and I’m not very well known for time handling.

Let’s hope I can get some stuffs done in 2025


December 29, 2024

Created yet another app

  • Posted By : Nam Vũ/
  • 1 comments /
  • Under : My Apps, Side Projects

Just made yet another an app to split the bill between my group of pool club buddies.

image 6

Just a year earlier it would take a non-developer like me weeks to put together a tool like this. Today I was able to create a full fledge app with proper tailwind implementation, light/dark mode support with custom Google fonts, and deploy to Cloudflare Pages through Wrangler API, all within the span of half a day’s work including a bunch of back & forth iteration with Claude.

What a time to be alive!

Check it out:

Live Demo
Github

P.S: (player names are currently hard coded because this is for my personal use, if you’re interested in a version with dynamic player setup, let me know in the comments down below)


1234Next ›Last »
Recent Comment
  • 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
  • Paul on “Invalid Location” error when trying to add SynoCommunity Repo: “Thanks for this, worked a treat” Dec 31, 00:16
Categories
  • AI Apps
  • AI Art
  • Design
  • DIY
  • Freebies
  • GameDev
  • Home Networking
  • Linux
  • Music
  • My Apps
  • Randomness
  • Rants
  • Side Projects
  • Songs I like
  • Tips & Tricks
  • Tributes
  • Uncategorized
  • UX Design