Current status:

Currently not looking for a job.

Last updated on 30 September 2014

Printer icon Right-click here and select "Save target as" to download a printer-friendly PDF version of this résumé.


Online Résumé


Alexander Y.C. Yap
Email : alexycyap@hotmail.com
Phone : 0408336017
Blog : http://penguinman-techtalk.blogspot.com.au/
Twitter : @alexycyap
Location : Melbourne, Victoria, Australia
Citizenship : Australian

Skills Summary

Summary of main technical skills :

  • Certified ScrumMaster
  • Agile Metholodogy : Since 2005
  • Scala : Since 2013
  • Android : Since 2010
  • Groovy : Since 2009
  • Ruby on Rails : Since 2008
  • Web 2.0 AJAX (DWR, GWT, jQuery) : Since 2006
  • Java EE (JSP, JSF, Struts, EJB 2.x & 3, Hibernate, etc) : Since 2001
  • Java SE (Swing/AWT, multithreading, JNI, JDBC etc) : Since 1998
  • HTML/XHTML, Javascript, DHTML & CSS : Since 1995
SCBCD Logo

Summary of other projects :


Work Experience: Consultant/Developer/Architect

Developer October 2008 - Present
Employer Sensis
Toggle details
Hide
Responsibilities
  • Worked on improving the search engine algorithms behind the Sensis® API. This API provided the data that drove the Yellow Pages and Whereis website/mobile apps, as well as various other Sensis products. Developed search quality assessment systems and Ontological concept analysis algorithms. Technologies used included:
    1. Angular JS
    2. Scalatra
    3. SOLR
    4. MongoDB
    5. Neo4J
  • Developed new functionalities for the Yellow Pages website, based on the following technology stack:
    1. Spring
    2. Hibernate
    3. Cucumber (testing)
    and integrated with the Sensis® API (JSON over HTTP).
  • Led Data Verification Testing teams of two major data migration projects, to ensure the proper conversion of customer data. They involved technologies such as Oracle SQL, BASH scripting, Ruby and Groovy.
  • Worked on a data-extraction program that accesses the Yellow Pages Oracle database and generates an XML file. This process is used to efficiently transfer gigabytes of data into external customers' systems. Database access is implemented using iBatis. This is being used in a project with Google to enable Google Maps access to Yellow Pages advertisements.
    Implemented an acceptance testing framework, based on JBehave, that allowed automated acceptance tests for the data-extraction program to be written in a clear and meaningful way.
  • Developed Web Services, using Apache CXF, to be accessed by external customers such as NineMSN.
    Set up an architecture for monitoring and graphing of runtime statistics of Web Services using Cacti.
  • Undertook an application support role to handle customer problems and resolve various production-time issues for the Yellow Pages online platform.
  • Implemented various system monitoring of the Yellow Pages online platform using Nagios to preemptively identify potential problems.
IT Consultant July 2007 - September 2008
Employer ThoughtWorks Australia
Toggle details
Hide
Responsibilities
  • Worked on an updated Web 2.0 travel website for members to contribute travel-related information, such as reviews of tourist attractions, and interact with other travelers. The application was based on a corporate service-oriented architecture consisting of the following technologies:
    1. Struts 2
    2. jQuery
    3. Hibernate
    4. Spring
    Automated builds and tests were implemented using :
    1. Bamboo
    2. a custom Java version of Story Runner
    3. Selenium
    4. JUnit & JSUnit
  • Implemented a Restful Web application, using Ruby on Rails 2, that allowed employees to apply for and manage their annual/personal leave.
  • Delivered a Restful Web application that allowed prospective students to search for and enquire about PhD research projects offered by the University of Sydney. Technologies used included Ruby on Rails 2 with plugins like:
    1. Active Scaffold,
    2. Acts As State Machine
    3. TinyMCE
    4. Whitelist
    Automated builds and testing were implemented using:
    1. RSpec
    2. Selenium RSelenese
    3. Cruise Control
    Mentored client developers on Agile Methodology practices such as test-driven development (TDD) and pair-programming.
  • Developed a Web application that enabled people to apply for credit cards from a bank, using Java Enterprise technologies like:
    1. Websphere Application Server
    2. SQL Server (stored procedures)
    3. Struts 2
    4. Hibernate 3
    5. Selenium
    6. EJB Timers
    7. Third party Java-based reporting framework
