2933 Sunnystone Way
Raleigh, NC 27613
Email: jmm at sublogic.com
URL: http://www.sublogic.com/james/
Challenging software/database architect and development work, ideally on a corp-to-corp or 1099 basis. Work is best as primarily or wholly off-site. Prefer J2EE work on JBoss, Weblogic, or Tomcat, on Linux or Windows, with Oracle or PostgreSQL or MySQL. Linux systems development work also welcome. Companies in the Triangle area of North Carolina preferred if frequent on-site visits are required.
Software Design Engineer
Microsoft Corporation
December 2003-
Projects:
Senior Analyst
PharmaNet, Inc.
August 2002-December 2003
Projects:
Took over the tech lead of the 3.0 release of the flagship WebSys product, the first with Offline Use capability implemented with Oracle replication. Wrote PL/SQL synchronization and backup packages to hot backup existing running Oracle instance data to user's CD-RW drive reliably. (Oracle, Struts, Java, PL/SQL)
Created multi-stage test harness for driving server-side migration away from COM+/ASP/ADO towards J2EE/JSP/JDBC. Two separate database instances created and started at each run from restored cold backups. Installed/configured MaxQ to record and play back http transaction scripts, created a custom webapp to delegate the requests back to the COM and Java sides with necessary parameter and HTTP header rewriting.
Response contents compared with varying tiers of regular expressions applied. HTML status reports automatically generated for all steps of each run. Wrote fast (SQL MINUS based) database comparison script that optionally ran after each HTTP transaction that modified the database.
Test harness later modified to compare "gold standard" webapp versions against development versions to verify intended database and HTML changes, which each approved set of differences setting a new gold standard for the next set of changes.
Wrote perl programs to migrate data from the proprietary Soffront Track32 system into a Bugzilla 2.16.3 install. Script modified for the migration of several Track32 bug-tracking repositories. (Perl, bash, XML)
Led effort to migrate existing source code from the proprietary Microsoft Visual Source Safe database format into a CVS repository. Found available vss2cvs script, configured and ran it, noticed poor performance for large code bases, and patched for 10x run-time performance improvement (mass-fetch file history data in one run). Patch sent back to author. (Perl, VSS, CVS)
Joined the MaxQ development team to help implement enhancements and fixes to support web test script recording and playback for WebSys migration and ongoing testing.
Principal Engineer
Porivo
Technologies (acquired by Gomez, Inc August 2002)
August 2001-August 2002
Projects:
Established a Web Services framework and created a real-time encrypted and authenticated data feed mechanism to allow customers another route for fetching their peerReview data. After establishing this server-side framework and exporting the required SOAP-compatible services, created the first client as an integration package with the Unicenter product's Service Level Management package from Computer Associates. The tcl-based integration package was configured via GUI by the peerReview customer and polled Porivo services at a selected frequency for importing site performance and availability data. Example clients also created using Python with PyGTK and ZSI for SOAP support, and C#/.Net (Apache Axis/SOAP, Unicenter SLM, tclsoap, tcllib, tclxml, SOAP, HTTPS)
Created an alerting and ticket tracking system from scratch that detected customer-defined warning and critical events (such as 20% of clients seeing download times over 5 seconds, or 50% of clients having HTTP errors) and sent an email or page from Oracle with the associated relevant data attached. Sent alerts created a ticket associated with them, which customers could then login and check or change the status of the alert, add comments, etc. (Oracle Enterprise Manager, TOAD, PL/SQL stored procedures, Java stored procedures, Oracle packages dbms_job, utl_file, dbms_snapshot, dbms_refresh, utl_snmp)
Converted the entire backend from a sweepstakes-based system of tracking generated entries to a time and money tracking system that generates payments for each peer's online time, work processed, and referrals activated. Time and money totals are tracked on a daily, monthly, and lifetime basis. End-user peers are paid automatically by a monthly PL/SQL job sending to Paypal (OEM, TOAD, PL/SQL, Java stored procedures, dbms_job, dbms_snapshot, dbms_refresh, utl_file, utl_smtp)
Analysis and fix/redesign of bottleneck areas to improve overall system scalability. Data analysis on all machines (web, application, database) with detailed memory and performance analysis for our Oracle 8i on Solaris production databases. Analyses included both Oracle-internal "level 8" SQL trace files during normal and stress loads combined with operating-system memory and CPU information to track down poor performing areas. Example historical findings include poor table access patterns (with a resultant drop in database load by a factor of 14 with my fix included) and high-contention Oracle-internal latches for critical update-heavy tables resulting in poor scalability as most clients sat spin-locked on the same latch. (tkprof, SQL*Plus, itrprof, hotsos.com, solmemusage, sar, shell scripts)
Senior Software Engineer
Porivo Technologies
September 2000-August 2001
Projects:
Led a team of engineers in the creation of the Porivo extranet web applications including the critical peerReview customer graphing and reporting application. Created entire first version of reporting site utilizing a graphing applet from the Ptolemy project of UC-Berkeley. The applet was fed an XML data stream by a data-feed JSP that in turn used JDBC access to the backend Oracle database for fetching the graph's data values. Second-pass "full version" dropped Ptolemy in favor of PopChart Image Server Pro from Corda (after a research and evaluation phase for the best option). Introduced some initial JUnit-based unit tests to help provide testing without needing deployment of the full applications to our testing network. Phase 2 included a rewrite from scratch using J2EE methodologies, where JSP pages were backed by stateful (and some stateless) Session EJB beans and data persistence was handled primarily by CMP entity beans with some BMP beans for complex relationships since the EJB 2.0 spec was not available at the time. (J2EE, EJB, JSP, JDBC, PopChart, JUnit)
Joined the existing team of developers on the custom Porivo application server. Server uses XML messages over HTTP to communicate work/status/results with Porivo Peer testing agents. Fixed compliance with HTTP specification. Wrote a new intelligent database-connection pool built on top of Oracle's oracle.jdbc.pool.OracleConnectionCacheImpl. Pool included built-in performance tracking, dead connection reap/cleanup, and the ability to toggle on and off SQL and PL/SQL tracing at requested levels. Pool was generalized and abstracted to work for both the application server and as the DB interface for the Tomcat J2EE/JSP cluster. (JDBC, XML, SAX, DOM, HTTP)
Wrote a Swing GUI to replace an existing Macromedia Flash-based interface for the Porivo Peer web performance testing agent. The new interface increased integration, portability, and efficiency while synchronizing data access to Peer user statistics. Layout management and design created for maximal flexibility. GUI design also supported multiple simultaneously running project threads with each controlling their own visual display area. During migration of the codebase to another developer, did some work in eXtreme Programming including pair programming and the introduction of unit testing. (Java, J2SE, Swing, AWT, Action Events)
Performed systems admin tasks both on intra-office machines (workstations, testing, staging) and production machines. Tasks included security audits with upgrades and patches, firewall creation and configuration, network configuration (DHCP, router configuration), mail server configuration. Registered and tracked all 9 Red Hat Linux production machines using Red Hat Network. Created and configured a multi-site infrastructure-monitoring script that intelligently handled service problem/failure notifications by both email and pager, combined with configurable service restart scripts. Installed and configured application and operating system software. (Red Hat Linux, Debian GNU/Linux, Java (JVMs), Tomcat, JBoss, Orion, Corda PopChart Server Pro)
President, Lead Engineer
Sublogic, Inc.
April 1998-
Projects:
Hired by Janus' Intech division as a consultant to code a PHP-based/PostgreSQL-backed web application to replace the existing Microsoft Excel-based method of tracking and analyzing portfolio/fund/account performance data. Created scripts to allow data import from existing legacy systems. The system is targeted for use by investment analysts that use the performance data to drive investment choices. Extensive use of phppgadmin as an administrative interface for the database. Normal LAMP (Linux/Apache/MySQL/PHP) setup except the database was PostgreSQL to integrate with existing databases.
Work has included kernel fixes, driver porting, and some Beowulf-based clustering. Perl consulting has included record and DBI and database management and web-based CGI programs. Designed and architected web-based Oracle/J2EE solutions for local businesses. Designed and created Swing applet and application front-ends to existing custom processor tracing equipment.
Performance Development Software Engineer
IBM PC Server Performance Development
January 1997-September 2000
Projects:
Implemented code review and performance analysis of all department modeling software, resulting in speed improvements from 4x to 20x through memory-mapped I/O streaming (available at www.sublogic.com/james/libstream/) and algorithm rewrites.
Designed and implemented mod_perl web front-ends to previous RAID firmware trace analysis project (details at www.sublogic.com/james/autotrace/). Designed and implemented perl application for generation, tagging, and storage of processor bus trace metadata.
Ported an existing 2.2 device driver written by Donald Becker for the Packet Engines GNIC-II "Hamachi" gigabit ethernet card to the 2.3 development kernel. Major changes included porting to the new PCI resource interface and the new softnet interface. Patches submitted upstream to Jeff Garzik at MandrakeSoft who took over the driver.
Lead Systems and Network Administrator
IBM PC Server Performance Development
January 1996-September 2000
Projects:
Installed and configured Linux machines for benchmarking teams, including SpecWeb, TPC-W. System tuning for increased performance during benchmarks included SMP affinity, filesystem caching, Apache tuning, process limits, SCSI driver tuning.
Created and configured the main storage machines for the trace tool back-end long-term storage. Each machine had 4 64-bit 66 MHz hardware RAID controllers each exporting multiple RAID5 arrays. The hardware RAID5 arrays were then striped using the Linux kernel's software RAID0 support. Other configurations were tested for maximum data throughput while maintaining reliable storage.
Wrote perl-based CGI programs for database management and security administration. Installed, configured, and maintained multiple Apache web servers for web-based authentication of IBM Confidential data. Designed and implemented networks using Cisco Catalyst 5000 and Packet Engines Power Rail 1000 routers with SNMP monitoring and configuration. Central DHCP server configured for easier network management. Full Systems Administration of all RS/6000's (4-way PowerPC 604e's running AIX 4.3).
Administered department Windows NT 4.0 Server and Workstation machines. In charge of all department printing and file services. Designed and implemented Samba/SMB distributed filesystem network with nightly network backups. Head of the department Remote Access Program for encrypted extranet-based communications capability for telecommuters.
Real-time Trace Tool Development
IBM PC Server Performance Development
January 1996-January 1999
Projects:
Designed, simulated, tested and put into production use FPGA and PCB designs. Designs included both Verilog HDL (Hardware Description Language) and VHDL. Synthesis done using Synplify from Synplicity. Simulation done using Xilinx Design Manager. Hierarchical board (PCB) design done using Viewlogic's ViewDraw tool. Board routing done using p-cad and working with external design and fabrication supplier. Testing and production use included use for Agilent logic analyzers and Infinium digital oscilloscopes. Target ramdrive storage arrays supplied from Texas Memory Systems
Implemented a software system to extract the data out of the ramdrives. Provided TMS device driver fixes (DMA alignment issues) for both Windows and Linux. Wrote a custom data-streaming library and companion utilities (available at www.sublogic.com/james/libstream/) for the creation and management of the processor-bus traces generated by the trace tool hardware. Control of the process done with Expect and minicom scripts running over ethernet and RS-232C serial lines.
Senior AFS and AIX Systems and Network Administrator
IBM PC Design Tools Engineering
May 1995-December 1996
Projects:
2 AFS cells, 16 fileservers, 151 Gigabytes, 300+ clients. Designed all performance-intensive server-area networks. Used SNMP for server and network monitoring. Taught and supervised other administrators. Wrote perl for log and information processing/pruning. Wrote graphical window-driven perl/Tk-based tape backup programs. Webmaster of AFS-aware web server. Wrote perl and shell scripts for AFS administration jobs. Installed and configured new AFS clients (RS/6000, Sun). Installed, configured, tested new design tools and their license managers. Tech support for all problems including networking, AIX, and printers. Wrote AFS active project mirroring/restore programs. Created and managed a 100+ system LoadLeveler pool for chip design simulations. Used HP OpenView tool for network monitoring and administration.
Database: Oracle 8i/9i, DB2, PostgreSQL, MySQL, SQL, PL/SQL, Application development, web development, Benchmark tuning (TPC), Perl DBI, Java JDBC, SQL/J.
Java Technologies: J2EE, Apache Axis/SOAP, J2SE, VisualAge for Java, Together/J, JDeveloper, UML, Rational Rose, NetBeans, JSP 1.1/1.2, Servlets 2.2/2.3, EJB 1.1/2.0 (Entity, Session, MessageDriven), JDBC 2.0/3.0, XML 1.0, JavaBeans, Swing, JAAS, JSSE, JCE, COMM, IDL, CORBA/RMI-IIOP, RMI.
XML Technologies: SOAP, JAXP, jDOM, XSL, XSLT, XT, Web Services, SAX, DOM.
Computer Languages: Java, UML, PL/SQL, SQL, XML, TCL, Perl, Python, C, C++, HTML, JavaScript, PHP.
Operating Systems: Linux (Red Hat, Debian), Windows 95/98/ME/NT/2000, Solaris/SunOS, HP-UX, AIX, OS/2.
Networking: TCP/IP, MyriNet, GigaNet, SNMP, DHCP, BOOTP, Sockets, HTTP, HTTPS/SSL, OSPF, RIP.
Certifications: Sun Certified Programmer for Java 2 Platform.
Hardware Design Tools: Synplicity Synplify, ModelSim V-System, Xilinx Design Manager, Xilinx Floor Planner, Viewlogic ViewSim, Viewlogic ViewDraw, Allegro PCB place/route, Cadence suite.
Hardware Design Methodologies: Verilog, VHDL, Schematic Capture, Hierarchical Schematic, HDL/Schematic Hybrid.
Microarchitecture: back-end compiler design, in-order superscalar, out-of-order superscalar, VLIW, EPIC, trace cache, multi-processor core, MSI/MESI cache consistency protocols, Origin/Dragon protocols, hardware-based profiling, cycle-based modeling.
Bus Signaling and Protocols: PCI, GTL+, EV6, Profusion, RISCTrace, Microchannel.
Certifications: Certified EIT - registered with NC Board of Examiners.
Overall GPA: 3.93 out of 4.0
Subjects: ECE 460 Digital Systems Interfacing, ECE 520 Digital ASIC Design, ECE 521 Computer Design and Architecture, ECE 592 Advanced Computer Microarchitecture, ECE 713 Digital Signal Processing, ECE 733 Physical Digital Electronics, ECE 744 Design of Electronic Packaging and Interconnects, ECE 743 High Performance Multicomputer Architecture, ECE 746 VLSI Design, ECE 748 Parallel Processing, ECE 791C Special Topics in Back-end Compiler Design.
GPA in Major: 3.98 out of 4.0
Sean McRae Senior Analyst, PharmaNet, Inc. Email: smcrae at pharmanet.com | |
Rob Steele Senior Analyst, PharmaNet, Inc. Email: rsteele at pharmanet.com | |
Buddy Brewer Senior Software Engineer, Gomez, Inc. Email: buddy at buddybrewer.com | |
Ryan Breen Principal Engineer, Gomez, Inc. Email: ryan at ryanbreen.com | |
C. McCord Lead Systems Engineer, President, AdaptiCom, Inc. Email: mccord at adapti.com | |
Daniel Colglazier Performance Modeling, IBM PC Server Performance Email: colglaz at us.ibm.com | |
Dale Rohrer Oracle Performance Consulting, Oracle Email: dale.rohrer at oracle.com |