William Mok

William Mok

Mentor
5.0
(5 reviews)
US$10.00
For every 15 mins
10
Sessions/Jobs
free badge
First 15 mins free for your first session
ABOUT ME
Embedded software developer with over 20 years of experience in multi-national companies
Embedded software developer with over 20 years of experience in multi-national companies

I am a results oriented engineer and team player with over 20 years of embedded software development experience.

I have excellent working knowledge of C and C++ in an embedded, realtime, multithreaded environment. I have worked at Motorola, Nokia and UTStarcom.

My expertise includes C, C++, python, embedded software, wireless communications, concurrent and realtime programming, network programming and debugging.

Chinese, English
Pacific Time (US & Canada) (-07:00)
Joined October 2020
EXPERTISE
20 years experience | 4 endorsements
Have been doing development in C for over 20 years, in particular, involved in the development of wireless and networking protocol stack....
Have been doing development in C for over 20 years, in particular, involved in the development of wireless and networking protocol stack. Contributed to development of major features for 3GPP wireless standards.
Software architectsSoftware DevelopmentEmbedded Systems
View more
15 years experience | 2 endorsements
Over 15 years of C++ experience. Developed and maintained wireless base station software in C++.
Over 15 years of C++ experience. Developed and maintained wireless base station software in C++.
18 years experience
Time and space complexity, data structures, algorithms, bit manipulation, memory management, computer architecture, operating systems, co...
Time and space complexity, data structures, algorithms, bit manipulation, memory management, computer architecture, operating systems, communication protocols, timers.
15 years experience
Linux, Linux RT, UNIX Solaris, Centos, Ubuntu
Linux, Linux RT, UNIX Solaris, Centos, Ubuntu
10 years experience
Client server network programming using TCP/IP, UDP. Techniques include using select, poll, multithreading, synchronous I/O, asynchronou...
Client server network programming using TCP/IP, UDP. Techniques include using select, poll, multithreading, synchronous I/O, asynchronous I/O, blocking and non blocking sockets.
TCP/IPUDPNetwork ProgrammingClient server communcationsInterprocess communicationsCC++
View more
6 years experience
Mutex locks, Condition locks, Semaphores, Multi-threading, Deadlock Avoidance, Deadlock Prevention, Scheduling
Mutex locks, Condition locks, Semaphores, Multi-threading, Deadlock Avoidance, Deadlock Prevention, Scheduling
CC++Linux
View more
GCC/G++
20 years experience
Extensive use of GNU compilation toolchain to perform compilation process.
Extensive use of GNU compilation toolchain to perform compilation process.

REVIEWS FROM CLIENTS

5.0
(5 reviews)
Removed User
Removed User
December 2020
really patient and understanding, wonderful tutor !!
IHsuan Wu
IHsuan Wu
December 2020
Very knowledgeable and patient!
David Rossi
David Rossi
November 2020
Wonderful mentor assisted me throughout the whole code, debugged, and explained every single choice. Definitely a master in C and really patient.
Abu Mohamed
Abu Mohamed
October 2020
Had a fantastic session with William. Learned a lot and guided me through my assignment till the end. Highly recommend!
SOCIAL PRESENCE
Stack Overflow
11 Reputation
0
0
1
EMPLOYMENTS
Senior Software Developer
Star Solutions (formerly UTStarcom)
2006-03-01-2020-07-01
Responsible for the development, maintenance and verification of new and existing functionalities for LTE eNB, EVDO base station and the ...
Responsible for the development, maintenance and verification of new and existing functionalities for LTE eNB, EVDO base station and the MovingMedia 2000 Mobile Switching Center (MSC) in both IS41 (CDMA2000) and GSM domain. • Developed and integrated Aricent LTE protocol stack (MAC/RRC/RRM) and OAM in LTE eNB product in C/C++ running in Centos 7.x with Linux RT patch under PowerPC and Intel architecture. • Knowledge and hands on development experience with I2C: configured I2C with ioctl to read and write from EEPROM, ublox GPS module and temperature sensors on the board. • Development and maintenance for the realtime, multi-threaded EVDO base station software in C++ running on Centos 5.5. • Developed major features in C running on UNIX Solaris for the Mobile Switching Center: IS-41/GSM E911 Phase 2, IS-41 Dynamic Cell List, IS-41 Wireless Number Portability, GSM Remote MSC Survivability. • Ensured 100% pass rate of test cases for verification of software changes. • Solid experience in using Qualcomm tools and Wireshark to analyse data packets. • Design and development of a unit test tool in C++ for the IS-41 mobility server gateway that supports multiple protocol interfaces for SIP, MAP and TCP/IP. • Developed encoding/decoding functions for SNMP Get, Set and Trap notifications. Update new MIBs and maintenance of existing MIBs.
Python
C++
C
View more
Python
C++
C
Linux
Multithreading
Bash
Realtime
Object-Oriented Programming
Embedded Systems
Wireless communication
View more
Lead Software Developer
Memotrax Music Systems
2005-07-01-2006-02-01
Played the lead role in the architecture and implementation of the server framework to support the proprietary music management software ...
Played the lead role in the architecture and implementation of the server framework to support the proprietary music management software developed at the startup company. • Developed robust SOAP messaging interface with C++ and MSSoap toolkit 2.0 on client side and Java SAAJ on server side, required to support the client/server communication used by the online community features. The server is run on Apache 2.0 and Tomcat 4.1. • Implemented multithreaded C++ TCP socket class using winsock2 APIs on client side and Java socket class on server side. Also conceived, designed and implemented multithreaded test simulator running on a single client console to handle around 1000 socket connections with server using winsock2 'select' function.
Java
C++
Multithreading
View more
Java
C++
Multithreading
SOAP
Network Programming
View more
Software Design Engineer
Nokia
2003-01-01-2005-05-01
Played a key role in the software design, implementation (C++) and testing of the Series 60 CDMA mobile smartphone platform. Performed so...
Played a key role in the software design, implementation (C++) and testing of the Series 60 CDMA mobile smartphone platform. Performed software integration and regression testing within the team. • Implementation of the Easy Programming feature allowing settings modifications for the Number Assignment Module (NAM) in the CDMA smartphone. Delivered feature was of high quality and on time. • Key contributor in carrying out refactoring for call handling functionality of the software using OO methodology. Design was then enhanced and code size reduced by more than 50%. • Appointed gatekeeper for software deliverables. Ensured software deliverables were integrated correctly and overall software functionality not broken before submission to builds. Designed Perl scripts to automate configuration management by up to 40%.
C++
Object-Oriented Programming
Wireless communication
View more
C++
Object-Oriented Programming
Wireless communication
Cdma
Symbian
View more