The Invisible Work
Introduction
I have never denied that a major purpose of this blog was not only to educate the next generation, but also to jot down notes for a future, more forgetful version of myself - all while trying to generate a bit of passive income.
However, the reality is that the income is negligible compared to the sheer effort required.
- A single day of locum wages can easily match two years of AdSense revenue, yet each blog post takes hours of planning, drafting, and finalization.
- Because of this, I have established my own set of rules: I now prefer to update or refresh existing posts rather than constantly creating new ones.
A few days ago, a colleague asked me, "If it doesn't generate money, what keeps you writing new articles?"
- Well, not all efforts in life yield immediate financial results.
- One way or another, you just keep trying and hoping for the best.
- In fact, we tend to get addicted to the things we can control, like how quickly we can finish and publish a blog post.
Shift in Perspective: Spoon-Feeding vs. Active Learning
Compared to my most productive years - when I was churning out notes every few days - that visible output has slowed down to just a few posts a month.
- The reason is twofold: I have already covered much of what I am an expert in, and my mindset is shifting toward a higher level of philosophical thinking.
For example, as a member of my hospital's medication safety committee, I have started questioning our methods.
- It would be incredibly easy to just copy and paste the precautions and alerts I have gathered from years of experience into an AI chatbot, rather than implanting them on newcomers.
- Does passive, spoon-fed education actually work better than active, problem-solving exercises for junior pharmacists, or vice versa?
A preliminary trend I have noticed is that juniors often do not see the point when we ask them to list the different formulations and strengths of high-risk medications available in the hospital - such as gliclazide, tacrolimus, olanzapine, semaglutide, and carbamazepine.
- In fact, many of them do not even fully read the Look-Alike Sound-Alike (LASO) medication list compiled by the hospital pharmacy department.
- Otherwise, certain medication errors can be avoided.
- What we are witnessing now is history repeating itself every few years, just with different individuals.
Under the Hood: Vibe Coding
Nonetheless, I must admit I have been spending more time polishing my e-books over the past few months.
Another huge chunk of my time is dedicated to "vibe coding", to the extent that I am starting to feel more like a tech-oriented professional than a pure clinical pharmacist.
- Vibe coding has empowered me to build web applications that I previously only envisioned but could never actually bring to life.
- For example, I have written a medication profile generator (RxProfile) and a paediatric dosing calculator (RxPed).
- While these retro games are still available online, most modern hosting sites are cluttered and spammed with intrusive advertisements.
- While my versions might not perfectly match the exact mechanics and intricate details of the originals, they are closely inspired clones housed together in RxGame.
Another major focus has been fixing and maintaining the PWA tools I have created, specifically RxLookup.
- Lately, I have spent countless hours consulting AI chatbots to figure out how to tighten its security architecture. To achieve this, I have implemented a stricter Content Security Policy (CSP), Subresource Integrity (SRI), comprehensive security headers, and strict permission policies, alongside updating dependencies and migrating to the latest Next.js version.
- Most recently, I completed a migration from Firebase App Hosting to Cloudflare Pages, deciding to fully convert the Next.js app to a static client-side output (output: 'export'). This migration and architectural shift were not accidental; it was a deliberate choice to cut my personal hosting expenses while continuing to offer free solutions to the public.
- The sophisticated delta syncing mechanism in Firestore can become costly when scaling to a large public user base. Because RxLookup is heavily read-oriented, I decide to transition entirely to serving a static drugs.json file instead. Meanwhile, the Firestore delta sync utilized by RxBudget is strictly capped on the Firebase Spark Plan, ensuring it simply pauses operations rather than incurring charges if the free quota is exceeded.
From my perspective, creating a sustainable, secure, and offline-compatible drug database app is a long-term investment, assuming the app gains traction among practicing pharmacists in Malaysia.
- I refuse to put any user who trusts me at risk.
- To my readers who have supported me all along: Please clear your browsing history and site data, revisit the PWA links, and re-install them to your home screen to ensure you have these full security protections in place.
The Grunt Work Behind the Data
A friend of mine once joked that I must really enjoy building databases since I spend so much time editing data in Excel.
- Truthfully, it is not something I enjoy at all; it is a forceful necessity that demands hours of meticulous, draining work just to keep the platform viable.
- Each database update feels like a tiring, monotonous day wasted.
What many do not realize is that I make a strict monthly commitment to manually input newly registered drugs and medication brands in Malaysia - a tedious but vital task just to keep the database accurate and relevant.
The Migration to blog.myrxnote.com
Another recent visible change is that I have made the tough decision to migrate all current blog posts and pages from the previous www. subdomain to blog.myrxnote.com.
Despite owning the custom domain myrxnote.com for over a year, the full address migration was painfully stalled.
- Thus far, Google Search Console has only indexed the homepage on the www. subdomain.
- However, I am aiming to achieve the HTTP Strict Transport Security (HSTS) preloading requirement for the naked root domain.
- In almost all circumstances, the www. and naked root domain are considered to share the same identity.
- Hence, this migration is intended to create a cleaner and more direct architectural setup, preventing the endless redirect loops and canonical conflicts that are currently happening in Google Search Console.
- In fact, I am not even entirely sure if this strategy will work, but it seems to be the best decision for the moment.
In tandem with this, I embarked on the journey of redesigning a webpage to act as the central hub for the blog and all the experimental PWA projects I have made available to the public.
- If you find yourself missing the old-fashioned, simple Blogger layout, you can bookmark the new dedicated URL at https://blog.myrxnote.com.
Summary
There may not be many new blog posts being released right now, but behind the scenes, the work definitely continues.
Inevitably, I will need to pivot my primary focus back to my day-to-day profession as a clinical pharmacist.
- However, exploring tech and designing PWAs has been an incredibly intriguing journey.
- It feels a lot like solving a jigsaw puzzle - an ongoing, rewarding process of figuring things out piece by piece.
After all, it is a journey where no one knows the final destination.
- All that matters is not listening to the whistling of the wind, but doing what you believe in.
- There might be people who question your purpose or efforts, but you are the only one who truly knows.
Comments
Post a Comment