Mitchell J. Friedman
11956 SW 34th Ave., Portland, Or. 973219
http://philmcrew.com/mjf.html
mjf@philmcrew.com
http://philmcrew.com/mjfresumefaq.html  doc  pdf
http://www.linkedin.com/in/mitchelljfriedman
Objective Lead Programmer, Software Architect, Data Architect, Senior Software Engineer
Languages Current: Java, SQL, HTML, BASH
Previously: C++, C, Delphi Pascal, PHP, PERL, ColdFusion, TAL, SCOBOL, BASIC, 8088 Macro Assembler, COBOL, Pascal, ADA, Scheme, Fortran.
DBMS MySQL, Microsoft SQL Server, Oracle, PostgreSQL, DB2, Sybase, Enscribe
Platforms Linux, VMware, J2EE (JBoss), Windows, Sun Solaris, HP-UX, Windows NT, Tandem Guardian, MS-DOS.

Work experience

iovation - Portland, Oregon
July 2011 - . Senior Software Engineer

Java, SQL, JUnit, REST

Tripwire, Inc. - Portland, Oregon
January 2008 - June 2011. Senior Software Engineer

Java, SQL, XML, VMware, JDBC, SQL Server/MySQL/Oracle/DB2, Bazaar/Subversion, RabbitMQ/Rest/SOAP/RMI, Gradle/Ant, JUnit/TestNG/Hamcrest/Mockito, ProtoBuf, Guava/Apache Jakarta, Scrum, TWiki, Windows/Ubuntu, GWT, Intellij. 40+ people including core and UI developers, QA, Performance, Product and Project Managers.

Worked on Tripwire Enterprise (TE), the flagship product. The TE codebase consisted of locally built implementations for handling SQL (on 3 back ends) and XML and Web UI as well as local utility libraries. It was lightly documented and over seven years old. TE supported change monitoring and compliance on multiple databases, servers and protocols and so completely mastering and understanding its usage required a person be a one-person IT department. The database schema itself was organically grown with no DBA and vaguely object-oriented, but with no referential integrity. TE projects ran simultaneously using scrum teams and sprints, with a team of UI and core and QA resources - typically with a hardening cycle at the end.

For TE I participated as a core developer on multiple projects through 4 major released versions in three years. I was lead developer on a small team that added DB2 monitoring support. I was the core developer charged with solving an auditing usability and performance problem. I worked on a team integrating TE with Tripwire's centralized logging product (TLC) as well as another team on automating remediation.

I was also the core developer on two exploratory projects released as free VMware tools. Config Checker a VMware ESX security configuration validator and Ops Checker, a VMware VMotion readiness utility. These were each a stand-alone utility built on Swing. Config Checker was downloaded and used by thousands. Ops Checker was more specialized and was downloaded by just under 1000. Both helped drive development and generate sales leads.

To cope with the complexities of supporting TE, a new component architecture was created and new features were implemented with that architecture in mind. I was a core developer building the first new component, the Asset Manager component. RabbitMQ with ProtoBuf became the communications layer and we depended heavily on Google's Guava and Injection libraries (and GWT) as well as Apache Jakarta project libraries.

The last project I worked on at Tripwire was Tripwire's first Data Warehouse project and made use of my strengths in database work in general and the TE schema in particular. I was part of a small team that researched how to build a Data Warehouse, created the star schemas and developed the initial reports. We hand-built an Extract/Transform/Load process that nearing the end of initial work was achieving in the vicinity of 2000 tps. Much of the complexity of building this project was due to the difficulty of working with the TE schema. I worked very closely with both QA and performance groups to ensure both accuracy and efficiency of the ETL process.

I consider documentation, especially of a large and complicated code base, a large part of the job. To this end I created and maintained at least 100 new wiki pages on trouble-shooting and extending TE, development at Tripwire in general and on specific technologies. In particular I became the expert on the TE schema. I created and maintained documentation of the schema - with information on each table and column, the object relationships between the tables, a mapping between the classes and the tables and surprising gotchas and sample queries as well as the foreign keys. The foreign keys themselves were a bit of a challenge in that without referential integrity, consistent naming conventions or sample queries, the foreign keys had to be pulled from the source code itself.

uXcomm - Beaverton, Oregon
June 2006 - December 2007. Principal Software Engineer
VMware ESX Optimization and Management: VMware, C, C++, Delphi Pascal, C#, SQL, Java, Bash, Subversion, nant, wiki. 10+ person project.
Workflow Engine: Java, SNMP, Subversion, Eclipse, Wiki, HSQLDB, JUnit, Bash, Batch, XML, SOA, SQL, IPMI, CIM/WBEM. 20+ person project.

