It's been so long since I wrote a new piece. That's due to the hectic lifestyle I lived since I got married and my wonderful daughter is born. Juggling between fulfilling my work duties, being a loving husband and a doting father, it's been a struggle. Even my personal downtime is also compromised.
But recently, with the help of AI, I'm starting to reclaim back my time. It started with Google's Gemini Chat. To be accurate, Gemini wasn't the first LLM I used, but it's the first LLM that I use extensively for productivity. ChatGPT was the first, but it was more like exploratory usage.
Initially, Gemini was merely a tool to learn something really fast. Instead of scouring the internet with search engines to look for answers, Gemini could give me the answer within 1 minute. It used to be that I had to piece the information puzzle together one by one, page by page, site by site. What took hours was done in minutes.
Eventually, I started feeding it some PHP codes. It started to give me good solutions in tiny code snippets. It was readable and understandable. After all, when the code is 10 lines, it's easy to vet through line by line within 5 minutes. But then, that's the part I have a realization. While it took me 5 minutes to fully digest the code, Gemini took less than 1 minute to generate not just the code, but also the conversation explaining the code. This was the start of me handing over my over-20 years of engineering to AI.
Next came larger codebase. I started feeding entire files to Gemini to analyse and generate code. Since Gemini limited uploading 10 files at a time, I couldn't simply drag-and-drop. Some files were way too large. I could extract code snippets manually, but it turns out that the time I take extracting code snippets takes far longer than uploading 20 files, 10 files each time.
I also happen to have a deprecated Tabnine subscription, which was simply a VSCode extension and it was just plain old chat wrapper with some Claude models. Tabnine had restrictions, so I often hit rate-limits. But still, I made use of it as much as possible by combining Gemini and Tabnine's models intelligence by facilitating both of them to argue the best way to approach problems. Then came the day I anticipated. Tabnine cancelled my deprecated subscription and refunding any remaining unused amount.
At this point, I also started a new project and, this time, Gemini built the entire app without me writing a line of code. I was still using Gemini Chat up to this point. So it was a lot of drag-and-drop and copy-pasting between Visual Studio Code and Gemini Chat. Other administrative task include creating new files and folders, and performing git actions. Even git messages were written by Gemini at this point. But not a single line of code was written by me. It worked!
It is also around at this time that OpenClaw started to gain in popularity. After reading the horrors of security vulnerabilities, I decided to approach OpenClaw with extreme caution. Till today, I never expose OpenClaw to any chat app. I've also heard about the token burn using OpenClaw, so I used my company's Gemini subscription to experiment with OpenClaw. At that time, Gemini CLI had a generous limit and it could be hooked up with OpenClaw. This is the moment I realise the capabilities of Agentic AI. This is the moment everything changed.
Agentic AI is the future!
At least for the foreseeable future. So I poured by heart and soul towards this new shiny thing: Agentic AI. I was deeply amazed by Gemini's agentic capabilities riding on OpenClaw. This time round, instead of my usual drag-and-drop to Gemini, I simply pointed OpenClaw to my codebase and described my problem. Almost instantly, my problem was solved. It even ran tests to confirm that it works.
But of course, such generosity from Google couldn't last. Google tighten the rate limits to the extent that OpenClaw was unusable. I was almost always hitting rate limits. But I wasn't about to give up so soon. I knew I must eventually pay for my usage, but I wasn't sure how expensive it's going to be. Since I'm already an AWS customer and AWS bedrock host many models, I decided to try out Nova and Claude.
Both Nova and Claude is good. It solved every problem I threw at it, though it needed some guidance with context from time to time. I guess the problems I needed solving isn't that difficult, so both models worked fine. But strangely, when the first bill came, Nova cost more than Claude despite that Nova's token costs was lower than Claude. It turns out that OpenClaw didn't use cached prompts, so every prompt was charged at the input non-cached rates.
So I switched to using Claude exclusively. I used mostly Haiku 3.5, since most of my prompts ain't some complex math. Then the 2nd bill came. I was burning ~USD100 a day. Ouch!
That's it. I had to stop using hosted models. They are fast and good, but it burned a whole in my wallet. This time round, I focused on running local models. Since I already have a RTX 4060, why not make good use of it. Turns out, easier said than done.
Models that can fit inside the limited 8GB vRAM simply ain't smart enough. It can hold a basic conversation, but that's it. Getting it to power OpenClaw is nearly impossible. Offloading some of the weights to RAM just slows the model and makes the whole system unstable. Like the whole computer gets unstable. The best I could use my GPU for is to run Ornith1.5 9B to generate git messages through Zoo Code.
So my mission is the find a way to run larger models on dedicated hardware. The largest vRAM non-Apple, consumer-grade device I could get my hands on at that time was Ryzen AI Max+ 395, costing me more than SGD4000. But hey, if I was burning USD100 a day running Claude Haiku, I would easily break even within 2 months, running to smartest open-weight model I could fit.
And there I got it. The day it arrived, I was so eager to try it. I allocated the maximum amount of RAM I could to GPU and get my hands dirty with the first LLM. Since it was my first attempt, I just wanted it working as soon as possible. Ollama was my immediate choice. It was simple and effective. Most importantly, it simply worked.
But as smooth as it was with deployment, the price of this simplicity was the prefill and inference speed. Ollama comes with a tax on every prompt. After spending this money, I wasn't about to leave any performance on the table. So I figured out how to run Llama.cpp raw. No more middleman.
Turns out to be harder, but once I get the execution commands right, I just needed a script to execute the same way every time.
These days, I'm running Qwen3.8-flash-next. It's a bit on the slow side, but it works as good as Claude Sonnet 5. I'm contemplating whether to switch to Ornith1.5 35B A3B. It is suppose to be slightly worse than Qwen3.8-flash-next, but runs at far better speeds. But for now, as long as it works and gets things right, maybe I'll stick to Qwen3.8-flash-next for the time being.
I'm also using Cursor for my development. I've got to say, the auto+composer token limit sure is generous. Of my months of subscription since May, I only ever consumed 100% of my monthly allocation once. I could use my Qwen3.8-flash-next with Cursor, but I don't see the need to. Why use my local model when I still have plenty of tokens left with Cursor?
My electricity bill has certainly gone up. I'm using at least an extra 100kWh every month, with amounts to more than SGD34 every month. But this amount is far easier to swallow than the USD100/day I was spending before. I would happily pay my utilities over AWS bedrock. The other effects of running my local model is that the GPU is heating up my room, so I am using a bit more air-conditioning than I usually would. Still, happy to pay this bill over AWS bedrock anytime.
I don't know when I can write my next post, but I guess this post is a sign that I have managed to reclaim back a little bit of my time so far. I hope I can continue to reclaim further more. I won't let AI write my posts. After all, you're here because you want to hear my voice, not some version of AI I control. But the images will be AI generated.
So you are going to tie your knot with your soulmate. Before you go running to get your wedding planner, would you like to consider planning on your own like I did?
There are many considerations for my wedding that may not apply to you.
Since I do away with a wedding planner, I totally did not spend ~S$2300 just to engage a planner. The good thing about a wedding planner is that they come with a wealth of experience. Knowing potential pitfalls and obstacles can truly be a event-saver. They will take the load of stress from the couple, so that the couple can just focus on getting happily married, with emphasis on happy. The one single thing that annoyed me most was that a wedding planner advising my invitees based on the projected gift values they bring, which goes against my deep-seated belief that my wedding is not a fund-raising event.
The first item in my list of preparation was to choose a restuarant that gave the most value-for-money. I'm not looking for a cheap place to hold my wedding, but instead, I'm interested in making sure my money is well spent. So I chose EatPlayLove cafe. This place provides a full wedding package at a very reasonable price. The package includes a wedding cake, decorations, and backdrop.
Looking for clothes was not so straight forward. We wanted to look our best. Shopping around sure took much effort. In the end, my wife's talent came to great use. She bought very simple clothes and little accessories to sew them on. On top of the savings, we were able to customise the decorations on our clothes. When we did a comparison of equivalent clothes along Bugis, we managed a savings of 30% average. The biggest savings was from Minions Theme clothes. A piece of Minion theme shirt costs about ~S$80, but buying off a simple shirt and Minion artwork costs a mere ~S$20.
What is a wedding without photos to keep as memory. In this category, we made great savings too. There were many photography packages, but most of them start from ~S$1000. But I'm a web developer, and I can design my own photo album. My good friend, Louis, offered to be my photographer for free. We spent an entire Saturday going to Henderson Wave, Resort World Sentosa, and Palawan Beach taking lots of photos with our own basic camera. Other than the mistake of a dirty lens and having inadequate lighting at night, the most of the photos turn out great! Now, even though Louis offered to do this work completely free, I gave a small gift of appreciation and every meal on the day a treat as a thank you. Never take unfair advantage of friendships. After having it specially designed by me into a unique photo album, I got it printed for S$40. I also specially printed specific photos for distribution for ~S$10. I merely spent a bit more than S$100 on this section.
As tradition, every wedding must have a ring. My wife and I agree together that a ring is more symbolic than the weight in resale value. Diamond and Gold have nothing to do with love. Diamond dug out of Earth is dirty, and, in come cases, bloody. Diamond can be made in a lab. So after much consideration, we settle for 2 Swarovski crystal on a silver plated ring, at an affordable of S$168.
Giving my guest for coming to my wedding as a memory is something my wife and I wanted. We wanted something memorable, usable, affordable, and Minion theme. After looking around suppliers and types of items, we find that a luggage tag has the right balance among all the criterias we set out. A gift costs S$225.70 for 70 pieces.
As formalities, I had to ensure my in-laws are in Singapore during the celebrations. The 2-way flight tickets for 2 person was S$505.70, from Jetstar. For accommodation, practicality, affordability, and prestige has to have some balance. My wife and I are also staying there, thus, budget is a little tighter. After a good look around, we find Aliwal Park Hotel to have the right balance. 150 metres from wedding venue, reasonably comfortable stay, convenient travel to bugis for shopping, and an affordable pricing of S$664 for 5 nights.
Being a great host to my in-laws was important. My wife and I brought them to River Safari. The entry was completely free as it was part of my working company benefits. We also visited Madame Tussad's Musuem and Trick-Eye museum. The tickets were purchased online and as a bundle, total costing us S$128.
Bringing 2 families together was an important part of our marriage. I organised a 6 pax international buffet for us. As I hold SPH Rewards Card, I was given a 1-for-1 treat at The Seasonal Taste @ The Westin. It was such a worth it deal, costing only S$310 instead of S$620. The food is simply delicious, although a bit too salty for myself.
We got a friend to be my wife's make up artist. Since we needed the artist for both the Solemnising and the Wedding, it was charged at $180 each. It included an additional accessory of S$10 which my wife gets to own it. I would consider the rate to be at the lower end of the standard. So it's actually very affordable when I compared it to others that went as high as $300 per event and accessories are only for rental.
Of course, the highlight is the wedding itself at EatPlayLove. Every one present for my event was my photographer. I specially set up our website @ thazin.shurn.me for uploading photos. In preparation for big amounts of upload, I signed up Filestack's Starter Plan, which costs about ~S$70 after currency conversion.
A 2-way flight ticket for me and my wife to Myanmar costs S$390. I had the privilege of staying with my in-laws, thus I saved on that, for 4 nights. I got to thank my in-laws for preparing our bed and mosquito nets.
I clearly remember visiting Shwedagon Pagoda. Being a foreigner, I had to pay a small token fee to enter the premise.
I also managed to visit Thabarwa Centre. Seeing the poor and the needy moved my heart to give a small donation to the place.
Overall, I spent S$1000 + my flight tickets over at Myanmar. Most of the items are far more affordable than in Singapore. 4G internet connection is reasonably priced.
Logistics was certainly a big part of our journey going from place to place. Most of my trips were taken care through Grab. The overall costs of logistics was about ~S$100.
Food for those involved in preparing for our big day was how we express appreciation. This costs about ~S$400.
A token of appreciation goes to our solemniser, Dr Eileen Aw, Justice of the Peace. For her effort to do us such a service, we gave her S$68 as gift of appreciation.
Thank you for your presences, gifts, and help, everyone. You have made our important day most memorable. Your help has made everything possible.
Our wedding has been made most meaningful. Our family and friends effort shows that relationship is the most important part of life. No amount of wealth could have bought us something so priceless and precious.
Those who could not have made it, your well wishes are no less equal.
I expect you are waiting for this. Some of the figures are deliberately inaccurate as a range to give respects to the recepient.
There we go. Favicon is now online. It's my logo. Maybe I might change it a bit, but for now, that's my logo.
Adsense just rejected my site again. I don't understand. Why are they so picky? Fine! If they don't like my site, I don't need them to like my site. I'll just like them myself!
Ever since I booted up my Ubuntu 16.04 on AWS EC2 T2.nano to host this site, I often have a problem with kswapd0. It's a very strange occurance. I've been investigating this issue for many weeks. Each time, I come back to not much information to resolve this permanently.
Whenever I check my memory with this command
top
I see kswapd0 utilising almost fully all of the CPU cycle. As you know, t2.nano is given limited amount of CPU credits to use. This CPU cycle spike that doesn't resolve will consume all of it within a few minutes.
If you're experiencing this issue too, the recommended solution is of course to migrate to a better instance. But if you're like me, already bought down a reserve instance and refuse to be defeated by some strange programming logic in Linux, here's some of the things you can do.
*/5 * * * * echo 3 > /proc/sys/vm/drop_caches
Use this piece of code in your cronjobs. This will force the cache to clear every 5 minutes. This is the number 1 thing that you need to do. It's not 100% solution but it will almost immediate bring down the occurance of this CPU spike to once a month or so.
When the CPU cycle spikes, do the next step.
top
This command won't help to identify which application is using memory. Use this instead:
htop
You might need to install it:
apt-get install htop
In the interface, you need to sort out the application using the most memory. In my case, it was mysql that was consuming a lot of memory. What I needed to do was just restart mysql and the CPU cycle goes back to normal. In some cases, you might need to terminate the application. Do so with caution.
This isn't exactly a solution. Since I don't know the exact cause of this problem, perhaps let's keep Ubuntu and the relevant applications constantly updated with the latest bug fixes. Who knows the makers of the application spotted this problem and issued a fix.
apt-get update
apt-get dist-upgrade
apt-get autoremove
Usually I would do a reboot after this installation, just to be extra sure that the newest codes are running. Given that we have no clue why this problem occurs, being on the safe side pays.
You have been clearing the cache. You tried to identify the offending application and resolve it. kswapd0 is still eating away all your precious CPU cycle.
You are not alone. This is your last resort. Reboot the computer with:
reboot
Then you make sure all your services are back up and running.
If there is anybody who has a clue what causes this strange CPU spike, please do share.
I know this is nothing impressive. My list of blog posts now allow navigation to older list of posts.
Pagination, people!
Yup nothing to fascinate about. But still, I'm recording my progress as I work on my blog to improve it daily.
You guys just wait till I can figure out what impressive stuff to do with Machine Learning. Mean time, I'm aiming to make sure my site can be officially announced. By announced, I mean it will have some basic features of what every blog should have, what most website has, and it's search engine friendly.
Greetings Earthlings , Shurn the Awesomer is here to give you an awesome time.
This little site is a record of my life, opinions, and views. I'm mainly writing about Technology & Gadgets, Busting Creationist Myths, and other philosophical stuff.
This site is done using CakePHP.
With this uptime, how much more can I be proud of to showcase to the world? This uptime monitoring is brought to you by StatusCake since 13th May 2017.
I will always check for copyright usage before using any materials on my site. Whenever due, credit shall be given.
However, if you notice that I may have infringed on any copyright material. Please do not hesitate to contact me. All works of every artist deserves to be honoured and respected.