Work together with talented, self motivated, colleagues to design and implement
robust and scalable hardware and software solutions to meet our business needs.
Have fair compensation and a good work life balance which allows me to pursue
my Open Source projects.
Southwest High School, El Centro, California, USA
San Jose State University, San Jose, California, USA
2003: Bachelor of Science (Computer Engineering) San Jose State University, California, USA
2003: Minor (Mathematics) San Jose State University, California, USA
I consider myself a full stack engineer, having working experience from
low level digital design up to robust distributed systems handling millions
of financial transactions a day. The below are highlights of the
technology I am familiar with.
I have experience developing systems using the following programming
languages. This list is roughly ordered by lines of code.
- Java (Low GC) [ Excellent Knowledge ]
- C/C++ [ Excellent Knowledge ]
- Shell Scripting [ Excellent knowledge ] (sh, bash)
- Perl (Use Object Oriented "use strict" design)
- HTML / CGI
- Assembly (x86, OpenRISC)
I have experience programming on and administering the following
- Linux [ Excellent Knowledge ]
I have experience working on, programming and debugging the hardware for
the following platforms, this includes writing assembly and driver
- X86 PC Hardware
- X86 Server Hardware
- FPGA Hardware (Xilinx, Altera)
- OpenRISC SoC
I have experience and am competent with the following aspects of
- RTL Digital Design
- Basic PCB Layout
- Basic Analog Circuit Design
Graphics and Design
I have experience designing for web, desktop and print which has taught
me the following technologies and aspects of layout and design.
- User Experience Design
- Basic Layout and Design
I have experience setting up robust distributed systems with low
downtime and zero data loss via transaction safe processing. The
technologies I am familiar with are the following.
I have experience programming and debugging services for some of the
following network protocols
As with any developer having the right tools in your toolbelt increases
productivity. Below is a list of what I use on almost a daily basis.
- Intelli-J IDEA
- Ant Build
- Auto Tools (Automake, Autoconf)
- make and Makefiles
I have extensive experience designing and building distributed
systems. This has ranged form load balancing email servers to financial
transaction processing systems. Building these systems has included
designing web administration and monitoring platforms as well as developer
tools to make developing, testing and configuring these systems easier.
In finance, systems need to be guaranteed to not lose a single
transaction. Designing these systems required me to think about how to
recover from failure for every bit of code by using ACID transactions.
Along with designing the robust systems which process millions of
transactions I am interested the user interface to these systems. I am
interested in and have have experience developing non technical user Web
Applications to allow the configuration of these systems. I am also
interested in how technical users can monitor and administer the system by
creating meaningful logs, metrics and management interfaces.
I am also interested and have a lot of success in tuning performance
issues and troubleshooting bugs in these distributed systems.
I have knowledge in both Network and Application level security. I have
knowledge and experience in securely configuring and designing networks,
network servers, services and firewalls. I have implemented scalable
solutions which defend against network attacks at connection level as well
as deal with deep content scanning.
At the application level I am familiar with methods for identifying and
patching security issues. I am familiar with low level software security
issues like Format String and Buffer Overflow
Cryptography and the math behind it is also interesting to me. I have
implemented STARTTLS on mail servers and have a deep understanding of
Private/Public key encryption schemes.
OpenRISC, Linux and Open Source
As a computer engineer I have a background in both hardware and software
engineering. As my day job is mainly high level systems programming I keep
my hardware knowledge sharp by contributing to open source projects.
I am currently the Linux kernel maintainer for the OpenRISC
architecture. My experience working on OpenRISC and the Linux kernel since
2016 has allowed me to work with excellent people and code bases.
As maintainer I have worked to develop, cleanup, review and test Linux
patchsets for the OpenRISC architecture. This activity has also allowed me
to work on and improve OpenRISC on so many other systems including GDB,
GCC, OpenOCD and QEMU.
Networking & Administration
I administer several machine as simply a part of software development
and ensure they all run smoothly and can synchronise and backup their
settings and other information over a LAN. I write many shell scripts &
C programs to help with this - as well as know how to configure all the
services on my systems (dhcp, dns, apache, mail, users etc.)
I have hobbies of guitar, rock climbing, skateboarding and coffee. I can speak
Mandarin Chinese conversationally, Japanese conversationally and get by with German.
I enjoy speaking and learning foreign languages, as well as travel.
SMBC Nikko - August 2018 - Now (Tokyo, Japan)
- Work on Algo Trading Platform
OpenRISC Project Maintainer - July 2017 - Now
- Update and maintain the OpenRISC CPU architecture specification
- Attend conferences and speak about the benefits of open source chip design and OpenRISC
- Rewrote from scratch and maintain the OpenRISC GCC compiler port
- Upstreamed and maintain the OpenRISC GDB debugger port
- Maintain the OpenRISC Linux Kernel architecture port
- Maintain the OpenRISC linker and assembler architecture port
- Maintain the OpenRISC QEMU simulator port
Morgan Stanley Software Engineer - December 2006 - August 2018 (Tokyo, Japan)
- Work on Morgan Stanley's Straight Through Processing (STP) infrastructure
- Design and Implement mission critical financial solutions, using MQ, Sybase, DB2, Java and other distributed system technologies
- (2008~2009) Designed and Implemented from the ground up Morgan Stanley's JASDEC pre settlement matching system gateway and translation layer. Technologies used include: Sybase, Java, MQ, Spring, NIO, TCP/IP
- (2010) Designed and Implemented from the ground up Morgan Stanley's Omgeo CTM (now DTCC) gateway and translation layer used for Equity and Bond business. Technologies used include: Sybase, Java, MQ, Spring, Hibernate
- (2012~2015) Designed and Implemented from the ground up Morgan Stanley's renovated Official Client Statements system which generates more than 150,000 monthly statements replacing a 30 year old mainframe system. Technologies used include: DB2, Java, MQ, Spring, String-Batch, Hibernate, REST, Json, iText, PDF, AngularJS.
- Technology lead implementing best practices for SDLC including mainting build and release tools, Jenkins continuous integration and advocating migration from Perforce to git
- Infrastructure lead managing and performing host and OS upgrades and migrations, building plant monitoring tooling, work on plant alert reductions and capacity planning
- Work with network infrastructure team to configure external connectivity for above listed implementations including setting up iptables and cisco border router nat rules
- For all projects I am required to communicate closely with business users as well as other IT teams to gather requirements and coordinate integrations
- Gained detailed knowledge of financial products including: stocks, bonds, margin trading, stock lending, futures, options, fx, fx options
SurfControl plc Engineering Manager - July 2004 - December 2006 (Beijing, China)
- Identified and delivered market requirements for email and network security solution
- Designed, developed and deployed email filter and security appliance platform with distributed computing abilities
- Managed engineering team with members in Australia, US, UK and Asia to successfully release numerous revisions of companies email security appliance
- Provide training and support to colleagues and partners on SurfControl's solutions and products
- Developed SurfControl's first available email server encrypted communication solution providing SMTP STARTTLS
- Developed SurfControl's first available email sender validation solution providing Sender Policy Framework (SPF)
- Integrated legacy software into Java based product using java native interface (JNI)
- Principal engineer responsible for the building and maintenance of SurfControl's customized, RedHat-based Linux distribution.
- Administered development servers including: Wiki, Mail, CVS, Daily Build, Automated Testing and Product Updates systems
MessageSoft Inc Software Engineer - Sept 2003 - July 2004 (San Jose, California - Beijing, China)
- Principal engineer responsible for the building and maintenance of MessageSoft's customized, RedHat-based Linux distribution.
- Provided on site support to Chinese customers with questions and requests for deployed products
- Developed automatically updating distributed RBL system based on djbdns technology
- Relocated from San Jose to China to pursue growing business opportunities
San Jose State University Teacher's Assistant - November 2002 - May 2003 (San Jose, California, USA)
- Managed computer research lab and taught students about microcomputer design and assembly programming and debugging
- Graded lab reports including assembly code and schematic diagrams
As an avid Linux and open source enthusiast. I have spent many years of my
free time administering home computers and learning the ins and outs of the
Linux OS kernel, file systems and general architecture.
Open Source Projects
I have been contributing to open source projects since university as a
means to keep learning and work with great people.
- OpenRISC [ Active ]- WWW
- Linux [ Active ]- WWW
- GDB [ Active ] - WWW
- QEMU [ Active ] - WWW
- Enlightenment - WWW
- Fedora Core - WWW
- Webmin - WWW
- 3D Graphics Library API - (Java)
- B+-Tree Based Magazine Index
- A.I. Enhanced Patient Status Monitor
- Wire Wrapped x86 Computer System using TTL Logic
- Wrote DMA Controller Using Verilog
- Designed XScale Based Streaming Multimedia Hardware
Available on request