CNN Internet Technologies - Atlanta, Georgia
October 2005 - May 2006. Expert Java Developer
Contract. Research/Prototype investigating Internet RSS feeds, front-end (Java, Swing), back-end (Java, RSS, Oracle). Idea, JDBC, SQL, CVS, JUnit, Ant, Linux, BASH, JGraph, Curn, Media Wiki, Oracle. Four developer project. Initial prototype system intended to handle 100,000 documents a day. Current system has handled over 300,000 documents a day from 25,000+ sources.

Matrix Resources - Atlanta, Georgia
April 2005 - October 2005. Contract Software Developer for Intercontinental Hotels
Continue development and extension of a Visual Flow Engine, front-end (Java, JGroups, Swing, TreeCache, JGraph), back-end (Java, JBoss, J2EE, Hibernate, PostgreSQL, Linux, Jython, SAS, BASH, ExtenXLS, POI, Jaccess, JMX, JMX). Idea, JDBC, SQL, CVS, JUnit, Ant, Apache, Microsoft SQL Server, MySQL, Media Wiki, Oracle, JMX. Four developer project. 500 million row database.

nuBridges, LLC. - Atlanta, Georgia
May 2001-March 2005 - Lead Architect, Lead Programmer, Chief Software Architect

Conceived, designed (using RUP, Visio and Enterprise Architect) and implemented next generation electronic commerce system on a distributed platform, delivered as hardware. Part of the original founding group that brainstormed new ideas (Electronic Commerce Appliance, Remote Integration, Profiling, Business Activity Monitoring), wrote business plans, formed a team and then a company, selected markets and hardware and software and infrastructure and then as Chief Software Architect and Lead Programmer, brought several products to market. Java (JDBC, JMS, MDB, JBoss, J2EE, EJB, Web Services, SOAP), SQL (PostgreSQL, Microsoft SQL Server, MySQL, DB2), Linux, BASH, PHP.

20 Development project at peak. Completed 15 version/releases in 3 years and delivered 13. Java (IDEA, JDBC, JMS, MDB, JBoss, EJB), SQL (PostgreSQL, Microsoft SQL Server, MySQL, DB2), Web Services (SOAP), Linux, BASH, PHP, IDEA, TWiki, BugZilla, CVS, RUP, Enterprise Architect. Designed or participated in design of 400+ database tables across 10+ subject areas across 20+ Services. Proved small footprint system out to a minimum sustained 1 tps.

Built Profiling/Notification system in java using nmap, arping, smbclient, ftp, slocate, sax and jdbc. Designed schema in PostgreSQL, to hold profiling, notification subscriptions. Supported databases using java JDBC included Microsoft SQl Server both with standard driver and open source freetds driver(changes submitted), PostgreSQL (submitted changes to open source Postgres JDBC driver), MySQL and DB2. Notifications were delivered as email or jabber from java. The Profiling system made use of Event, scheduling and notification systems written in java, jms, jdbc and SOAP. These systems were eventually converted to a more formal SOA using EJB.

Built remote appliance capabilities to support a small footprint electronic commerce appliance for use at small to medium sized companies. This included the idea of provisioning where the box would come for the first time at a customer site - so required a certain amount of profiling and hardening of the box's initial environment in a mixture of java and bash. The remote appliance connected to a mother appliance via SOAP, and the mother appliance connected to the remote appliance via SOAP as well over a SSH tunnel. Tracking and monitoring of the remote appliance by the mother appliance, including heartbeats, probes and updates, reused the event, scheduling and notification systems of the profiling system. I designed and implemented much of the appliance/mother system. I also created a set of logging and trouble-shooting subsystems to make multiple appliances easier to manage (HTML, PHP, Java, LOG4J, BASH, sed, awk, cron).

A later version of the electronic commerce appliance included community management capabilities which required much greater portal access. This was implemented in JSP with struts using EJB's (stateless session beans) and Hibernate. I was part of a team that converted the earlier code to stateless session beans and Hibernate. At the same time, Tomcat and JBoss was upgraded, the JMS usage was converted to MDB's, and the services themselves converted to a SOA implemented as stateless session beans. Also at this point initial investigation and implementation was performed using JMX and to a lesser extent JCA and JAAS.

Harbinger - Atlanta, Georgia
Feb 1988-May 2001 - Softare Architect, Technical Lead, Project Lead, Senior Software Engineer, Software Development Manager, Software Engineer
June 2000 -   Peregrine Systems   acquired Harbinger Corporation
2002 - Peregrine Systems divested unit, became   Inovis  

In 13 years at Harbinger, I worked for 7 different groups, performing a multitude of roles - starting with Software Engineer and ending with Software Architect with stints as a Software Development Manager and several as Project Lead. At the beginning of my time, Harbinger was a 17 person startup - which eventually became 1100 people (300 at the main site in Atlanta) and went public, before being acquired by Peregrine 12 years later.

