Charlie Lee

E-mail: Charlie.Lee@SynercomSoftware.com

Resume: http://SynercomSoftware.com/CharlieLee.html

 

 

 

OBJECTIVES:

I am a believer in Object-oriented programming & logical data modeling with strong preference to SOA (Service Oriented Architecture)/RESTful. Work as a hands-on application system architect by applying my network and application programming knowledge to produce server-side multi-thread based re-usable software objects to minimize the complexities and development/maintenance costs of large distributed application systems with big data in a Hadoop cluster.

 

EXPERIENCE HIGHLIGHTS:

2013-2018, served as a senior architecture/designer of a Big Data Analytics system to build Java based software to parallelly SQL aggregate large amount of historical data in DBMS (Oracle or Greenplum) and convert data into Parquet format into HDFS/Hadoop cluster (MapR or Cloudera/CDH). RESTful client/server modeling is heavily used for most of client/server communications.

 

With years of hands-on design and programming experience in software development, expert in using OOD methodology with MVC (model-view-control) approach; designed and implemented collections of re-usable infrastructure software objects/classes to interconnect large nationwide multi-vendors distributed application systems on J2EE, UNIX and MVS platforms.  This multi-threaded Java and C based infrastructure server-side software has tremendously reduced the costs of development and maintenance while providing high performance throughput at runtime.  The build-in event logging and message tracing features make the inter-systems and inter-processes development debugging as well as production systems troubleshooting/isolation readily available.

 

With expert level of Java knowledge, served as project leader to design/implement infrastructure code for bridging J2EE Web Container with Apache/Tomcat  to backed-end Java multi-threaded distributed business container.  Designed/implemented a number of Web Services (SOAP) client/server project. All communications among the processes across containers are secured with secure networking (SSH/SSL) as well as critical data encryption using JRE/AES.

 

Served as the lead architect for several large scale distributed application systems with a thorough understanding of the development life cycle by involving in every phase of the development processes – feasibility study, solution presentation, requirements, architecture, logical data modeling, system design, implementation, source code control, application system build, quality assurance,  modification request control, etc.

 

With strong and a wide range of technical background and excellent communication skills, experienced in performing technical presentations to explain difficult technical concepts to peers, managers and customers alike to gain their acceptance and approval.  Many times, had teamed up with sales and project managers to present technical solutions successfully to the IT personnel from a group of major telecommunication corporations.   

 

MOST RECENT EXPERIENCES (2013-2018):

·        Big Data Analytic System with DBMS and Hadoop/HDFS: Designed & built a sophisticated generic RESTful Java server which does parallel SQL aggregations of hierarchical of DMBS tables with constantly arriving big data. The hierarchical of DBMS tables are defined in an XML file which will be customized in each production site. As defined in the XML file, the aggregation of granularity of table data could be in 5-fivemin, hourly, daily, weekly, etc.  The same Java server code can be configured to support two production types: Oracle/CDH or Greenplum/MapR.  When interfacing with Oracle, the server would invoke RESTful Oozie server in CDH to construct Sqoop workflow which establishes multiple JDBC connections to Oracle to parallelly import table data into HDFS in Parquet format.  When interfacing with Greenplum, the server would insert-SQL aggregated data into Greenplum External tables which defined as an interface for download parallelly to Hadoop/MapR HDFS/Parquet.

 

RECENT EXPERIENCES (2000-2013):

·        Researched & prototyped JavaScript/AJAX GUI & server technologies. Implemented browser GUI using Qooxdoo/JavaScript which sends AJAX data requests (in JSON format) to the PHP server using Solaris Coolstack Apache/PHP. Implemented PHP scripts to generate AJAX response data in JSON format. Implemented PHP scripts to open TCP-socket session with the legacy back database servers.

·        IPv4 to IPv6 migration: Led development teams to migrate existing Java and C/C++ code from IPv4-only to dual stack IPv4 and IPv6.  Configured IPv4/IPv6 dual stack unit test environments in IPv4-only networks by using RFC3056 6to4 Routing.  Changed all old style C/Socket programming APIs to the newer POSIX IPv4/IPvc6 transparent APIs (RFC3493).

·        Web Services/SOAP: Used an existing WSDL file to design and implement a production web services client/server application system based on the Apache/Tomcat/Axis. Researched and prototyped Apache/AXIS2 web server implementation under Tomcat.  Generated web service file (.aar) starting from either WSDL2J or Java code with OMElements.

·        Java Server-side Business Logic Container: Architect, design & implement an Object Oriented Java multi-threaded container to process business transactions.  Dynamically instantiate and execute Application Servant classes with business logics (similar to J2EE EJB Container). Each Application Servant class implements the standard Java abstract interfaces as defined by the container. All message exchanges between the container processes are XML over TCP based.

