Tear Down and Rebuild

Tear Down and Rebuild

Daily short news for you
  • For over a week now, I haven't posted anything, not because I have nothing to write about, but because I'm looking for ways to distribute more valuable content in this rapidly exploding AI era.

    As I shared earlier this year, the number of visitors to my blog is gradually declining. When I looked at the statistics, the number of users in the first six months of 2025 has dropped by 30% compared to the same period last year, and by 15% compared to the last six months of 2024. This indicates a reality that users are gradually leaving. What is the reason for this?

    I think the biggest reason is that user habits have changed. They primarily discover the blog through search engines, with Google being the largest. Almost half of the users return to the blog without going through the search step. This is a positive signal, but it's still not enough to increase the number of new users. Not to mention that now, Google has launched the AI Search Labs feature, which means AI displays summarized content when users search, further reducing the likelihood of users accessing the website. Interestingly, when Search Labs was introduced, English articles have taken over the rankings for the most accessed content.

    My articles are usually very long, sometimes reaching up to 2000 words. Writing such an article takes a lot of time. It's normal for many articles to go unread. I know and accept this because not everyone encounters the issues being discussed. For me, writing is a way to cultivate patience and thoughtfulness. Being able to help someone through my writing is a wonderful thing.

    Therefore, I am thinking of focusing on shorter and medium-length content to be able to write more. Long content will only be used when I want to write in detail or delve deeply into a particular topic. So, I am looking for ways to redesign the blog. Everyone, please stay tuned! 😄

    » Read more
  • CloudFlare has introduced the pay per crawl feature to charge for each time AI "crawls" data from your website. What does that mean 🤔?

    The purpose of SEO is to help search engines see the website. When users search for relevant content, your website appears in the search results. This is almost a win-win situation where Google helps more people discover your site, and in return, Google gets more users.

    Now, the game with AI Agents is different. AI Agents have to actively seek out information sources and conveniently "crawl" your data, then mix it up or do something with it that we can't even know. So this is almost a game that benefits only one side 🤔!?

    CloudFlare's move is to make AI Agents pay for each time they retrieve data from your website. If they don’t pay, then I won’t let them read my data. Something like that. Let’s wait a bit longer and see 🤓.

    » Read more
  • Continuing to update on the lawsuit between the Deno group and Oracle over the name JavaScript: It seems that Deno is at a disadvantage as the court has dismissed the Deno group's complaint. However, in August, they (Oracle) must be held accountable for each reason, acknowledging or denying the allegations presented by the Deno group in the lawsuit.

    JavaScript™ Trademark Update

    » Read more

The Issue

Hello readers of 2coffee.dev, it's been a while since I last met you. After completing and launching the OpenNotas project in early June, a week later was dedicated to "fixing bugs," and recently I took a short trip to "reset" myself after six months of hard work. By the way, have you all made plans for your next trip? Take some time to rest and enjoy life; don't dive too deep into work or you might get "overloaded".

Currently, my work has become busier than before; I am juggling many tasks at a higher frequency. But what's important is that I still value writing; it is an essential part of my life.

Whenever I "dive" somewhere for a while, it's either because I'm very busy (like traveling, for example :XD), or I'm working on something big. That's right; going on vacation is just a secondary reason; the main reason is that I am planning to "refactor" this blog.

Current Blog Status

Thanks to the support of readers, the blog has been getting more visitors, but alongside that, many new issues have also been discovered.

In just a few days, by the end of June 30th - Nuxt 2 will officially reach its End Of Life (EOL) and will no longer be supported, or in other words, it will be "deprecated." In its place will be Nuxt 3. The blog is currently using Nuxt 2 along with the Static Site Generator (SSG) mechanism to create web pages for readers.

SSG is a technique that generates static web pages from dynamic data. Instead of continuously querying the database for each client access (SSR), SSG generates HTML files containing the content of the articles in a single "build" process. At this point, the server simply hosts static files, ready to be returned to users, thereby increasing processing speed.

There is an issue not only with Nuxt but also with many JavaScript-based web-building frameworks: they have too much JavaScript code. So what? To be honest, it's not a big deal. As we increasingly own more modern electronic devices, what's a bit of JavaScript? That's true, but it's also worth noting. Over-reliance on JS can cause many websites to become sluggish unnecessarily. Are you willing to wait 5-10 seconds for a page to load just to read a short article, or are you ready to spend several dozen MB of 4-5G data to view a quick news item? For me, definitely not!

If you are familiar with Nuxt, upgrading to Nuxt 3 will be easier. In fact, I have worked with Nuxt 3 in several other projects and noticed that the issue of excess JavaScript code still persists. I then turned to static site generators like 11ty and Hugo with the hope of creating completely static websites. After weighing the options, the name 11ty was settled, but on second thought, as someone who values user experience, sometimes it's necessary to add JavaScript somewhere. The common feature of static site generators is that they do not prioritize JS, so adding JS can have many drawbacks, and of course, I don't want to spend too much time on that.

Recently, in the article Angular, React, Vue, Svelte... what's next?, I mentioned a new name Fresh. This is a very new framework based on Deno. Fresh stands out with Interactive Islands -- meaning your website is static, but only the "interactive islands" contain JavaScript code. By doing this, we won't be overwhelmed with JS code; it should only be returned where necessary.

At this point, I'm sure you readers can guess what I'm planning to do.

Plans

Once again, I will rewrite 2coffee.dev using a newer "technology stack." Over the past 1-2 years, the article The Future of the Web is on the Edge has sparked many new research endeavors for me. Instead of deploying everything on a centralized server and sweating to operate it, "Web is on the Edge" emphasizes that everything can become services -- and we benefit greatly from speed and server maintenance costs.

