Tag: Business

  • Why Government Tech Tenders in Singapore Needs Revamp

    I recently spent a considerable amount of time working with a government client to explore an app development project. We went deep into understanding the problem, brainstorming possible solutions, identifying constraints, and scoping out practical approaches. But just as we were starting to make progress, the project got yanked into the familiar black hole of bureaucracy: a rigid, poorly-defined tender was issued, seemingly designed to tick boxes than solve the actual problem.

    This isn’t the first time. But each time it happens, it’s disheartening.

    A Process That Punishes Innovation

    These government procurement processes are built to be transparent and fair, and rightly so. It would work prefectly fine for buying a bunch of laptops, or constructing a basketball court. But when it comes to technology projects, the structure of these tenders is fundamentally broken. The system rewards those who can respond to overly prescriptive, unrealistic tender documents, not those who best understand or can solve the underlying problem.

    Too often, these tenders are written after the agency has already gone out and sought informal advice – sometimes even prototyped or trialed solutions – but instead of incorporating these learnings into an agile, iterative approach, they fall back on old-school waterfall RFPs.

    The Problem with Fixed Requirements

    Technology, unlike construction or hardware supply, is not a domain where you can define everything upfront. The entire software industry has moved away from rigid requirements-gathering for good reason: we don’t always know the end solution, but we do know the problem we’re trying to solve.

    That’s why #Agile practices have become the norm – because they accept uncertainty as a reality and focus on iterative progress toward a shared goal. Yet in the tendering process, government agencies are forced to cast vague assumptions into stone, creating a scope that no vendor can fulfill without overcharging, over-engineering, or outright guessing.

    The result? Vendors quote sky-high prices to protect themselves from the ambiguity – or worse, they underquote, win the bid, and the project collapses mid-flight due to unrealistic expectations, scope creep, or misalignment between the stated requirements and actual user needs.

    Focusing on Process Instead of Problems

    Perhaps the most frustrating aspect is the focus on process over outcomes. So many tenders are framed around implementation timelines, documentation deliverables, and checkbox compliance without clearly articulating the real-world pain points or desired business outcomes.

    We should be seeing tenders that begin with:

    • “Here’s the problem we are trying to solve.”
    • “Here are the constraints and stakeholders.”
    • “We want your expertise in helping us figure out the best solution.”

    Instead, what we get is a 20-page legal document and:

    • “Build X, Y, and Z with ABC tech stack.”
    • “Deliver within six months.”
    • “Provide five user manuals and a training deck.”

    A Call for Change

    Singapore has bold ambitions in tech: Smart Nation, GovTech, digital transformation across the public sector. But these ambitions are being held hostage by legacy procurement practices that actively undermine the principles of good software design and delivery.

    What we need is a new paradigm for technology procurement, one that:

    • Starts with problem statements, not rigid feature lists
    • Embraces agile, iterative delivery models
    • Allows for co-creation with vendors, not just transactional handoffs
    • Encourages value-based evaluation, not just lowest cost or most compliant

    Let’s stop punishing good faith collaboration with broken processes. Let’s start solving real problems together.

    Because if we keep doing this the old way, we’re not just wasting vendors’ time – we’re wasting taxpayers’ money.

  • Ten years of memories

    Ten years of memories

    I resigned from my previous job and joined a new one in 2020 – just right before the whole COVID-19 pandemic started.

    The “previous job” wasn’t just a job. It was a job I had for almost ten years since 2010. Ten years in the Tech industry today is quite unheard of – but I think many people do not stay long enough these days to see through the gravity of decisions they made and clean up the sh*t along the way.

    I was (and still am today) a Director of the business entity in Singapore. Since I am (still) a Director, I didn’t have to vacate my desk like a normal resigning employee would; I had intended to do so over several weeks or months, but COVID struck, and then weeks became months, months became years.

    It’s now September 2021 – almost two years from when I had resigned from my “previous job” and all my stuff are still in the office. Ten years of stuff to be precise. The office is undergoing a refresh now, so I decided it is really time to vacate my luxurious corner seat for those who deserve it, but as I start clearing out my desk I can’t help but feel very emotional…

    Ten years didn’t go by quickly, yet it felt like it was yesterday. I left a job as a Systems Engineer working shifts and camping in telco data centers to start the Singapore business operations for a small US-based boutique web hosting company. It was a bump in both my job responsibilities and salary.

    I have made the office my second home. As I pack my cubicle, every piece brings memories. Regretfully, I did not manage to take a photo of my entire desk area before I started clearing it out.

    Family

    There’s a bronze horse and another wooden pen holder with horse carvings – an item my dad handed down to me when I first “started” the business here. It is to wish me success: “马到成功” in Chinese. It reminds me that my family was behind me in all my endeavors.

    A photo of my wife and eldest son sits on a photo frame. I still recall when my son was around 1.5 years old I had to bring him to the office because the school was closed and I carried him in my arms while I worked at the office. It reminds me that sometimes you can’t separate work and family and it will always be a challenge to manage them both.

    My son sleeping on my lap while I’m at my desk, 11 October 2016

    Change

    I have a few R/C models on display and they’ve been sitting there for as long as I could remember. I had hoped to eventually pick up the hobby again but never did, and they remain as display items ever since. It reminds me that our priorities in life change and that change is the only constant.

    Old toys on display

    Learning

    I moved a bunch of books from my shelf to the common area bookshelf. Some of these books are from my tertiary education days; some on advanced topics that were not part of the regular school curriculum. There were also books bought during the course of work. However, most of these old books are no longer useful as they are outdated. It reminds me that learning never stops.

    I found a git cheat sheet hiding in a corner. I had printed it when I was first learning git, and had intended to use it but never did because Googling was just faster and easier. It reminds me that sometimes learning is not always a straight path.

    See the Git Cheat Sheet?

    I look at the 3D printer in the corner of my cubicle. I had purchased it on impulse as a birthday gift for myself in 2018. In fact, I was so busy during the period that I did not assemble it until a month later and it took me many attempts before I was able to print something decent. I have since used it to print many items for myself and even friends and colleagues to make replacement parts for real things, including car parts. It reminds me that sometimes you can learn new things as long as you try, and you’ll not know the real value of what was learned until later.

    Creality Ender 3 – covered in plastic to keep our the dust

    Health

    I pull out a booklet containing healthcare insurance policies that we have purchased only recently. Over the years I have paid out-of-pocket for several medical procedures, and do not want that to happen to any employees and have pushed to have this in place. It also reminds me that health is still the most important.

    People

    I look at all the stuff around my cubicle – gifts, items from events, business cards, etc. It reminds me of the number of people with whom I have crossed paths.

    I pull out a file containing the CV of every candidate I have interviewed and made an offer to over the years – some still current employees.

    These remind me that at the end of the day, we do not work alone.

    I look around the office and see the cubicles and desks of everyone. A company that was just two persons grown to a size of 7 and is profitable – not some VC-funded thing – reminds me of the constant struggles during the early phases as we tried to turn a profit.

    I am proud of the team, and my departure is probably timely because the situation makes the people. COVID-19 is a trying time, but in trying times lie opportunities.

    Off to my next adventure, and I hope to write a similar entry at the end of it.

  • The end of an era, start of a new

    The end of an era, start of a new

    WhyMobile launched the 3rd major revision of its website earlier this morning. But instead of talking about the new site, this is a little journal to reminisce how far it has come.

    A proof-of-concept site was first built in April 2004. It was nothing more than a static site with an order mailer form that sends an email. The first version launched two months later in June 2004. It was written in PHP 4.

    WhyMobile, therefore, was formally incorporated, and a lot of crazy things happened in the years that followed – including operating an outdoor push-cart in front of Plaza Singapura, to an outlet next to the durian stores in Geylang with “interesting” customers.

    The second version (cover image above) was built circa June 2008. It was written in PHP 5 and deployed as a single CentOS 5 VM. It was nothing fancy – no frameworks, no 3-tier architecture, no design patterns, nothing. Just plain old Apache, PHP, and a local instance of MySQL.

    WhyMobile ran on a Sun Fire X2100 server (2nd from top) as a single Virtual Machine.
    Photo taken Apr 2008.

    The Sun Fire X2100 server where it ran as a VM also had other VMs. The WhyMobile VM was only allocated 512MB of RAM out of the 4GB total on the entire server.

    (Noteworthy mention: The server ran VMware Server 1.0 on CentOS 5 + Software RAID.

    The crummy old Sun server ran and ran and survived a disk failure/upgrade or two, until a time when Cloud services became more efficient and cost-effective. It was eventually wheeled out of the datacenter in August 2014.

    The old Sun server (middle) was still working when it was pulled out.
    Photo taken August 2014.

    So sometime in June 2014, the website moved to DigitalOcean. It ran on a base Ubuntu 14 instance with 1GB of RAM and remained that way for the next 6 years. Minor tweaks and adjustments were made as the business demands changed but never was it upgraded to a newer version of Ubuntu or PHP.

    Sometime between 2010 and 2018, there were also two “mobile” versions. The first version was based on a very early version of iUI, and the second version based also on a very early version of jQuery mobile. The mobile version was meant to be a super lightweight product catalog since the predominant connectivity was only 3G back then.

    “Mobile” version, circa 2011-2016 based on jQuery Mobile.

    But it was all written in PHP 5, and people have given me weird looks.

    “Really? PHP 5? Isn’t PHP slow?”

    No, sir. At its peak, the website was serving around a million page views a month. Remember: it had only 512MB RAM and was sharing it with a MySQL server. It never flinched.

    CPU barely inched past 4% while serving on average of 400k pageviews/mth.
    CPU chart from DigitalOcean, 17th November 2020.

    Remember – no bloatware, no frameworks, no nothing. It is a good reference for KISS.

    Still, I am amused that it ran for 12 years (2008-2020). Time flies.

    But by around 2017 I knew the website wouldn’t last much longer. Not because it wouldn’t continue to run (there were fair concerns on security, the evolving PDPA laws, and all that) but because many competitors had “upgraded” their websites, albeit sloppily, and I have been receiving feedback that the site looks dated.

    I had embarked on several attempts to revamp the website between 2017-2019 but failed. I spent quite a fair bit of time evaluating various PHP frameworks (CI3, Laravel). I was mucking around and having a war with the ORM, and eventually arriving back at square one.

    Building the site has always been a one-man-show. A small business like WhyMobile will never be able to afford the skyrocketing salaries of Software Developers in Singapore. I was essentially paying myself over the years, and I “owe” the business an overdue revamp.

    With kids and a hectic work schedule, the revamp never happened… until 2020.

    2020 came. COVID-19 came. I would be kidding if I said the business wasn’t affected.

    During the Circuit Breaker, it wasn’t too bad. Then the trickle-down effect started to become apparent in Q3 2020.

    Barely any foot traffic in Far East Plaza.
    Photo taken 12th October 2020.

    I knew we had to do something to embrace the new work-from-home, shop-from-home, stay-at-home, die-at-home culture. I bit the bullet, picked a framework, committed to it, and then spent almost every single weekend of my spare time working on the code. Son’s at a class? I’m coding. Son’s taking a nap? I’m coding. Son taking a poop? Coding.

    The launch of version 3 was intended to be past midnight on Monday 16th November 2020, but AWS was giving me grief about getting SES going in production mode.

    It was resolved the next day, and here we are, Tuesday 17th November 2020 at 01:00 hrs.

    Home page of WhyMobile 3.0, launched 17th November 2020.

    And for the record…

    # cat /etc/issue.net 
    Ubuntu 14.04.5 LTS
    
    # php -v
    PHP 5.5.9-1ubuntu4.26 (cli) (built: Sep 17 2018 13:46:30) 
    Copyright (c) 1997-2014 The PHP Group
    Zend Engine v2.5.0, Copyright (c) 1998-2014 Zend Technologies
        with Zend OPcache v7.0.3, Copyright (c) 1999-2014, by Zend Technologies
    
    # mysql -V
    mysql  Ver 14.14 Distrib 5.5.62, for debian-linux-gnu (x86_64) using readline 6.3
    
    # uptime
     07:09:19 up 973 days,  8:02,  1 user,  load average: 0.00, 0.01, 0.05
    
    # shutdown -h now
  • Building another Joomla or WordPress site?

    Looking to build a website for your business? You have been warned.

    Somebody I know had her company’s site done by one of those companies selling Joomla or WordPress ‘packages’. When she saw the end result, she face-palmed. When I saw it, my reaction was pretty much the same. The site was riddled with horrid mix of serif and sans-serif font, bad alignment, varying font sizes, etc.

    For about $2,000-$3,000 dollars you can have these people build you a Joomla or WordPress site, but you really pay only about $800 for it because the government is helping you pay the other 60%, or about $1,200 via the Productivity and Innovation Credit (PIC).

    No, this is not a blog entry to advertise the PIC. There’s rampant abuse of the PIC scheme, and it has actually created a lot of crappy work (and IMHO, crappy jobs). Not to mention photocopiers selling for $15,000 with “cashback”.

    A lot of these web “design” companies are selling you nothing but pre-built templates reused over and over again. No surprise all their client’s websites look pretty much the same. With some changes to color and images, bingo! They’ve transformed the template into your website.

    But wait… it still looks like crap. Why?

    A lot of ‘designers’ are really just ‘developers’. Designers come from art school. Developers come from IT school. A lot of these designer-developers don’t even understand basic typography, let alone color theory, or help you with illustration or photography. And if they aren’t good in English, expect your site to be riddled with grammatical and spelling errors.

    When you engage a proper web design firm you actually are paying for a lot of things. A good company will actually advise you on the kind of content or site structure you should have, and also be able to provide additional services like copywriting, photography, illustration, etc. A proper design firm needs to hire both designers and developers, and they’ll also need somebody to manage these two very different groups of people and ensure they don’t kill each other.

    If you are really looking for a cheap solution you can actually buy beautiful templates off sites like Template Monster for a fraction of the money, then engage a freelancer to help you add content and deploy it to a hosting provider.

    You’ll want to choose a template with the similar color theme and typography as your corporate brand. You don’t want to mess with colors or fonts — that’s a job for designers.

    Nowadays the first impression people have of your company is through your website. Don’t underestimate the impact a website might have on your business. Messing a website up is as good as messing with the signboard and interior design of a retail shop.

    One final word of advise — make sure you get a company that can support you through upgrades and security patches of the CMS you use (WordPress, Joomla, Drupal, etc.) preferably one that provides hosting service as part of the package. Most people with Joomla sites built a few years back would have had their site ‘hacked’ by now due to security issues (I’ve dealt with a lot of these cases). If you must, choose WordPress. It’s better than Joomla in terms of security.

    It’s really 一分钱一分货.