Architect/developer Resume
San, JosE
TECHNICAL SKILLS:
Technology and Tools: Java 15+ years Spring 4+ years J2EE (JMS, EJB, etc) 10+ years Hibernate 3+ years RDBMS / SQL 20+ years (Oracle and Sybase) SOAP/Rest 5+ years Hadoop, Map/Reduce, Hbase 2+ years Agile 2+ years
PROFESSIONAL EXPERIENCE:
Confidential, San Jose
Architect/Developer
Technology: Java, Spring, Hibernate, Oracle, Hadoop(Mapr), Hbase, Map/Reduce, JBoss, Agile
Responsibilities:
- General enhancements to the Confidential application suite. This multi - server set runs in JBoss containers and is written in Java using Spring and Hibernate. Integrated a new container into the suite to be the endpoint for Advanced Search and download capability.
- Led the platform team on the Hadoop spearhead project to leverage data collected since 2008. The application allows comparative analysis of a particular company’s sales compensation data against the industry norms. Through this analysis a company can adjust incentives and improve productivity.
- SQL like query capability was built on top map reduce technology to allow easy manipulation of the data without having to write custom map reduce jobs. At the time products such as Spark SQL weren't easily capable of providing the required functionality and integration into Confidential ’s production environment. The framework allows for common activities as GroupBy or Joins to be performed by specifying column names as identified header files. The output is similar data and header files to be used in subsequent operations. Utilizing oozie, the framework allows complex workflows to be put together and executed to generate various metrics.
- A JBoss server acted as the manager of the multiple workflow processes. This container managed the schedule, status and job statistics related to the multiple processes with REST APIs as the primary interaction. These APIs allow Nagios alerts to be written by operations to monitor the system.
Confidential, San Jose
Architect /Developer
Technology: Java, Spring, Hibernate, MySQL, Apache MQ, Hadoop(Cloudera), Hbase, Map/Reduce, Memcache, Agile
Responsibilities:
- Implemented trigger based email dispatching leveraging Hadoop. Outbound emails can be automatically triggered based on either changes to contact lists or external events such as the opening of other emails. Events are captured at the system endpoint and submitted to the evaluator via MQ. The desired “rule” for triggering such emails is maintained in a SQL database and evaluated as a complex Hive query to determine if the existing set of changes or events should trigger outbound emails. A subsequent map/reduce job examines the triggered events and organizes them in such a way to interact with the core workflow of the system to initiate the outbound emails. As part of the job execution framework a control component was built to only allow one instance of the job to run per organization to avoid any data contention. The reason for Hadoop was to support the eventual expansion of billions of contacts receiving emails.
- Implemented conditional content blocks within email messages. Keywords identify conditional content blocks and also specify the corresponding rule that when evaluated to true allow the block to exist in the outbound email. Implemented a ConditionalContentEvaluator with the ability to evaluate rules using a hive query syntax based on three distinct types of input: matrix of input values, output of map-reduce job and set of contacts. Each type of input serves a different functional purpose such as preview capability when authoring email content. Downstream map-reduce jobs were augmented to support multiple inputs including the rule results as one of them to generate a full outbound contact list with evaluated rules to generate emails.
Confidential, Mountain View.
Contract Software Developer
Technology: Java, Spring, Hibernate, Oracle, Solr, Memcache
Responsibilities:
- Implemented an ipAddress whitelist that is usually straightforward except when the Netscalar load balancer replaces the client ipAddress with its own. To resolve the issue I had to inject my own AuthenticationDetailsSource that creates an extension of WebAuthenticationDetails object containing the client ipAddress from the request header. It shouldn’t have been this difficult but there’s no setRemoteAddress method on the WebAuthenticationDetails.
- Implemented a record throttler to buffer high-speed incoming messages until either a time or volume based threshold is reached. As part of the control system numerous JMX attributes are available to alter control aspects dynamically and to report statistical data. Interim records are stored in a distributed memcache implementation.
- A short project was to enhance the core search code to utilize hibernate aliases and allow for multi-level entity search constraints where previously only a single level was implemented. Older code assumed a one level style of “parent.child.field” but now it is possible to query fields of nested objects such as “parent1.parent.child.field”. The complexity existed in upgrading the expression tree classes to support alias substitution where none previously existed. A part of this project was to also allow multi-level entities to be flatted into a singular Solr Document for searching. Enhanced the existing Hibernate Interceptor to look for specific tags that indicated such a structure.
Confidential, San Jose
Contract Software Developer
Technology: Java, Oracle, JSON, Spring, Proprietary Data Access Layer
Responsibilities:
- New development is desired to be done in Spring but integrate with legacy code including the DB persistence mechanism that required startup hooks. Additional complexity was that both frameworks have their own servlet dispatching mechanism including input stream processors, dispatcher servlet and commands. Through heavy use of Spring interceptors both frameworks are able to co-exist. Within the interceptors additional data required from the request object was pulled and put into legacy data structures for downstream use.
- Implemented a spring based Vehicle Identification Number Decoding REST Service. The service takes a VIN and retrieves detailed information about an automobiles Make, Model, Style and DriveTrain from an Oracle database. The service itself has the ability to be co-located within the same JVM or remotely without impact to the client code through the use of a ServiceProvider. The ServiceProvider is a spring component that contains hooks to both the local implementation and a proxy implementation of the service. The proxy implementation uses a REST protocol to communicate to the actual implementation using the RestTemplate to forward the request and handle any exceptions. Exceptions occurring on the remote server side are wrapped and transported back, unwrapped and thrown back to the client to handle.
Confidential, San Jose
Architect/Developer
Technology: Java, EJB, JMS, XML, Oracle, JBoss 3.X, Apache Tomcat, SOAP, Axis, UML, JSON
Responsibilities:
- General kernel development including the dataflow container, ports, composite components and Genesis virtual machine lifecycle.
- Implemented the ability to allow Java scriptlets within the model to allow custom programming without having to modify the core engine.
- Implemented a generic configuration user interface, using javascript, allowing for the setting of properties and port data handlers. As part of this generic user interface, a protocol was developed that transforms our internal value objects into JSON including type information.
Confidential, New Jersey
Contractor Software Developer
Responsibilities:
- Consulting engagements included both platform and application development in C++ and Java, typically with a Sybase backend. Most engagements focused on Risk Management systems and leveraged object-oriented development techniques to accomplish business goals. The work occurred at such institutions as Confidential, Confidential, Confidential, Confidential, Confidential and Confidential .