Senior J2EE Developer June 2006 - June 2007
Client Toll Solutions
Toggle details
Hide
Responsibilities
  • Developing in-house transportation management J2EE application based on the following technologies:
    1. AJAX based Web interface using Direct Web Remoting (DWR), as well as various other web-tier technologies like JSF (MyFaces), JSTL and NetUI.
    2. Persistence tier using iBatis to invoke stored procedures and SQL statements on an Oracle database.
    3. Integration with Oracle Transportation Management (OTM) by messaging via webMethods.
    4. Integration with Atlassian JIRA issue management system via Web Services.
  • Designed and implemented a database driven localization framework for the application. Localized parts of the application to Simplified Chinese.
  • Designed and implemented a generic job scheduling framework using Quartz.
  • Initiated and managing daily stand-up meetings to enable the development team to share knowledge and gain an overall understanding of the development effort. As a result, the team became more cohesive and focused, and more able to properly integrate the various sub-projects into a consistent whole.
  • Written Ant build script to allow deployment of the application to a remote WebLogic server to facilitate automated builds.
  • Set up Daisy Wiki for the team to easily document and share useful technical information such as HOWTOs, environmental configurations and design patterns. This dynamic sharing of knowledge was essential in keeping every member of the development team adequately informed of the "big picture" of the system as a whole.
  • Set up the infrastructure for automated building/integration and continuous unit testing, in line with current best-practice agile-based methodologies. This infrastructure enabled end-to-end integration testing that ensured that the code quality is maintained. Components used included :
    1. Ant + JUnit
    2. Anthill (integration server)
    3. PMD CPD (detecting any code duplication)
    4. EMMA (detecting code coverage of unit tests)
    5. Findbugs (detecting common coding mistakes)
  • Implemented a custom performance testing framework using JUnit to ensure that database performance remains consistent for different users. The database uses Oracle VPD to control access to data for specific users.
  • Reviewed and refactored existing code based on best-practice design patterns and a test driven mindset. Consequently, the code-base became easier to test, validate against requirements, accommodate new features and maintain.
  • Prototyped rich-client UI and business tier solutions using new technologies like Google Web Toolkit, Flex and EJB3. These technologies were integrated to provide functional prototype systems to assist the development team in deciding the best possible technology to adopt for future projects.
J2EE Contract Developer March 2006
Client 4LOOP
Toggle details
Hide
Responsibilities
  • Implemented customer change requests for an existing J2EE application based on JSP, Struts and EJB 2.x technologies, running on JBoss application server and Oracle database. Modified Struts actions and entity EJBs to cater for new work-flow/data.
  • Created Javascript libraries to deliver a richer and more user-friendly user interface to complement standard browser controls. In addition, Adobe Javascript was implemented ( via iText library ) to interact with Adobe Acrobat plugin to perform scripted actions such as automatic printer selection. Care was taken to ensure that an alternative PDF download functionality was provided to browsers that lack the Adobe plugin.
  • Developed a Swing applet to auto-detect printers on a client browser and communicate this information to the server.
  • In addition to software development, also installed a new Mandriva Linux operating system for 4LOOP's development support server (configured RAID-1 mirrored hard-drives, CVS, Postfix, Samba, etc.) to improve security and reliability.
