Ernest Ng Aik Hau, Developer in Singapore, Singapore
Ernest is available for hire
Hire Ernest

Ernest Ng Aik Hau

Verified Expert  in Engineering

Software Developer

Location
Singapore, Singapore
Toptal Member Since
September 5, 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.

Portfolio

ST Engineering Innosparks
Amazon Web Services (AWS), Azure DevOps, Vue, C#, .NET Core, Azure, Docker
ChatInfinite
Express.js, Vue, RabbitMQ, WebSockets, Docker, PostgreSQL, MongoDB, TypeORM...
DAB Technology
Docker, Vue, PostgreSQL, Ruby on Rails (RoR), Ruby

Experience

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.

Work Experience

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, C#, .NET Core, 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, 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, PostgreSQL, Ruby on Rails (RoR), Ruby

Project OneHealth

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

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

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

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

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

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

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

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

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

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

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

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

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)

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

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)

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

https://telegram.kirinnee.dev
Provides a beautiful dashboard for analysing past Telegram conversations

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, Ruby on Rails API, DigitalOcean API, jQuery, React, Chart.js

Tools

GitLab, GitLab CI/CD, Webpack 4, Gulp, 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, TypeORM, WebSockets, PWA, Progressive Web Applications (PWA)

Storage

PostgreSQL, MongoDB, MySQL, Redis, Amazon S3 (AWS S3), Azure Blobs

2019 - 2021

Bachelor's Degree in Electrical and Electronic Engineering

Nation Technological University - Singapore

JANUARY 2019 - PRESENT

Agile Practitioner

ST Engineering

Collaboration That Works

How to Work with Toptal

Toptal matches you directly with global industry experts from our network in hours—not weeks or months.

1

Share your needs

Discuss your requirements and refine your scope in a call with a Toptal domain expert.
2

Choose your talent

Get a short list of expertly matched talent within 24 hours to review, interview, and choose from.
3

Start your risk-free talent trial

Work with your chosen talent on a trial basis for up to two weeks. Pay only if you decide to hire them.

Top talent is in high demand.

Start hiring