My last role at Harbinger was as the Software Architect leading the design of a next generation cross-platform EDI platform using Java (with Rose, RUP, BEA, Oracle, Perforce). The intention of this project was to finally combine in one offering a single code-base that would support client and service, small and large customers - using the knowledge and experience gained after much internal development as well as many acquistions.

Initially I was part of, and then managed an 8 person team responsible for a DOS based EDI client (using CWorthy), C, with light assembler, Btrieve, thru five versions. It also included the creation of an interpreted response rule language for transforming EDI documents.

I then joined the services group as a senior engineer, where I supported high-availablity, mission critical applications as part of the Harbinger EDI Value-Added Network. This involved creation of an evolving high-volume event-oriented system on Tandem, including the creation of a server structure framework to support rapid creation of pipelining special service daemons. While with this group, I was responsible for bring C and SQL to the group, porting of Sun's Open Network Computing RPC (ONC RPC) to the Tandem and the initial transition to Sun from Tandem.

At that point I joined an internal startup - Harbinger Net Services - charged with bringing Harbinger on to the Internet. This work included Business Plans, Product Plans, initial investigation, interviewing and hiring, and transition to C++. Included NT and Sun development, initial work with C++ class library RogueWave, and beginning of Instant Net Presence project. Initial Harbinger web site developed. Initial blender development - an interpretative cross-platform language to support html with embedded logic, database and connectivity code. Creation of Web Registration Service, designed to semi-automatically register web sites - never launched - but became the library kernel for all later products and projects. Creation of internal Intranet web site.

After several projects related to HNS, I became the lead on the project to port our proprietary Electronic Document Interchange (EDI) Value-Added Network (VAN) from Tandem to cross-platform open-standards implementation, including movement of all customers (40,000+). Analysis, planning and design of the cross-platform UNIX based IVAS as a complete replacement for the Tandem based VAN. Standardize/Redesign of Internet Value Added Service as well as port to NT. Extension of framework from earlier Internet based client/server products to fully cross-platform reusable daemon/service syslog/eventlog configuration file/registry native framework available on NT, HP, Sun. Also included the organization of classes written for other products and platforms into libraries such as general, database, networking, cryptography and so forth. Coaching of programming staff through C to C++ transition. Twenty developer project.

One other project of note wwas the creation of the transaction portal external and internal web-site for get2connect.net for which I was Technical Lead. Anything and everything to get this site going and make it a success from formatting html pages, to writing book reviews, editing as well as creating standards content. Included learning ColdFusion, creating and implementation of a full authorization system. Setting style guides. A tremendous amount of database analysis and reengineering, as well as conception and creation of several hundred pages of internal support screens. ColdFusion, SQL, HTML, C++. Fifteen developer project.


National Financial Computer Systems, Inc. - Snellville, Georgia
Dec 1986 - Jan 1988 Software Engineer

Responsible for the improvement, maintenance and enhancement of the company's BANCStar software. Also charged with the creation and design of related utilities. Enhancements of the BANCStar generator included the creation of a facility that displayed annotations to go along with the view of the obscure raw BANCStar language. DOS, Compiled BASIC, 8088 Assembler, C.

Certifications

May 2000  Certified ColdFusion Developer

Education

June 2007  VMware Infastructure 3: Install and Configure
Nov 2002  Software Architecture Workshop
Sept 2000  Requirements Management with Use Cases
July 2000  Rational Unified Process Fundamentals
Nov 1999  Advanced ColdFusion Development
June 1999  FastTrack to ColdFusion
Nov 1996  Bruce Eckel - Thinking in C++

Georgia State University - Atlanta, Georgia
B. S. Computer Science, minor Mathematics, 1998
B. S. Psychology, minor Computer Information Systems, 1988

Awards

1998 Nominated and Appointed - Senior, Member Technical, Staff

1996 Nominated and Appointed - Member Technical, Staff

1983 National Merit Scholarship Finalist
1983-1988 Phillip Morris Scholarship Recipient

Professional memberships

ACM - Association for Computing Machinery
IASA International Association of Software Architects
Internet Society

Harbinger Alumni Group - Founder/Co-Owner - http://groups.yahoo.com/group/harbingeralumni

1989-1994 ASC X12 - EDI Standards Committee - voting representative.
1994 ASC X12C -TG1 EDI Communications Sub-Committee - Co-Chair

Writings Oct 2003 - Patent Submission Abstract - Secure Real-time Virtual Peer-to-Peer
http://philmcrew.com/nuBridges_vp2p.pdf


Jan 1996 - Blender - an early C++ based alternative to PHP, JSP -
http://philmcrew.com/BlendThenServe.pdf
Interests and activities   Bibliophile . Acoustic Guitar. Hiking