Ernest Ng Aik Hau, Software Developer in Singapore, Singapore
Ernest Ng Aik Hau

Software Developer in Singapore, Singapore

Member since July 19, 2019
Ernest is a software developer specializing in back-end and infrastructure architecture. Captivated by the process of crafting new things, he quickly picked up the basics of software and had his first production application at the age of 12. Ernest has worked on a variety of projects including deployment SaaS, monitoring of construction worker with IoT devices, and architecting the infrastructure for healthcare for the Singapore government.
Ernest is now available for hire

Portfolio

Experience

Location

Singapore, Singapore

Availability

Part-time

Preferred Environment

JetBrains, Windows 10

The most amazing...

...project I've created was a SaaS to help users deploy any stack across multiple clouds including Digital Ocean, GCP, and AWS.

Employment

  • Back-end Engineering

    2018 - 2019
    ST Engineering Innosparks
    • Led team to implement RESTful API server in .NET Core in C#.
    • Provisioned manageable infrastructure with on Azure with Azure ActiveDirectory.
    • Deployed centralized monitoring environment (Application Insights) which gathers system and run-time metrics from Azure resource nodes.
    • Built fully automated CI/CD pipelines on AzureDevops with Azure and Docker.
    • Automated load tests in a staging environment for performance testing.
    • Devised a computer vision algorithm to extract a patient’s particulars from the National Registration Identity Card.
    • Rewrote firmware for IoT outdoor smart cooler that allows for control of cooler via Bluetooth.
    • Wrote a mobile application to control outdoor coolers via Bluetooth.
    • Improved the firmware by optimizing the transport layer and packet compression.
    • Added a caching mechanism to reduce communication time from seven seconds to one second.
    • Built the frontend prototype in React.
    Technologies: Amazon Web Services (AWS), Azure DevOps, Vue.js, C#, .NET Core, AWS, Azure, Docker
  • Architect Consultant

    2018 - 2018
    ChatInfinite
    • Incorporated domain-driven design as a design principle for back-end architecture.
    • Spearheaded porting Node.js stack from JavaScript to Typescript to implement domain-driven design better.
    • Reduced request latency by an average of 0.2s by moving from MongoDB to PostgreSQL.
    • Spearheaded technical meetings with non-technical clients to using ubiquitous language.
    • Mentored development team in Agile SDLC best practices.
    • Trained hires SOLID principles and TDD to better facilitate domain-driven development.
    • Fully automated builds and deployments using GitLab CI.
    • Streamlined workflow by using GitLab Kanban Board, reducing communication overhead.
    Technologies: Express.js, Vue.js, RabbitMQ, WebSockets, Docker, PostgreSQL, MongoDB, TypeORM, Node.js, TypeScript
  • Technical Lead

    2016 - 2017
    DAB Technology
    • Led the software team to move the static site to an eCommerce web app.
    • Shifted LAMP stack to Ruby on Rails API running on PostgreSQL.
    • Configured Vue.js as front-end framework with build pipelines (Webpack, SASS, PostCSS, Babel).
    • Devised image quantization and auto image-resize service when adding products to catalog, reducing average load time by 60 %.
    • Added CDN over their website, improving load time across other countries.
    Technologies: Docker, Vue.js, PostgreSQL, Ruby on Rails (RoR), Ruby

