Back2025 recapJan 18, 2026A bunch of things happened in 2025. In some aspects, there were a lot of changes, mostly due to changes in the technical world due to AI. In other aspects not much has changed. As I say, it was a year with a lot of progress but little results.RouteVNRouteVN was still the main project for the year. Regarding what actually happened, you can read the Devlog 1.5 and Devlog 2.I even had a disastrous attempt to build a Visual Novel store that didn't work at all and wasted a lot of time.The project made a lot of technical improvements and progress, and the product is finally downloadable to the public.However, it still does not have real users. Not a nice thing for a 2-year project.I have some reflection to do, and really need to start thinking about the go-to-market strategy and how to acquire real users. I will have to focus a lot of my energy on marketing rather than building.Rettangoli & other js libsEarly this year was actually a turning point for the Rettangoli frontend framework.It migrated from a previous version that was using uhtml into the current version that is using yahtml. Following that, we updated the state management and handlers.This iteration was a major upgrade from the previous one. The realization that UI could be written in yaml was a magic moment.A lot of libraries have been written, such as:- yahtml: Writing yaml instead of html
- jempl: A json templating language, works very well with yahtml
- puty: Writing unit tests in yaml
The idea of creating a frontend framework from scratch has been serving well for the mentality and mindset. I feel I can create anything from scratch now, and I'm continuing to look for the next thing to build.I'm seeing several frontend frameworks being acquired, such as Svelte and Nuxt.js acquired by Vercel, and Astro acquired by Cloudflare (2026) today as I'm writing this. Maybe there is a real business use case for this framework. But it seems only the top frameworks with huge userbases capture all the value.The current status of the frontend framework is:- I'm not satisfied with the current version; it does not pass my quality test. There are too many bugs, workarounds, and inconsistencies.
- I want to resolve these and publish a new version.
- Once I feel it is really good, I really want to see how far I can push it, market it, for other people to use.
Meanwhile, I'll be giving a talk about the Rettangoli framework in February at the CityJS Conference in Singapore.By the way, I still haven't migrated this personal blog to use Rettangoli Sites. I need to find some time to do it.HydroponicsI started a hobby in hydroponics, but have stopped the project now. I had invested a bunch of time on it, but I concluded that it was not worth it. There were a couple of risks of water leaking or fire from lights. It was also inconvenient for times when I was not at home. I also was not able to continue with the collaborator I had in mind, and there was no feasible path to commercialization. In terms of pure time investment, this time would have been better spent playing around with GPUs and local LLMs... which until today I have not gotten into.For farming itself, I would only do it if I got a big outdoor space, or a big and cheap warehouse-like space, both of which are not available in Singapore.GrowingRootsSGI got involved with a project called GrowingRootsSG related to farming communities. I was interested in this project because I was into hydroponics at the time. It was then presented at Beacon 2025. This is a project where I took the role of a partnerships lead rather than an engineer role. I wanted to gain non-technical skills.Unfortunately, I'm getting less involved now, especially as I also stopped most of my hydroponics activities.DFLDuring the last month of the year, I got a little involved and helped a bit with a project called Da Nang Fintech Lab.A friend of mine was working on it and asked me to help with some things.The lesson here is that relationships do matter and benefits can come in the long run. I had worked with this friend several years back on several occasions, so we know each other and have natural trust.Hiring & InternsIn 2025, I made my first intern hire. I hired a total of 4, plus 1 that didn't really work out.Through the experience of working with my first intern and subsequent ones, I've started developing a handbook, and more structured processes for working with interns.Regarding the actual ROI of interns, I have mixed feelings. I spend a lot of time with them, and many tasks would be much faster if I just asked an AI to do them. The most time-consuming thing is that I need to review all their work, especially the code.The real returns will probably come only if I develop longer-term relationships with interns and collaborate on future projects as well.I do want to continuously hire interns. I enjoy working with them at a human level and try to build longer-term relationships.I currently have a pretty standard hiring process. I want to raise the bar for the quality of interns that I hire, even if that means lowering the number of interns I can take. Taking around 2 interns at a time seems like the reasonable number.The bottleneck is sourcing good interns. Some of my previous interns found me mostly out of luck, but I won't be able to count on that again. I'm doing a bit of employer branding by letting each intern leave a blog post describing their experiences, and trying to do more outreach to attract good interns.Evolving coding landscapeCoding has changed a lot this year. It was the year I dropped Cursor for Claude Code and stuck with it until now, mostly. I documented it in this post.However, I am starting to explore alternatives to Claude Code. Products like Charm and OpenCode seem to offer a better TUI.What I'm interested in today is how to make agents run for days, and how to remove the need for human intervention.I'm thinking about building some agentic coding tools, but it will be another tool I build with no users other than myself, and I should be focusing on my main product instead.Discovering the beauty of the terminalAfter I started using Claude Code, it revived a huge interest in the terminal and TUI for me.I tried different terminals until I settled on Ghostty.I started to look for an alternative IDE after Cursor. I tried Zed and Neovim. I settled on Neovim, which was an amazing decision. This post is being written in Neovim. I'm all in on the terminal.Products from Charm really showed me that TUI can be beautiful and enjoyable.I have dropped Chrome in favour of Qutebrowser, which is still Chromium-based, but optimized for keyboard navigation. This browser crashes every day, but I still keep using it.I'm now using a terminal-based music player: rmpc, which is beautiful and works very well.I still have not concluded if the terminal is just fashionable for me right now, or is something I want to pursue and live with. We will see what happens in 2026.Lastly, related to the terminal, I plan to move to Linux instead of MacOS in 2026. I will still need a Mac and Windows for testing and building desktop and mobile apps, but for my main workstation, I want to use Linux, likely Arch Linux.Italy tripTrip to Italy - you can read it here. It is in Italian, but there are pictures.WritingWriting has become a bit easier for me.It has become more natural for me to iterate on the structure of the post and fill in all the content. I don't have to pay too much attention to grammar and spelling as AI can automatically fix those for me.I do not get stuck as much as I did before, or rather I know when I need to pause and give my self a break to come up with better writing ideas. It is still very time-consuming, but I am happy that it is becoming easier.I have to produce writing for both my personal blog and RouteVN.Writing will become more important as I will be doing more marketing activities in 2026.OthersAI SafetyI did not have much time to work on this topic other than participating in a couple of events. Therefore, this is on hold for now until I find the time and a good opportunity or project to work on.Build stronger professional and personal relationshipsNot much progress in this area. But the plan is currently:- Continue internship program; it is one way to build relationships
- Keep in touch or reconnect with some old friends and connections
- Participate in more in-person events to meet and connect with new people
Plans for 2026MarketingI've been building for most of the time in the last 2 years. This year, I have to reallocate a lot of this to marketing.I treat marketing as another engineering problem; it is very different but also interesting in its own ways.There are 2 areas:- Product marketing, mostly for RouteVN, this has its own audience and its own channels
- Personal branding marketing. My audience is mostly professionals in the startup and tech industry.
I mostly used to think about technical debt, but I would now call this marketing debt because I haven't been doing this at all during my professional life. Unfortunately, building silently does not work anymore, and I need to start building more opportunities for distribution channels.I mean, a lot of it is not marketing itself; it is just about keeping professional relationships with different people.RevenueThis is a follow-up to marketing, but this year I need to generate revenue from all the stuff I have built.The way I think about it is that there is a critical path for a product to achieve revenue. This path is very different from one of just building the product. For whatever reason, I always tend to stray from the path to revenue. This will require me to change a lot of habits and focus more on finding this path.Multiple projects or focus on main projectThis is a tradeoff that has been bothering me for a long time.On one side, the more correct answer is that I should focus on one product. Any work on other things takes away from the main product.On the other side, you should be trying many different things until one of them sticks. There should be a lot of experimentation and failing fast.My issue is that my main product is something that takes a long time to build out and grow.I think the answer and balance is something in between. I should be focusing most of my time on the main product, but also try to experiment with different things, especially if they are able to complement the main product.So, the conclusion is that I want to be able to better run those experiments, and not take away too much time from the main product.AI AdoptionThe main objective of this year in terms of AI adoption is to change the way I do things:- The old way is to use AI as a one-time thing to complete a task. The task does get done faster, but it still needs me to do some work.
- The new way to do things is that I improve the tools or the AI to complete the task. This is much more automated and scalable. The improvements done to the tools or the AI will compound, and I'm able to benefit in the longer term.
The main thing preventing me from doing this is habits. Pursuing short-term solutions rather than optimizing for long-term ones. There are a few processes and tools to build out.Conclusion2025 was a year of building without shipping, of progress without results. The main lesson is clear: I've been too focused on the technical side and not enough on getting things in front of real users.For 2026, the priority is simple: marketing and revenue. I need to shift from builder mode to distribution mode. The products are there - RouteVN is downloadable, Rettangoli is functional. Now it's about finding the people who will actually use them.One year is a long time. I may be better off doing a mid-year blog post as a checkup rather than waiting for the end of the year.