I sat down with Dr. Chua Ming Yam for a chat on his software development experience and projects, which he does on a freelance consultation basis in addition to his work as a lecturer and researcher. He is currently an Assistant Professor in Chiba University and is specialized in building radars that can be mounted on commercially produced airplanes such as Boeing 737 for remote sensing and surveillance purposes. He counts cooking as one of his favorite past times. His technical work can be found on his website.
What was the first computer that you used, and when was that?
I first laid my hands on a computer when I was in primary school. It was running on an Intel 80486DX processor with 2MB RAM, the accessories were an external plug-in CD-ROM 2X, a graphics card VGA 640x480, and an external plug-in sound card. The OS was Windows 3.1 on command prompt with no GUI (graphic user interface). The word processing software applications were Word Perfect and Lotus 123. There was no modem nor internet at that time. My father bought it to learn Lotus 123, my brothers and I got to use it when my father was not using it. I used it to run DOS batch scripting as a hobby, which sparked my interest in computing.
What was the first program that you wrote that was put into real life use?
During my secondary school, I created a spreadsheet script for use in the teacher-student coop that operated as a stationary store. It spurred my ambition to major in computer engineering; but when it came to enrolment in university, I opted for electronic engineering instead.
What do you like about your software development projects?
The sense of satisfaction and accomplishment when I complete a software solution. This is something unique that I created, it can work and solve problems.
How does your hardware development work relate to software development? Or vice versa?
Hardware and software are inseparable, they must go hand in hand. Just like in cooking: hardware is like the raw materials; software is like the heat, seasoning, and water that transforms the raw materials into the final dish. Both play important roles.
What coding languages do you specialize in?
Low level language: assembly language, Verilog HDL;
High level language: C, Basic, C#, Matlab;
Graphical programming: Labview, I am a Certified Labview Associate Developer (CLAD).
How have the tools you use changed over the years?
When I first started to design an electronic system, I used assembly language, C language, and microcontroller firmware to build a solution with the microcontroller. When I moved on to develop a radar receiver including a DAU (data acquisition unit), I used microcontrollers, firmware, and Visual Basic to create the GUI for user control and configuration. When I continued to build a radar, I used Matlab for simulation, algorithm design, and proof of concept. I used FPGA to develop the hardware, and Labview to develop the GUI. In my recent project on developing a SAR (synthetic aperture radar) controller system, I use C#, Labview, FPGA, Verilog HDL; in order to process the data collected by the radar, I use Matlab.
What are the contributions of your solutions to the industry?
In one of my consultation projects, I developed a power tool test rig comprising 6 test stations for Bosch, the power tool manufacturer. The main purpose of the test rig is to conduct power tool endurance tests. The test rig is to simulate a user operating the power tool and test the tool until the end of its product life.
The software is capable of collecting data input from sensors, including temperature, torque, reaction torque, and most importantly, the lifetime of the power tool. After data collection, it will then analyze and recognize the symptoms before the power tool breaks down, to provide clues on how to lengthen the lifetime of the power tool.
In addition, the software solution also included ergonomic analysis for the power tool, such as the duration of use that will trigger the onset of hand-arm vibration syndrome in the user. The data can also be used to analyze vibration injuries, for example neurological, vascular, and musculoskeletal disorders.
In a separate project on the development of radar controller and processor, I used a combination of commercial hardware and dedicated hardware that cannot be bought which I made by designing FPGA boards. Then I integrated the hardware with software functions and developed a user interface with C#, which is capable of controlling the system and executing high-speed large volume data acquisition.
Raw data acquired by the radar mounted on an airplane during flight tests was processed using Matlab that runs image formation algorithm to produce radar images. Radar sensors are weatherproof and more superior than optical sensors and can be used for remote sensing application such as disaster damage assessment, land deformation observation, snow monitoring, oceanography, terrain classification, and target detection.
What are the challenges that you face when delivering software development projects?
In R&D projects, we don’t usually have a dedicated software developer, whatever function needed has to be developed by myself, even when it means learning a new language or using a new tool to achieve the objectives.
What are the most important technical skills that a developer should possess?
Code reusability, code optimization, speed, resource utilization, scalability, and expandability. In R&D applications, the software is of a smaller scale as compared to commercial applications, system architecture design is not given as much emphasis, and programming skill not as specialized.
What are the soft skills that are crucial for a developer?
Project management and time management, managing the project timeline and deadlines. Sometimes the project requires dealing with third-party supplier or collaboration between different teams, communication is important.
Are the fresh graduates today equipped with the right skills with their tertiary education?
The training that an undergraduate receives is like being introduced to the recipe, which contains the essential steps. Without practice, the final dish cannot be produced. The best way to learn programming is by practicing, it is something that cannot be learned from books alone.
What advice would you give a fresh graduate entering the industry as a developer?
Learn as much as you can when you are young; when an opportunity arises, treasure it. Constantly upgrade yourself; if you stop learning, you will be left behind.
Skill is not the most important, attitude is the most important. Persevere and do everything well, then you will achieve your targets.