Experience

  • Project OneHealth (Development)

    OneHealth is a digital platform for post-acute care for Singapore’s Ministry of Health, in an attempt to deal with the issue of Singapore’s aging population. I led the development team to implement an API server and deployed it at Azure. I further provisioned a CI/CD pipeline with branching policy and tested strategies to formalize and automate the deployment workflow for testers, designers and engineers, boosting the overall efficiency of the team. To facilitate error detection and analytics, I configured centralized logging and monitoring service within Azure.

  • Airbitat Companion (Development)

    Airbitat is an outdoor cooler that aims to provide an environment-friendly deep cooling solution for the notoriously hot weather of tropical Singapore. I worked with engineers and technicians to develop firmware and embedded systems for the cooler in order to allow control from the website via WiFi module and from the mobile app via Bluetooth. I only joined the project midway, but my contributions were not insignificant. I improved the original firmware by optimizing the transport layer and refactoring to take a more object-oriented approach, allowing for better maintenance. I further revamped the Bluetooth connectivity by changing between the mobile app and the firmware through the introduction of a new routing protocol and reduced the communication time between the mobile app and the firmware from 7 seconds to 2 seconds by implementing a cache layer.

  • DAB Technology Platform (Development)

    DAB Technology Platform is an e-commerce platform for factory and industrial solutions, such as vacuum and lifting devices. I formed and led a team to redesign their static site, and provided an eCommerce platform for users to browse and buy items via the website. We carefully worked with an iterative and incremental approach with DAB Technology to improve user experience. I also implemented many optimizations from the original WordPress site, such as implementing a CDN layer, conducting image quantization and serving images based on the user agent, thereby improving the load time by 60% (3 seconds to 1.2 seconds).

  • HydraX (Development)

    When I was working for HydraX, I was the sole developer in the fintech firm. To help the company kick-start its business, I quickly developed its prototype website’s API by using Ruby on Rails, together with an SPA front-end in Vue.js. The prototype focuses on allowing users to share and discuss ideas on the current trend by doodling on graphs and sharing them as a blog post.

  • CyanPrint (Development)
    https://cyanprint.dev

    CyanPrint’s main product is a CLI listed in NPM to scaffold projects of any kind quickly. It is a robust templating engine with the ability to generate different types of files and projects based on user input.

    CyanPrint is not just a CLI; it is a full ecosystem that allows users to publish and share their templates and scaffolds on CyanPrint.dev with simple yet powerful commands. Templates can be categorized into groups, enabling users to curate their own set of templates for their use case.

    Ruby on Rails is CyanPrint’s application server; it uses an ELK stack for monitoring. The front end uses Vue.js with TypeScript and is deployed on Netlify. This project is fully open-sourced on GitLab!

  • Project Sophie (Development)

    Project Sophie is a browser-based visual novel and idle game that aims to ease the eventual boredom of an idle game with the immersive story and stunning artwork of a visual novel.

    This story follows Princess Sophie as she tries to save her parents from a coup of her kingdom. The tale uses meta-mechanics, such as disconnection from the Internet and the changing of system time to time travel, to explore and discuss themes of existence and reality.

    The game’s engine is currently being revamped; once the roadmap is done and development has started, it will be fully open-sourced on GitLab.

  • Anime Capital (Development)

    I am a fan of Japanese anime culture. However, procuring or buying disks or services to view the seasonal series that are currently airing, much less subbed series, is difficult. As a little side project for my fellow anime friends and myself, I developed Anime Capital, which is a website that streams the newest anime scraped from various sites.

    Anime Capital uses a Ruby-based program to scrape the web for English-subbed anime and encode the subtitle into an MP4 file with multiple bitrates. After this, it splits the file into three-second binaries containing a .mpd manifest that is pushed to a .NET core server whilst the binaries are pushed to a bucket. The front-end website, running on Vue.js, would then query the API server for the links to these binaries, automatically allowing streaming and continuous updating of anime. This project is fully open-sourced at GitLab.

  • Project Nephia (Development)
    https://bigbulb.studio/nephia

    Project Nephia is a Java modification to turn the popular sandbox game Minecraft into an MMORPG. It provides an interface both for programmers and non-programmers to create skill trees, skill effects, GUI, HUD, items and other MMORPG functions for the Minecraft game, with a client-agnostic design.

  • KirinneeCore (Other amazing things)
    https://gitlab.com/node-packages-kirin/core

    This is a Node TypeScript library that provides typing and methods inspired by Ruby’s Enumerable and C#’s LINQ. This library aims to provide a robust collection of manipulation methods that can be chained by extending Array and Map prototypes. It leverages an IDE to provide correct suggestions and explanations, allowing for quick development, which also reduces common patterns into extensible functions, significantly reducing file size.

  • Tune (Other amazing things)
    https://gitlab.com/node-packages-kirin/tune

    This is a Node TypeScript sound library with easy and simple sound management. It uses Howler.js as a part of its core code. It adds multiple features such as speed easing in sound rate manipulation.

  • Animate (Other amazing things)
    https://gitlab.com/node-packages-kirin/animate

    This is a cross-browser animation interface that includes filter animations with typing that can be leveraged by using IDEs. It enables simple animation to be used in a fluent API format, allowing for cleaner code and faster development time. It uses GSAP as a part of its core code.

  • rImage (Other amazing things)
    https://gitlab.com/node-packages-kirin/rimage

    This is a browser-based solution for responsive images. By providing a configuration file, which can be used together with ImageDeployer, it can automatically load a different-sized image based on screen size and pixel density without the code being changed. It is written to improve the load time for image-heavy pages on smaller devices

  • MinImage (Other amazing things)
    https://gitlab.com/nuget-packages/minimage

    This is a .NET Standard wrapper library around popular image compression methods. It is used in servers to compress images before storing them. It provides a fluent API and can leverage IDE to give information and usage.

  • BucketClient (.NET Nuget) (Other amazing things)
    https://gitlab.com/nuget-packages/bucket-client

    This is inspired by Rails’ Active Storage and provides a uniform interface to Blob SaaS in the .NET Core ecosystem. It supports Azure Blob Storage, Amazon S3 Bucket, Digital Ocean Spaces, and GCP Cloud Storage with Blob CRUD, Bucket CRUD, CORS, and permission functionality.

  • ImageDeployer (Development)
    https://gitlab.com/nuget-packages/image-deployer

    This is a DevOps tool that deploys SPA or websites’ static assets to cloud Blob storage services. It allows resizing based on rImage’s resizing configuration, and optional image compression based on simple settings. It can be used to significantly reduce the payload of a static website as a part of an automated deployment pipeline.

  • Bucket Client (Ruby Gem) (Other amazing things)
    https://gitlab.com/ruby-gem/bucket_client

    This is an alternative to the Rails’ ActiveStorage engine within both Bucket and Blob CRUD. On top of that, it allows for access policies and CORS policy with support for Azure Blob Storage, Amazon S3 Bucket, Digital Ocean Spaces, and GCP Cloud Storage.

  • Telegram Conversation Anaylzer (Development)
    https://telegram.kirinnee.dev

    Provides a beautiful dashboard for analysing past Telegram conversations

