2coffee.dev

Latest threads

Recent notes, ideas and conversations.

View all
Xuân Hoài Tống
Xuân Hoài Tống

Shopify has just announced that its mobile app has moved from React Native (RN) to native development. In 2020, Shopify engineers chose React Native for their main apps, aiming to write code once and run it everywhere. At that time, RN attracted a lot of attention from the mobile‑app community, but performance was a trade‑off. RN can speed up development, yet it requires significantly more effort to optimize.

Now they are switching back to native for a fairly straightforward reason: large language models have made cross‑platform coding almost obsolete. With the same design, AI can generate code for both platforms simultaneously, solving both performance and multi‑platform challenges.

Native is now the future of mobile at Shopify

(0)
Xuân Hoài Tống

DeepSeek has just released Flash 4.1, which is smarter and faster than the previous Flash V4.

Some users say the performance of 4.1 falls between Flash and Pro v4. It can reach over 400 tokens per second, while the earlier version was only around 100 tokens per second. This version also adds image‑understanding capabilities. The model is already accessible via API at the same price.

I've been using OpenAI for a long time, so I haven't tried DeepSeek yet 😅. I'll give it a look in a few days.

(0)
Xuân Hoài Tống

Mới nhìn thấy trang statichost.eu cho triển khai các dự án static website các bạn ạ. Cũng có chức năng kết nối với git và cung cấp môi trường xây dựng mã (build). Đặc biệt sắp tới tích hợp thêm cả CDN nên khả năng trang web tải nhanh hơn từ mọi nơi trên thế giới.

À chỉ static website thôi nhé, chưa thấy có serverless để chạy API server đâu 😅

(0)

Articles

Longer stories about technology and the process of building products.

View all
NEW
other

AI Is Making Me Too Lazy to Think and Too Reliant on It

For the past few days, I have been adding features to my website. As I mentioned when I tore it all down and rebuilt it last time, I used AI to recreate most of what the old version had, moving its features and interface to a rewritten version built with a new stack. Up to 99% of the code was not written by me at all, but by AI. Still, I had to understand the core because I was the one guiding AI in that direction; I did not want to let it decide everything on its own because that could easily get out of control. Article data is stored in an SQLite file, then 11ty extracts it to generate completely static HTML pages. A script...

other

New Stack: 11ty, sql.js-httpvfs, and Preact.js

Hello readers of 2coffee.dev, four months have flown by like the wind, and this time I'm back with a new article. How have you been? How are you adapting in this era of AI dominance where almost everything in work is being automated? Every now and then, a few friends ask if I'm still writing. Do I use AI to write? Hmm... definitely not. Why would I use AI to write when anyone can use it to churn out countless articles to their liking? I mean, if they want, they can use AI to generate articles and read them. But if you ever feel the need for something fresh, come back here — because all the content here is crafted by me, with many hours of reflection.

Posts

Concise notes from what I am learning and making.

View all
NEW

Profiling Technique - Finding and Removing Performance Bottlenecks in Node.js

profiling

The first one or two years after starting work are often the most energetic period in a programmer's career. I could imagine many ways to solve a problem, and even think about which approach would be the most "elegant". The reasoning was simple: if an approach was recommended and used by many people, it must be the best one. A piece of logic that initially looked simple could become as thick as a burger after passing through several layers of thought, because a function had to pass through several wrappers to be ready to "cover" many future cases.

Writing code can be an enjoyable job. Solving a problem can lift my mood for the whole day, give me stories to talk about with colleagues, and let us analyze and dissect problems that seemed unknown to everyone else. Yet most conversations eventually come back to one question: "What about performance?" Getting the code to run is one thing, but have you ever asked how to know whether your code is good enough? Many people think that simply following Best Practices will automatically make it run as fast as possible. That is true, but not enough. If everyone were certain that their code was good, perfect systems would be everywhere. Whether code runs quickly depends on many factors, not just how it is written. People do not usually rely on intuition to judge whether a piece of logic is fast or slow. To prove it, they need data, or at least need to know which part of the code is taking time to process. Only after everything is laid out in front of them can they find a way to optimize it.

Profiling is a widely used

Musings about the debugger – What is DAP?

debugger

Over the past few days, I’ve switched from VSCode to using Zed for a few reasons. Zed is a code editor written in Rust, very lightweight, and its interface is similar to VSCode in many aspects. However, Zed still has its own differences and follows its own philosophy. Personally, I’ve used Zed since its early days; my first impression was that it was very fast and smooth. That said, many features I was used to in VSCode were missing in Zed, so I only stopped at the level of experimentation.

One feature I use very frequently is debugging with breakpoints: selecting positions and observing the data flow in the system. VSCode is a popular editor, so enabling debugging is much easier. It usually takes only a few steps, and especially if you use a framework, you can easily find guides online. In general, VSCode does a very good job of simplifying things for users.

Therefore, after switching to Zed,

MCP – Prompts & Resources

mcp

This may be the last post in the basic MCP series on the blog. Originally I had planned not to write any more because the documentation for Prompts & Resources in MCP is very limited, but since these two topics are interesting I decided to introduce them to readers.

I have read and studied the material about these two items on the MCP main site. After understanding the principles and use‑cases, I looked for projects that have integrated them and intended to add examples to this article, but it turned out that very few projects actually implement these two components. Why is that?

In my opinion, a few

Hoài

Software Engineer, Blogger, Mentor...

I'm Hoai - a software engineer who enjoys turning ideas into useful products and writing about the journey along the way.

Explore
Illustration of Hoai waving