J2EE Consultant October-December 2005
Client 4LOOP (for BearingPoint)
Toggle details
Hide
Responsibilities
  • Provided consultation services to support BearingPoint's developers in undertaking a large J2EE project for a major Australian corporation.
  • Set up the infrastructure for automated building/integration and continuous unit testing, in line with current best-practice agile-based methodologies. This infrastructure enabled end-to-end integration testing that ensured that developers produced quality code. Components used included:
    • Ant
    • Anthill (integration server)
    • JUnit + extensions (see below), DBUnit (unit testing)
    • Checkstyle (enforcing consistent coding standards)
    • PMD CPD (detecting any code duplication)
    • EMMA (detecting code coverage of unit tests)
    • Daisy (Wiki for online collaboration)
    • CVS
    The results from JUnit, Checkstyle, CPD and EMMA were automatically emailed to developers so that problems were made visible.
  • Developed a sample J2EE application to serve as a reference implementation for BearingPoint's developers. This sample application illustrated all the major components of the actual production system, consisting of:
    1. Web tier using Struts 1.2, JSTL, JSP/CSS/XHTML/Javascript and iText.
    2. Application tier using Session EJBs and Hibernate 3. XDoclet was used to tie everything together.
    3. Database tier with Oracle 9i.
    The application was deployed on WebLogic 8.1 application server.
  • Automated the creation of Hibernate POJOs from database schema using Middlegen and hbm2java.
  • Developed frameworks to support various types of unit tests:
    • JUnit remote test clients for testing session EJBs.
    • StrutsTestCase (mock objects approach) for testing Struts actions
    • Canoo WebTest for testing the final Web UI.
    • Web Service mock providers to test Web Service (SOAP) interfaces.
    • JMS mock consumers and producers to test messaging interfaces (over TIBCO EMS).
  • Solved problems with the usage of Hibernate, such as serialization of Hibernate POJOs with lazy-loaded relationships over the remote interfaces of session EJBs.
  • Developed a Swing applet that printed PDFs from file or URL using Smart JPrint. The applet provided features such as auto-printer detection and tray selection.
  • Provided mentoring and code review services to other developers to ensure that various J2EE technologies and design patterns were applied properly.
J2EE Contract Developer August-October 2005
Client 4LOOP
Toggle details
Details
Casual Developer/Tutor February-March 2005 (Developer) & August-October 2005 (Tutor)
Client Faculty of Engineering, RMIT, Melbourne
Toggle details
Details
J2EE Open-Source Developer 2005 - 2007
For CyberDemia Research & Services
Toggle details
Show
J2EE Contract Developer August 2004-July 2005
Client 4LOOP (for a large government organization)
Toggle details
Details
Java Swing Contract Developer May 2004-June 2004
Client 4LOOP (for Toyota Australia)
Toggle details
Details
Java Swing Contract Developer March 2004-May 2004
Client 4LOOP (for Australia Arrow Pty Ltd)
Toggle details
Details
J2EE Contract Developer February 2004
Client Internet Business Systems
Toggle details
Details
J2EE System Architect October 2003-January 2004
Client 4LOOP (for Software Engineering Australia)
Toggle details
Details
J2EE Contract Developer April 2003-October 2003
Client Space Time Research (STR)
Toggle details
Details
J2EE Consultant February-March 2003
Client Internet Business Systems
Toggle details
Details
J2EE Contract Developer February 2002 - January 2003
Client Space Time Research (STR)
Toggle details
Details
Java Contract Developer March 2001 - October 2001
Client 4LOOP (for Hewlett-Packard)
Toggle details
Details
Software Engineer October 2000 - March 2001
Employer Mainstream Computing
Toggle details
Details
Software Engineer December 1998 - October 2000
Employer Space Time Research (STR)
Toggle details
Details
Systems Programmer September 1997 - December 1998
Employer Swann Insurance (part of CGU)
Toggle details
Details

Work Experience: Other

Java Contract Tutor March 2002 - June 2002
Client Melbourne Institute of Technology (MIT)
Toggle details
Details
Lecturer March-June,1997
Employer Monash University (Caulfield & Peninsula)
Toggle details
Details
Tutor/Demonstrator March 1995 - February 1997
Employer Monash University (Caulfield & Peninsula)
Toggle details
Details

OTHER PROJECTS

In addition to my main jobs, I have also undertaken the following IT activities:


ACADEMIC ACHIEVEMENTS

IT certifications :
Machine Learning, from Coursera
Principles of Reactive Programming, from Coursera
Functional Programming Principles in Scala, by Martin Odersky, from Coursera
Certified ScrumMaster
Comptia Linux+
Sun Certified Business Component Developer for Java 2 Platform, Enterprise Edition 1.3
Sun Certified Programmer for Java 2 Platform 1.4
Tertiary qualification :
Bachelor of Engineering (Electrical & Computing)
(1st Class Honours), Monash University, 1994.
(Complete academic transcript will be provided on request.)
Postgraduate qualification :
PhD (Electrical & Computer Systems Engineering)
Monash University, 2003.
Thesis title: Application of a Genetic Algorithm for prediction of tertiary structures of peptide chains
Awards :

SKILLS & INTERESTS

Computing skills :

Other skills :

Personal Interests :

Personal Aspirations :


REFERENCES


REFERENCE LETTERS


Valid XHTML 1.0!
TOP