Skills

  • Languages

    C#, TypeScript, Ruby, Go, JavaScript, Sass, Java, Python, C++, C
  • Frameworks

    .NET Core, Swagger, Express.js, Ruby on Rails (RoR), YARN, Flutter
  • Libraries/APIs

    Node.js, Vue.js, Ruby on Rails API, DigitalOcean API, jQuery, React, Chart.js
  • Tools

    GitLab, GitLab CI/CD, Webpack 4, Gulp.js, Gorilla, Workbox, JetBrains, RabbitMQ, AWS SDK, Babel
  • Paradigms

    Testing, Azure DevOps, Agile, Extreme Programming
  • Platforms

    Docker, Android, Amazon Web Services (AWS), Google Cloud Platform (GCP), Azure, Firebase, Heroku, Bluetooth LE, Arduino, Kubernetes
  • Other

    Domain-driven Design (DDD), Windows 10, AWS, TypeORM, WebSockets, PWA
  • Storage

    PostgreSQL, MongoDB, MySQL, Redis, AWS S3, Azure Blobs

Education

  • Bachelor's degree in Electrical and Electronic Engineering
    2019 - 2021
    Nation Technological University - Singapore

Certifications

  • Agile Practitioner
    JANUARY 2019 - PRESENT
    ST Engineering

To view more profiles

Join Toptal
Share it with others