Hands-on IoT advisor and educator. Passionate about helping everyone create IoT products that make a difference to the man and woman on the street. 'Top Writer In Internet of Things' at medium.com
Responsible for teaching and mentoring the next generation of professionals in IoT technologies. He taught the following courses:
IoT Application Development: He prepared and presented lessons and labs for training working adults with IoT programming skills, based on AWS IoT, Sigfox, Ubidots and Arduino. He created the training platform with various AWS services: AWS IoT, Lambda, API Gateway, S3, DynamoDB, SNS, Elasticsearch, Kibana. His students included IT professionals from Agility, IBM, SAP, Ericsson, Canon and ITE.
IoT Project: He supervised the students in creating innovative IoT products (based on AWS IoT and Sigfox) that solve real-world problems like dementia patient tracking, elderly home monitoring, food safety, campus security, AED management, realtime asset tracking.
Operating Systems: He conducted tutorials and labs for the Operating Systems core subject, which is a graduation requirement for all fulltime students. He covered a broad range of operating systems including Android, iOS, Linux and Windows.
As former CTO of UnaBiz, he was responsible for creating new tools and systems to help people get onboard with Sigfox the quickest way possible.
UnaLocation - Enhanced Sigfox Geolocation: Estimates your latitude/longitude geolocation from Sigfox signal strength. Computed based on past GPS coordinates and Sigfox signal strength collected by the UnaTumbler tracking device. Machine Learning based on Google TensorFlow, Google BigQuery, AWS SageMaker
UnaRadar - Sigfox Network Finder: Mobile web tool for showing the locations of nearby Sigfox basestations and their signal strengths with respect to your Sigfox device.
UnaMap - Sigfox Coverage Map: Web-based coverage map, computed based on past GPS coordinates and Sigfox signal strength collected by the UnaTumbler tracking device.
UnaShield - Sigfox Shield for Arduino: Arduino library that powers the communication between UnaShield and Sigfox - https://github.com/UnaBiz/unabiz-arduino
UnaBell - Smart Button on Sigfox: Cloud server that powers the smart button
sigfox-gcloud - Open Source Sigfox Server for Google Cloud: https://github.com/UnaBiz/sigfox-gcloud
sigfox-aws - Open Source Sigfox Server for Amazon Web Services: https://github.com/UnaBiz/sigfox-aws
He heads the software development/engineering team that architects, develops and executes proof-of-concept (POC) projects for incubating new businesses for Konica Minolta. He was also consulted for technical due diligence in investment projects and acquisitions. Projects executed include:
Straight-Through Food & Beverage (F&B) Ordering System: Deployed in Singapore and Australia, he created the system that allows mobile users to place food orders through a mobile app and submit directly to the Point Of Sales System and the Kitchen Display System. The Kitchen Display System automatically calls the user when the order is ready for collection. Loyalty points and digital receipts are automatically populated in the app, through direct integration with the Lavu Point Of Sales system. Tools and platforms used: AWS (Lambda, S3, SQS, API Gateway, Mobile Analytics), Google BigQuery, Firebase, Parse, Magento 2, Loggly, Sumo Logic, Jenkins, Raygun, Slack, Azure, MongoDB, Node.js, Android, iOS (Swift), C#, Windows Presentation Foundation.
Bluetooth Beacon Analytics: Profiling mobile users accurately using Bluetooth Beacon analytics and targeting them with highly-relevant promotions. Tested in large exhibitions and shopping malls. Based on Google BigQuery, Google Cloud Datalab, MongoDB, Node.js, Android, iOS.
Other projects include Health/Wellness, Android Set-Top Boxes, Hospitality
Reports directly to CEO Group Digital L!fe, Mr Allen Lew. Responsible for scanning of innovative ICT technologies worldwide and executing proof-of-concept (POC) projects for the SingTel Group. He was also consulted for technical due diligence in SingTel Innov8 investment projects and SingTel Group Strategy acquisitions. Projects executed include:
(1) Internet of Things (IoT); (2) Indoor Positioning; (3) Smart Retail; (4) Social Recommendation based on Facebook profiling; (5) Speech Recognition for Singapore English; (6) Image Recognition for Retail; (7) Motion Gesture User Experience; (8) Augmented Reality; (9) Cloud Gaming; (10) Virtual Reality; (11) Video Streaming and Distribution; (12) Home Automation
Lead Enterprise Architect for Microsoft .NET technologies in Singapore's largest system integrator
(1) IRAS Inland Revenue Integrated System; (2) Singapore Health Services Outpatient Administrative System; (3) Digital library systems for National Library Board, Singapore Polytechnic, Temasek Polytechnic, Singapore Airlines Engineering, SASCO; (4) Web portals for IDA MyeCitizen Portal, MINDEF NS Portal, MediaCorp MOBTV Portal; (5) YW8, Singapore’s first mobile payment system by NETS, DBS, SingTel, M1, StarHub
Research Assistant for CHOICES Object-Oriented Operating System
How we build PineTime Watch Faces with Rust and LVGL... And publish them on crates.io
How PineTime syncs the time over Bluetooth LE with Mynewt and NimBLE... And how we create Watch Faces with LVGL
Converting Embedded C to Rust is not that hard... Here's how we convert a PineTime Watch Face with LVGL from C to Rust on RIOT
Tired of pointer problems on Embedded C? It’s time to switch over to a safer, simpler way of coding: Embedded Rust. We’ll look at Rust hosted on RIOT and how it’s used to create LVGL watch apps for PineTime Smart Watch.
How we build and preview PineTime Watch Faces with only a web browser... No computer needed!
Learn to build PineTime Smart Watch Firmware in the Cloud... No computer needed!
Learn about Wayland and Ubuntu Touch on PinePhone... And how we build PinePhone Apps with LVGL
How we manage state with the Bloc Library in the Flutter Companion App (Android and iOS) for PineTime Smart Watch
Getting started with PineTime Smart Watch
Creating desktop apps on Linux doesn't have to be hard... Let's build GTK+ 3 apps in Go with the gotk3 library!
How we build the Flutter Companion App (Android and iOS) for PineTime Smart Watch by converting Go to Dart
Bluetooth Low Energy apps are ridiculously easy to code with Flutter and Dart, let me show you how!
Making wasp-os truly awesome with full multitasking, interoperable firmware updates and a common companion app
Observe step-by-step the Wireless Firmware Update running on PineTime Smart Watch (nRF52) with MCUBoot Bootloader, NimBLE Bluetooth LE Stack and Apache Mynewt
Wireless Firmware Updates done right on PineTime Smart Watch... With the open source MCUBoot Bootloader from Apache Mynewt and Zephyr
Configure Mynewt OS to enable access to SPI Flash Memory on PineTime Smart Watch
Flash any firmware to PineTime from our mobile phone... Without opening the watch!
Running Retro Games with Rust is not that hard on PineTime Smart Watch. Here's how I ported a CHIP-8 Game Emulator to PineTime
Create and edit Embedded Rust programs visually by dragging and dropping blocks
Have humans become so greedy for profit… That we have forgotten how to teach one another and advance our species?
VSCode debugging configuration for RIOT
Coding in Embedded C is like building a skyscraper without scaffolding
Using only a Raspberry Pi, we can debug the firmware on PineTime Smart Watch: Step into the flashed program line by line, set a breakpoint to pause execution at a line, inspect variables at runtime, … Just like the Embedded Pros!
Instead of sending SWD data over GPIO one bit at a time, what if we could blast out the data over Raspberry Pi’s SPI interface?
Programming a PineTime is not that hard… All you need is a Raspberry Pi, some wires and a little creativity!
Simple tweaks like Batched Updates and Non-Blocking SPI can have a huge impact on rendering performance
Code Watch Apps in Rust the Declarative Way
5 years ago I decided to fix every link in the IoT Chain so that we can create really useful and affordable IoT gadgets, the Lean and Agile Way
Porting Mynewt OS to GD32 VF103 on RISC-V was a nightmare
Programming the Hynitron CST816S Capacitive Touch Controller
PineTime is the spiritual successor to BBC micro:bit
Many GD32 VF103 RISC-V developer boards are coming real soon... And Mynewt OS would be perfect for them
Set up an nRF52 mesh network, step by step, without any coding
nRF52 works with popular open-source tools on Windows and macOS like VSCode, OpenOCD, Rust and ST-Link
Let’s build a simple gadget that determines its current location based on received GPS signals… And transmits the location to a server via NB-IoT
Peek into the LiteOS + Application source code that was bundled with the NB-IoT Developer Kit
Learn to optimise the power consumption of the NB-IoT Sensor Application in the previous tutorial
Create and edit Embedded Rust programs for STM32 Blue Pill and Apache Mynewt… By dragging and dropping blocks!
Watch what happens behind the scenes when you create a Visual Embedded Rust program
Hardly anyone writes embedded programs in Rust for microcontrollers (like STM32 Blue Pill), we all use C. But we really should switch to Rust!
Let’s build an IoT sensor with a real microcontroller — STM32 Blue Pill — and a real NB-IoT module — Quectel BC95-G!
How to use a Quectel evaluation board to send a CoAP message to the CoAP server hosted at thethings.io
Simpler embedded coding, the visual way
Declarative and Procedural Macros (plus bindgen and tips for Visual Studio Code) to protect Embedded Rust coders from stumbling into embedded traps
It’s time to drop our legacy programming practices and adopt smarter, safer ways to exploit these microcontrollers… starting with Apache Mynewt and Rust.
Let's build a Sensor Network running on two Blue Pills with nRF24L01 and ESP8266
Friendlier for newbies, supports ESP8266 WiFi and nRF24L01
And WiFi Geolocation with ESP8266
Apache Mynewt is a free, open-source realtime operating system for microcontrollers
AWS IoT Rules Engine and Kinesis Firehose were designed to stream live sensor data into Redshift for storage and analysis
With AWS Glue it’s now possible to keep our Redshift data warehouses in sync with JSON-based data stores… So we may exploit the full potential of business analytics and machine learning in AWS!
With Lambda Layers it’s really easy to connect our Node.js Lambda Function to Redshift or PostgreSQL
How do we upgrade the Bootloader when it’s always running in the background, waiting for flashing requests? This article explains a special technique I used to upgrade the MakeCode Bootloader over WebUSB… I call it “Baseloading”
Explore the innards of the MakeCode Bootloader that I have ported to Blue Pill
Computing sensor values in IoT devices can be prone to bugs… And Unit Testing can help to stop the bugs before they pollute the entire IoT chain
Filling in tiny math functions with nano-float
Learn the tips and tools to prevent Blue Pill Bloat
STM32 Blue Pill is a remarkable microcontroller for US$ 2. I proved it by running the USB Storage, USB Serial, USB DFU (Direct Firmware Upgrade) and WebUSB interfaces all on the same Blue Pill concurrently, without any additional hardware!
This work-in-progress document describes an incomplete implementation of STM32 Blue Pill visual programming
I teach Sigfox to working professionals. Here are their questions…
如果您可以將您以電池供應電力的BBC micro:bit設置在城市裡的任何一個角落來收集感測資料 … 或者是隨時查看從家裡、學校、工作場所即時更新的感測資料 … 不是很酷嗎？
使用 BBC micro:bit 連接 Sigfox 物聯網網路會是一個很好幫助孩子們理解感測器與感測網路如何運作的理想方式。micro:bit 是新式以電池提供電力的感測器裝置典範，具備充足的處理能力並支援大多數的感測器類型。在教育用途上，Sigfox 可能是今日用於城市規模測試的感測網路之中，最為便宜的方案。
BBC micro:bit connected to the Sigfox IoT network is the perfect way to help kids understand how Sensors and Sensor Networks operate. The micro:bit is a good representation of a modern battery-powered sensor device, with ample processing power and support for most types of sensors. For education, Sigfox is likely the cheapest option today for experimenting with a city-wide sensor network.
以 STM32 微處理器為核心的 STM32F103C8T6 Blue Pill 開發板連接 Sigfox 收發器模組來接取 Sigfox 物聯網網路可能會是設計一款低功率物聯網裝置的最佳組合。
STM32 “Blue Pill” microcontroller connected to a transceiver module for the Sigfox IoT network might be the best combination for low-power IoT devices right now.
This article that explains all that I have learnt about SPI ports, DMA and interrupts on the Blue Pill
As we learn how to program the FPGA, we’ll soon realise that FPGA programming is really extraordinary, unlike any other kind of programming we have done before
Upsizing from Arduino Uno to a 32-bit STM microcontroller doesn’t have to be hard
Using the cocoOS task scheduler to run Sensor Tasks concurrently while waiting for the Network and UART Tasks
Juggle multiple Arduino sensors, using an open source library for cooperative processing: cocoOS
Since FPGAs are already mainstream, could we use them to create IoT devices that are more power-efficient than current devices based on microcontrollers?
Let's learn Rust, a modern systems programming language that promotes safe, concurrent low-level coding
Here’s the story of the first gadget that I have ever created, with help from the brilliant minds at Seeed in Shenzhen
Better tools for building robust and reliable programs for microcontrollers
Could Alibaba Cloud be the economical cloud for high volume IoT?
How to implement a Finite State Machine on the Arduino Uno
How to experiment with IoT today while minimising the security and performance risks, and keeping costs low
Arduino, Low Power Networks, IoT Networks, IoT Analytics, ...
Lup Yuen talks about two classes of IoT, ‘deep’ IoT and ‘wide’ IoT. Deep IoT devices require high bandwidth and power supply. UnaBiz looks at wide IoT, which refers to devices that are very light, battery-powered and operate on pervasive networks. They can work anytime, anywhere in Singapore and do not rely on WiFi or the cellular network.
Building highly reliable, robust and scalable systems for processing Sigfox messages
Co-created with Upton Lai, the brilliant guy who could make anything
IoT is about solving real problems (not imaginary ones) in a sustainable way
This invention relates to a system for displaying video content streamed from a network in a full screen mode. The system receives receiving a network address based on a selection from a user. The system then transmits a request for content from the network address and subsequently receives the content associated with the network address. A search is performed on the content for data that provides displaying a video content in a full screen mode. Upon detecting the data, the process generates the data and displays video content in full screen mode.
A system and method for providing mobile services, the system comprising: a mobile device executing a client application for generating a mobile service request; and a hub server for receiving and processing the mobile service request, wherein the mobile service request comprises location data of the mobile device, and the hub server pushes one or more mobile service offers to the mobile device based on the location data. The method comprises executing a client application for generating a mobile service request on a mobile device; receiving and processing the mobile service request at a hub server; and pushing one or more mobile service offers from the hub server to the mobile device based on location data, wherein the mobile service request comprises location data of the mobile device.