·        J2EE Web Container, TCP & XML: Served as the system architect, designed and implemented a J2EE Web Container development/runtime platform for a large distributed application system by using Apache/Tomcat, Apache Log4J, Apache Commons.net, Struts MVC, Struts SSL Switching Extension, Struts JSP/Taglib, W3C XML Schema (XSD), W3C XML, Style Sheet (XSL) and Apache/XMLBeans.  Established Tomcat JNDI Resource to facilitate JDBC access to the back-end server Oracle databases.  Developed gateway infrastructure software to enable the Struts Action modules to exchange XML data over TCP/IP to existing back-end server application processes.  Developed a Struts Action module to enable runtime re-configuration of Log4J for development debugging.  Developed initialization Servlet to do data caching and TCP sessions pooling management for Struts Actions.  Created a series of thread-safe infrastructure Java classes for both GUI and Server-side developers.

·        Java, UNIX & Network Security: Researched, prototyped and implemented SSL (Secure Socket Layer) by integrating JAVA JSSE SSL, Struts SSL Switching Extension and openSSH.   Created SSL keyStores, certificates & trustStores for browsers to access Tomcat through HTTPS.  Set up openSSH by using Local/Remote Port forwarding with private/public key authentication. Enabled server-to-server data exchanges through Java JSSE SSL or openSSH.  Developed common Java classes for application data symmetric encryption by using JCE/AES (Advanced Encryption Standard) with 192+ bit encryption.  Converted existing application system login authentication from UNIX system password check to PAM (Pluggable Authentication Modules) APIs. Designed & Implemented Solaris RBAC (Role Based Access Control) based wrapper programs to tighten the security of Solaris based application systems by defining users into multiple domains.

·        DBA & Data Modeling: Served as DBA to upgrade existing application databases from Oracle8 through Oracle11g.  Switched existing applications from using Rollback Segments to using Undo Segments.  Wrote PL/SQL Store Procedures to divide applications into different Resource Manager Consumer Groups for proper resource allocations and priority scheduling.  Recreated all Oracle table spaces using Locally Defined table space option to improve database performance by eliminating Data Dictionary contentions.  Set up XSD (XML Schema) registration in Oracle and created databases and data columns to store XMLTYPE data type.  Directed application programmers to use XDK (XML Development Kits) by taking advantage of the XMLTYPE data type to process XML based data using embedded W3C XPath/XQuery in SQL statements.

·        Cisco/RBP/X.25: Proposed, designed and implemented Cisco/RBP (Record Boundary Preservation) protocol for a nationwide distributed message routing system to replace the expensive and complicated X.25 software/hardware/network with straight RBP/TCP connections to remote legacy X.25 based systems.  This low cost implementation saved the message routing system millions of dollars yearly by eliminated the X.25 equipments, links, software cost on the application side, while improved the system throughput significantly.

·        Teaching: Served as a guest lecturer to computer science graduate students at a local university on topics of “Logical data modeling”, “system design/development life cycle with 4-tier design apporach” and “quality assurance in software development”.

 

SOFTWARE:

WebServices/SOAP (Apache Tomcat/Axis, Tomcat/Axis2/OMElement), XMLbeans, WebGUI (Qooxdoo, Apache Tomcat, Struts, Log4j, Ant/Build, Commons/telnet), UNIX (Solaris, IPC, SCCS, MAKE), ORACLE (DBA, Package/procedure, XDK/XMLtype), J2EE, JCE/AES, SSL, openSSH, OptimizeIt, Cisco/RBP, SunLink/X.25, MVS, IMS/DB/DC, Netview, TSO/ISPF, VSAM/IDCAMS, JES2, MVS UTILITIES, VTAM/NCP/NPSI

TELECOMMUNICATION PROTOCOL:

SOAP/WSDL, XML/XSD/XSL, TCP/IP, UDP/IP, BSD Socket, SVR5 TLI/Stream, ASN.1/BER, RBP/XOT/X.25, OSI/CMISE, CORBA/IDL, RPC/XDR, UNIX/IPC, SNA LU1, SNA LU2, OSF/DCE

COMPUTER LANGUAGE:

Qooxdoo/JSON/Php, J2EE JAVA, C/C++, UNIX:Shell/Awk/Make, SQL, PL/SQL, W3C:XPATH/XQUERY, XML/XSD/XSL/WSDL, HTML, Java/Swing, ASN.1, PL1, COBOL, FORTRAN, IMS (DLI, DLT0, MFS, DBD, PSB), TSO/CLIST, MVS/JCL, ASSEMBLER

EDUCATION:

· MS/Computer Science

· BS/Physics

REFERENCE:

· Available upon request

 

 

 

EXPERIENCES (before year 2000):

 

·As a senior consultant at several major telephony research companies

  Telecommunication Protocols Design:

Led a protocol design team to define a simplified version of OSI upper layers (application, presentation, session & transport) of protocol over X.25 and/or TCP/IP to bridge IBM and UNIX based support systems with telephone vendor data switches.  The protocols has been in production since late 1980s and later adopted by many other telephony projects.  The protocols has been accepted and implemented by vendors of telephony Support systems and Switch vendors as a standard inter-system interface.