Fresh will definitely be the framework for the blog. Fresh is still quite new, but it is sufficient to create a simple blog. Fresh does not have SSG but instead uses SSR, which has a significant advantage in that data is updated quickly rather than going through a costly "build" step. Fresh requires Deno Runtime to run.

The database is an essential component. Previously, Supabase -- based on Postgres was a choice, but now we have several newer services available. The advantage of Supabase is clear -- it has most of the implementations of a Postgres server, but it has a critical weakness in low storage capacity, only 500MB for free. Therefore, Turso is the perfect candidate.

Turso is a serverless SQLite database. You don't need to worry about where the data is; just write SQL commands to interact with your data. Turso also offers a generous amount of storage, up to 9GB along with 1 billion reads and 25 million writes to the database per month. Additionally, Turso benefits from "Web is on the Edge" as it allows database replication in multiple locations around the world. This means you will be connected to the nearest database when querying data.

Deno was launched several years ago, and although it has many advantages over Node.js, it seems to still need more time to gain warm acceptance from the community. Fresh requires Deno Runtime to run, and that is also an issue because, up until now, very few providers offer a Deno runtime environment, including Cloudflare.

2coffee.dev is fully deployed on Cloudflare Pages and Cloudflare Worker. If you're curious, you can check out the article Completing the Transition of the Blog to "Web is on the Edge". Since the current services like the interface page and API server are all deployed based on JavaScript Runtime, they are well supported by Cloudflare, but Deno is not. That means Fresh cannot be deployed here yet.

Well, it seems there are many emerging issues.

Perspective

Amidst the myriad of problems, fortunately, Deno also offers a service called Deno Deploy that allows for quick deployment of applications requiring Deno Runtime.

At first glance, Deno Deploy is quite similar to Cloudflare Worker, both providing a serverless environment for Deno or Node.js. You just need an account and use the CLI to deploy through command lines.

Like Cloudflare Worker, Deno Deploy comes with services such as Deno KV (key-value database), Deno Cron (cron jobs), and Deno Queue for sequential processing tasks. However, the services of Deno Deploy are still relatively simple and cannot be compared equally with Cloudflare.

A major drawback is the low free tier. While Cloudflare allows unlimited usage of Pages and 100,000 calls to Workers (which can be simply understood as API calls) daily, Deno Deploy only has 1 million queries to API endpoints monthly. Additionally, the limit for KV is only 450,000/300,000 reads/writes of data.

Overall, not all features will be carried over to the new version, but I will strive to keep the interface familiar. A sneak peek for readers: in the next version, there will be a feature called "A Cup," which is similar to a Tweet or Threads. By sharing my thoughts through a short topic, I hope to engage with readers even more.

Ultimately, it's all about learning while doing; I will read and study the documentation as I go along. Fresh is a new name, and Deno has not had much practical experience. However, that does not discourage me; I hope to gain more experience from this deployment.

Conclusion

With all of the above, it is clear that we are facing many challenges. Instead of choosing a safe, old-fashioned approach, let's experiment with a new tool and see how it goes. We often hear the phrase "step out of your comfort zone" to achieve more, and this is the time to reflect on whether that is true!

Let’s return to the original purpose of this blog, which is to learn while doing. Not only through the articles but also through the entire process of building and developing the blog. Therefore, I’m not afraid to apply new technologies; whether successful or not, it will be a lesson for me as well as for many others.

I hope that in one to two weeks, I will be able to introduce a completely new version of 2coffee to all readers. Once again, thank you all for taking the time to follow me. If you have any questions, please leave a comment below the article!

Premium
Hello

The secret stack of Blog

As a developer, are you curious about the technology secrets or the technical debts of this blog? All secrets will be revealed in the article below. What are you waiting for, click now!

As a developer, are you curious about the technology secrets or the technical debts of this blog? All secrets will be revealed in the article below. What are you waiting for, click now!

View all

Subscribe to receive new article notifications

or
* The summary newsletter is sent every 1-2 weeks, cancel anytime.

Comments (1)

Leave a comment...
Avatar
Ẩn danh1 year ago

interactive island thì cũng khá same same khái niệm với Astro, mà Astro thì cho phép anh tái sử dụng lại code Vue trước đây, sao anh vẫn chọn Fresh, anh giải đáp giúp em được không?

Reply
Avatar
Xuân Hoài Tống1 year ago

Chào e, một câu hỏi khá thú vị vì trước khi viết bài a đã nghĩ sẽ có người thắc mắc hoặc thậm chí đến mình củng phải thắc mắc. Việc chọn một thứ gì đó phụ thuộc rất nhiều vào hoàn cảnh của mỗi người, kiểu như là về kiến thức lẫn những công cụ mà họ đang tiếp xúc hàng ngày ý, đôi khi là cả thiên kiến cá nhân nữa. Thực tế a đã biết đến Fresh từ khá lâu rồi, từ hồi nó còn là beta và thi thoảng vẫn theo dõi nó, và ngày càng thấy nó được đầu tư nghiêm túc, tài liệu khá đơn giản nhưng "sạch sẽ", dễ hiểu. Còn thành thật mà nói a mới biết đến Astro cũng có kiến trúc đảo tương tự như Fresh cách đây ít hôm thôi, khi vô tình đọc được một bài viết của người khác. Có thể Astro tốt, nhiều lợi thế nhưng Fresh cũng rất tiềm năng, qua đó a cũng muốn tìm hiểu xem Deno liệu có tốt như lời đồn để còn đi loan tin 😅.