Portfolio


The only source of knowledge is experience.

Different projects, different challenges.

Common development

Application

Application layer is where we implement software behavior as what end-user expect.

Hardware Abstraction (HAL)

HAL layer is where application or middleware will be interface to physical peripherals like I2C.

Middleware

Middleware consist of component and device specific driver implementation for application.

Previous works

HAL development for NXP LPC

This project we create a set of HAL interface and definition for NXP LPC microcontroller. The peripherals involved are GPIO, I2C, SPI, ADC, PWM and TIMER. We designed the interface to be future-proof for client unforeseen projects, this improves ROI for initial investment.

Keyword: C, HAL, Ceedling.

Complete software development

This project is a UTM-based contract for developing complete software solutions to control actuators, reading sensors and handling control systems using PID. The solution is built on top of ATmega2560 Atmel microcontroller and utilizing Real-Time OS (RTOS) to improve performance.

Keyword: C, C++, Application, Middleware, BSP, OSAL, RTOS, HAL, Ceedling.

Sensor driver development

This project we create a sensor driver to be interfaced with the Application layer. The driver is designed to have generic interface and abstraction so that application implementations are not affected in case there are changes of sensor or device used.

Keyword: C++, Middleware, Ceedling.

Application software development

This project utilizes complete Python programming language development with combination of TCP/UDP communication to control remotely a drone. Besides, this application also uses state-of-the-art object recognition framework to track trained objects and gestures to control the drone.

Keyword: Python, Application, Object Recognition, Machine Learning, Python unittest.

Code quality & compliance

This project improves code quality and refine implementation to follow code compliance as suggested by using SonarQube software tools. We set SonarQube quality check scan for every Pull Request to the Main branch in Bitbucket. This improves code health in the development branch and avoids potential pitfalls.

Keyword: C, C++, Python, SonarQube, Docker, Bitbucket.

Continuous Integration & Development

This CI/CD infrastructure is essential in a software development environment involving multiple developers.
 
In this pipeline or build plan, we can automatically compile the software, run unit tests, check for coverage results and perform static analysis every time Pull Request (PR) is happening or when there are commits to the Master or Release branch. This process helps in preventing any missing steps and code quality checks before deploying and releasing the software.
 
Keyword: Continuous integration and development, Bitbucket, Docker, Pipeline, Unit Test, Ceedling, ARM GCC.