With the mission of improving throughput and data volume of a RPC-XDR/UDP based inter-process protocol infrastructure, served as the designer of the replacement protocol by using peer-to-peer ASN.1/BER and XML with message boundary over TCP/IP.  The protocol includes session start-up, peer verification, graceful session release, keep-alive and automatic session failure/recovery.  The replacement protocol infrastructure was seamlessly incorporated into several existing nation-wide distributed application systems.  The throughput was improved from tens messages per second to over a thousand messages per second.  The maximum message size was improved from 4 kilobytes to over 1-megabytes.

With the mission of phasing out old and expensive X.25 based inter-system protocol infrastructure, designed and implemented a replacement protocol layer using ASN.1/BER and XML with message boundary over TCP/IP.  The new protocol significantly improves the throughput and reliability.  It also tremendously reduces the production costs by eliminating the expensive X.25 equipment and leased lines.

 Telecommunication Infrastructure Software Implementations & testing:

In-depth knowledge of the design and coding of TCP and UDP interface using BSD Sockets, X-Open TLI and JAVA Socket Classes.  To achieve 100% non-blocking event-wait IO services for Socket listen, connect, send and receive operations, the BSD “select () call” or SVR4 “poll () call” can be used.  In JAVA, the non-blocking event-wait IO services can be achieved by using JAVA native “threads” programming combined with the JAVA “Synchronized object/method” support.

Designed and implemented several packages of telecommunication infrastructure software for a number of large scaled distributed application systems.  These software packages provide APIs to both UNIX and IBM mainframe application platforms.  These packages use many industrial popular standard protocols, which includes XML, TCP/IP, UDP/IP, X.25, HTTP, JDBC, Java/RMI, OSI/GDMO/CMISE/TCP, CORBA/IDL, RPC/XDR and IBM LU1. The features include process control, directory services, message buffering, automatic connection failure/recovery, session peer verification, graceful session release, and process event logging as well as inter-process messaging data trace.  A rich set of APIs is provided for application programmers to interface with the infrastructure.   The APIs enables the application programs coded in C/C++ and JAVA to communicate with each other seamlessly across different Operating System and machine boundaries.

Many years of experience to represent the client companies to lead lab-to-lab test team to perform all kinds of protocol interoperability tests among various vendor and software companies ranging from IBM, NCR/CONTEM, Sun Micros, DSET, AT&T, Lucent, Alcatel, Ericsson, Tekelec, Nortel, Sprint, MCI, etc.

As chief designer to re-architect several large nation wide systems from IBM mainframe to UNIX/PC based distributed systems, many feasibility study and requirement documentation were prepared and presented by me to the industrial client and vendor companies. The documentation contains initial planning, cost benefits, application transition plan as well as test plan.

Database Design & Administration:

Served as Oracle and IMS/DB Database Designer/Administrator, responsibilities include data modeling/normalization, logical database design, and physical data base implementation.  Job functions include database table/file creations, view creation, performance tuning and SQL calls consultations and supports.

IBM MVS Platform:

Led several IMS DB/DC and CICS based projects all the way from feasibility study, requirement, application architecture, to system design, human interface design, detailed design, implementation, testing and production support.   Major responsibilities include data base design/implementation, data communication design/planning, multiple system coupling and some MPP/BMP application programming. Had extensive experience in database design/implementation, performance/tuning, checkpoint/restart, MVS/JCL, TSO/CLIST/ISPF and PL/1 programming.

UNIX Development Platform:

With extensive experience in SVR4 and BSD UNIX, designed and implemented the development and production environments for many projects.  UNIX Make file scripts were used extensively to build the software deliverables.   Value added UNIX SCCS file access control was developed to insure project source code directory structure, naming standard and ownership.   As the major Shell program writer, numerous installation, operation and maintenance Shell/Awk/Make/Sed scripts were produced to boost the productivity of programmers and production EDP supports.

Telephony Experiences:

As the chief architecture designer and EDP consultant, developed several major operation support systems which support the administration, provisioning and engineering of the ten largest regional Common Channel Signaling (CCS) networks in USA.  The systems have been deployed in production in all the major regional telephone companies in U.S.A since mid-1980s.  The systems interconnect hundreds of CCS switching nodes (STP), database nodes (SCP) and long distance service provisioning systems throughout U.S. via TCP/IP, X.25 and OSI/CMISE protocols.  These systems contain IBM mainframe computers (IMS DB/DC, VTAM/NCP/NPSI) and a large number of UNIX based servers/workstations using ORACLE DBMS. 

 

· As a Member of Technical Staff at AT&T Bell Labs

As a project leader, worked on several MVS IMS DB/DC and UNIX based application systems. One of the most successful projects was having 24 inquiry IMS MPP programs with 70% of their code generated - an early version of CASE tool. The automated code generating structure made this 40 user screens & 37 physical Databases system went into full production in 6 month since the requirement phase.  This project was selected by the president of ATT Bell Labs as one of the top four model projects to be used in the company-wide management training courses.