Gabriel Perry

Gabriel Perry

Software Engineer

Software Engineer living in Boulder, Colorado, with 15+ years of experience in software development in multiple environments with a focus on web technologies. Strong analytic and problem solving skills, self-motivated, detail-oriented, creative, open-minded and friendly. Writing maintainable, readable and well-documented code is a passion.

[Download the PDF Version of my resume.]

Work Experience

Contract Software Engineer

Staples - Identity Management

Broomfield, CO

May 2017 - November 2017

I worked on the Identity Management (IdM) team helping them migrate functionality from their legacy platform (IBM's WebSphere Application Server) to a Microservices architecture for Staples.com using the following technologies and tools:

  • Typescript (Node.js, npm)
  • Express ("Iris-Lite" - a Staples wrapper built around the Express framework.)
  • JavaScript
  • Apache HTTP Server
  • Some Angular 4, Angular CLI
  • Jasmine Testing
  • Postman - a tool for developing/debugging/testing RESTful web services
  • Swagger
  • JIRA
  • Git and Bitbucket (for source control and code reviews)
  • IDEs: WebStorm and STS (Spring Tool Suite)
  • Java Microservices (Staples called their microservices platform "Nephos" which was modelled after the Netflix Stack), Spring Boot
  • Jenkins (for deployments and CI/CD)
  • Hardware: MacBook Pro
Show/Hide more Staples job details...

Software Engineer III

Trimble, Inc.

SketchUp - 3D Warehouse

Boulder, CO

February 2013 - November 2016

New feature and maintenance development for SketchUp's 3D Warehouse website. Main technologies used: JavaScript, Google Closure Tools, JavaScript Promises, JsUnit, HTML, CSS/Sass, Soy Templates, Python, and Git (SourceTree).

Development using a MacBook Pro, PyCharm IDE, and the Chrome web browser for most debugging tasks. Rietveld (for peer code reviews) and JIRA for issue and bug tracking.

Project Highlights:

Built a Search Results widget that managed all of the searches on the 3D Warehouse website. This widget was responsible for creating all of the backend search calls for the site as well as formatting and displaying search results on the site.

  • Different display modes were handled:
    • Infinite scroll – scrolling through search results automatically fetched and rendered more results on the page.
    • Pagination and Filmstrips.
  • AJAX-like calls were supported such that content could be loaded onto the page quickly and without having to reload the entire search results page.
  • Various sorting options were also supported.
  • Coded for various navigation scenarios such that users could find their previous position in the infinite scroll feed after visiting other pages. Special logic was used to handle web browser back/forward button click events. This made for a simple and intuitive user experience.

Built a Catalog Browser that allowed Building Product Manufactures (BPMs) to quickly search and see what's inside their online catalogs.

  • Content loaded dynamically based on user interactions with the widget and depicted a file-like hierarchy tree-view structure of the catalog data.
  • Utilized the web browser's local storage caching mechanism such that users didn't lose their place in the catalog when viewing content. Search results were cached and displayed too.
Show/Hide more SketchUp job details...

Business Application Developer

Convertis Marketing

Gunbarrel, CO

October 2008 - January 2013

Application/Web development, database administration, configuration/build management, and 24/7 production support for Boulder based Internet marketing company that sold vanity products online. Main technologies used: Java, Struts 1.2.8, Hibernate 3.1, JSPs, JUnit, JavaScript, Apache HTTP Server, Tomcat (5.5.35), MySQL, ANT, SVN, bash shell scripting, Linux, and the IntelliJ IDE.

Supported a Java based e-commerce system called "SoftSlate" which was comprised of Java, JSP, Struts (w/Tiles) and Hibernate. Responsible for maintenance and feature development of this online ordering system: client-side and backend administrator development.

  • Supported six (6) production servers and nineteen (19) SoftSlate instances/websites/databases and one (1) "dev" server/database.
  • Integrated new SoftSlate instances/builds with Convertis' "Central" server app (a Spring Batch application) which consolidated data from all SoftSlate instances into a single main database.
Show/Hide more Convertis job details...

Application Developer

Crispin, Porter + Bogusky

TextureMedia

Boulder, CO

October 2006 - October 2008

Application and web development for Boulder interactive agency for 1.5 years at TextureMedia and then 6 months for Crispin, Porter + Bogusky. TextureMedia was acquired by CP+B circa April 2008.

Technological Highlights: Java, Hibernate (light), JCatapult/Slingshot (an in-house proprietary-based Java web development platforms), JSP/HTML, JavaScript, JSON, Cactus/JUnit, POI-HSSF, MySQL, Perl, MS-Excel, Tomcat 5.x, ANT, Maven, CVS, and Subversion (SVN) on Windows.

Job Highlights:

  • Worked closely with interface developers, account managers, tech leads, and other application developers daily in all aspects of the development life-cycle.
  • Built web-based administrative tools for numerous client sites. All admins included (in some form) custom database queries, search results configuration and standard CRUD operations.
  • Utilized Texture's in-house proprietary Java action-based MVC-like framework called "Slingshot" for web development. Worked in many different versions of Slingshot depending on client needs.
  • Integrated Cactus such that Texture web-apps could be "functionally" tested - tested against a database.
  • Briefly used JCatapult - an open source Java platform for building web applications, which Texture was developing as a replacement for their Slingshot framework.
  • Helped maintenance team adopt JIRA issue tracking system. Helped fine-tune their maintenance team work flow process - bug tracking and feature requests.
Show/Hide more TextureMedia project details...

Software Engineer

DigitalGlobe

Longmont, CO

February 2004 - June 2006

Feature and maintenance programming using a test-driven development approach for DG's Customer Front End (CFE) team and Geospatial Commercial Operations using Java, JSPs, JSTL, Struts, JavaScript, JUnit, JSUnit and HttpUnit. Other technologies included:

  • XML: XSD, XSL, JDOM, XHTML, HTML, GML (Geography Markup Language)
  • EJB: Stateless Session Beans, MDBs, XDoclet
  • App Servers: OC4J (development), OAS (production), JBOSS (dev/prod)
  • APIs: Oracle Spatial, JTS (Java Topology Suite), Log4J
  • JMS: SonicMQ
  • Scripting Languages: Perl, bash, korn
  • Development Platform: Linux (Redhat Enterprise - WS 3) using IntelliJ's IDEA and JEdit
Show/Hide more DigitalGlobe project details...

Software Engineer

Time Warner

Interactive Video Group

MystroTV

Westminster, CO

2003

  • Refactored the server team's build system using Java, Ant, RPM, and bash shell scripting within a UNIX environment (Linux and Solaris).
  • Developed system tools for the Mystro app server using Java:
    • Created a component versioning system which enabled the server team, QA, and field ops to determine exactly which server components they had running on their system(s). This system also provided the means to effectively monitor software patches and track software bugs more efficiently.
    • Revamped the Mystro Settings Server code such that server settings pulled from multiple configuration files rather than from one monolithic file.
  • Coordinated the server team's release process to QA. Automated the server release build process which cut the procedure's run-time down from an hour to just over 10 minutes. Also, optimized the server team's nightly build system such that logging storage was reduced tenfold-times down from ~500KB each night to ~50KB.
  • Supported the server team's software development environment by performing numerous internal installations of the Mystro app server. Verified software upgrades. Compiled and edited release notes for each server component during each major release and/or patch to QA.
  • Provided technical support to test engineers and technical writers regarding the installation, configuration, and documentation of the Mystro app server. Authored an internal installation guide for the Mystro app server.

Additional Technologies

Technologies I've used over the years listed in no particular order:

  • Programming Languages: Java, Python, C, C++, perl, FORTRAN 77, RPG, Pascal, COBOL
  • Presentation/Browser Technologies: JavaScript, TypeScript, Google Closure, Knockout.js, JSON, XML, CSS, Sass, HTML, XHTML, JSPs, Java Servlets
  • Testing: JUnit, JsUnit, HttpUnit, Cactus, Jasmine, Selenium
  • MVC Web Frameworks: Struts (v1, v2), SlingShot, JCatapult
  • Database: Hibernate, SQL, MySQL, SQL*Plus, SQuireL, Oracle (CASE Methodology for DB Design), Sybase, PostGreSQL, MS-Access
  • Editors/IDEs: WebStorm, PyCharm, IntelliJ, STS, Eclipse, slickEdit, jEdit, Borland C++ (v5.02), MS-Visual C++ (v5)
  • Source Control: Git, BitBucket, GitHub, SourceTree, SVN, CVS, Perforce, CMSynergy
  • openssl: SSL certificate installation and some Apache configuration (light)
  • Operating Systems: Mac, Windows, Cygwin, Unix (Linux, Solaris), AS/400
  • UNIX Scripting Languages and Utils: bash, korn, t/csh
  • Build Utils: ANT, Maven, Savant, RPM (Red Hat Package Manager)
  • Numerical Computing: MatLab, Mathematica
  • GNU: gcc, gdb, make, vi, vim, gvim, emacs
  • GIS: Oracle Spatial, Grass, ArcInfo

Education

B.S., Computer Science (2003) - University of Colorado at Boulder

  • Dean's List
  • Member, Golden Key International Honor Society
  • Klaus D. & Jean L. Timmerhaus Scholarship Recipient, 2002

B.A., Psychology (1997) - Naropa University - Boulder, CO

  • Buddhist Psychology and Meditation
  • The Psychology of Health and Healing
  • Traditional Eastern Arts: T'ai Chi Chuan and Yoga
  • Music

Music - Berklee College of Music (1991-92) - Boston, MA

Personal

  • Played guitar with various bands and local musicians over the years with occasional performances and recording projects.
  • Teach private guitar lessons on/off since 1995. Teach various styles and levels of playing.
  • Wrote an eBook about music theory and improvisation for guitar players circa 2002-05.
  • I continue to write and record original guitar music and songs. Some of my material can be found on my SoundCloud page.

Internships and Early Years

University Jobs and Projects

University of Colorado

Boulder, CO

2001 - 2003

  • Computer Science Senior Project: Worked on team to design and implement Notification Server and Mock Online Bidding System for a local Boulder telecommunications company (SandCherry) using Java, Struts 1.x, Java Servlets, JSPs, XHTML, XML, Ant, and CVS.
  • Software Engineer: GUI programming for the Applied Math department's Mathematical Visualization Toolkit (MVT) using Java Swing.
  • Volunteer Java Teaching Assistant: Collaborated with instructor on the development of course content and assignments. Provided technical support to students regarding the Java programming language.
  • Volunteer Webmaster: Designed, implemented, and maintained a website for a Linear Algebra class for the Math Department using HTML.

Intern Engineer

AlphaTRAC, Inc.

Westminster, CO

2001

  • Supported two (2) operational real-time emergency response atmospheric dispersion modeling systems, CAPARS, using Java, C, C++, FORTRAN 77, and UNIX shell scripting. (See http://www.alphatrac.com/ for more details.)
  • Ported a new implementation of CAPARS from a Solaris to a Red Hat Linux environment.
  • Created a rainfall computation utility for RFETS (Rocky Flats Environmental Technology Site) using C and UNIX shell scripting.
  • Created base maps for RFETS, the Denver metro area, and a DOE (Department of Energy) site in Oak Ridge, Tennessee, using Grass, ArcInfo and C++.
  • Refactored the company's web site using HTML, JavaScript, The GIMP, and MS-Paint.

Intern Engineer

IBM

Gunbarrel, CO

2000

  • Web page development for an IBM internal website using HTML and JavaScript.
  • Supported the team's AS/400 testing environment.

Intern Engineer

Storage Technologies, Inc.

Louisville, CO

1997-1998

  • Designed, implemented and maintained an Asset Inventory system for the IT department using MS-Access and Oracle's CASE Methodology for database design.
  • Supported Data Warehouse team using COBOL, MS-Excel and MS-PowerPoint.
  • Participated in a team design for a Skills Assessment Reporting database for HR.

Software Developer

Advanced Management Research, Inc.

Albany, NY

1992-1994

  • My first professional experience working as a software developer.
  • Software engineering for a health claims adjudication system (CAPS - Claims Adjudication Processing System) using RPG and CL in an AS/400 environment.
  • Refactored the entire reporting system and menu screens for CAPS.