Work Experience
Senior Frontend Engineer
Full-time Remote Position
March 2021 - August 2023
Software development using Angular/Typescript for Cerity, an EIG technology group who provides an online workers compensation solution.
Technologies Used: Typescript, Angular 10/11, Nx, NgRx (v8), RxJS, Jasmine, Karma, Cypress, Angular Material, CSS/Sass, Jenkins. Dev Platform: MacBook Pro, Linux. Tools: IntelliJ, Chrome, Git, GitHub, Sourcetree, Jira, Slack, G-Suite, and Microsoft Teams.
- Performed a wide range of engineering tasks including design, new feature development, API integrations (Google Analytics, Braintree, Okta, One Inc.), software maintenance and test development for Cerity's Quote Buy Flow and Customer Portal Angular web applications.
- Operated in a fully remote capacity, using Agile and Scrum methodologies to effectively collaborate with development and testing teams, and business stakeholders located across the United States.
Project Highlights:
- Upon joining, I assumed the responsibilities normally held by two frontend developers. For the following year, I navigated solo in the realm of frontend work, swiftly coming up to speed, proactively having a positive impact on the team and product.
- I played a pivotal role in transitioning the frontend systems from Amazon Cognito to Okta.
- I assumed a central role in orchestrating the migration of Cerity's frontend payment system from Braintree to One Inc.
- Enhanced and restructured Cerity's insurance purchasing workflow, enabling precise payment tracking via Google Analytics.
Software Engineer
Westminster, CO
September 2018 - March 2021
Software development using Angular/Typescript for Camp Bow Wow, a leading doggy daycare and boarding franchise with 150+ locations across the United States.
Technologies Used: Typescript, Angular 6/7/8/9, NgRx, RxJS, Jasmine, Karma, Angular Flex Layout, Angular Material, CSS/Sass. Dev Platform: MacBook Pro, Linux. Tools: PhpStorm, WebStorm, Chrome, Git, BitBucket, Sourcetree, Insomnia, MySQL Workbench, and Jira.
- New feature and maintenance development in a highly collaborative, fast paced, agile environment.
- Significant system refactorizations and improvements: Payments, Invoices, Reports, internal libraries/utilities.
- Massive endpoint/API integrations/updates in support of significant database and endpoint/API upgrades. Removing NgRx layer and replacing it with direct backend API calls.
-
Advocated for the overall improvement of code quality, development
processes and (written) communication for the Frontend team.
- Designed a Typescript and Angular programming style-guide which was adopted by the Frontend development team.
- Advocated for and helped the team adopt regular code-reviews using Bitbucket.
- Encouraged the team to write more unit tests, especially for the tricky parts of the code.
- Worked with management to help refine their Agile/Scrum development life-cycle.
- Encouraged dev team to be more disciplined regarding code and process documentation as well as design specs/artifacts.
- Encouraged team to be better with their Jira and written communication: Tickets included proper specs, acceptance criteria, testing tips, etc.
Broomfield, CO
February 2018 - June 2018
Software development for Allscripts' Ambulatory Care (EIS) division. Development of an Electronic Health Records system called Paragon Clinician Hub (PCH). My work focused on a subset of PCH called Clinical Documentation or "Clin Doc", an app that helps doctors and clinicians take notes using specialized widgets called Observables when evaluating and assessing patients.
Technologies Used: JavaScript, JQuery, RequireJS, Kendo UI and Sass/CSS. Development in a Windows environment using Microsoft's Visual Studio, TFS (Team Foundation Server), IIS Express and WebStorm.
Contract Software Engineer
Broomfield, CO
May 2017 - November 2017
Software development for Staples' Identity Management, IdM group. Main focus was developing a middleware layer between an Angular frontend and a Java Microservices backend for a portion of their Staples.com domain using TypeScript, Jasmine and the Express framework.
I worked closely with a team of IdM backend Java developers and helped them get up to speed with Typescript, Node and the WebStorm IDE. I was also a strong advocate for Agile development processes (and testing) and consistently encouraged my team to apply more engineering discipline to their everyday development tasks, code-reviews and planning activities.
Technologies Used: TypeScript/JavaScript, Node.js, npm, Express, Angular 4, Angular CLI, Jasmine (testing), Java (Spring Boot) Microservices (Netflix OSS), Postman, Swagger, JIRA, Git, BitBucket, Jenkins (CI/CD), and WebStorm.
Software Engineer III
Boulder, CO
February 2013 - November 2016
Extensive feature and maintenance frontend development for SketchUp's 3D Warehouse using JavaScript and Google's Closure Tools. Built numerous GUI components with extensive API calls to the warehouse backend, DOM manipulation/creation tasks, etc.
Middleware development as well, which supported an API-call simulation layer which was instrumental when first developing the new 3D Warehouse when we didn't have a backend! Extensive unit-test coverage/development. Also, provided mentorship to new hires and junior developers.
Project Highlights:
-
Designed and implemented a Search Results component with support for:
- Query formulation, result-set and query management, advanced user navigation events, infinite-scroll, pagination and film-strips.
-
Widget/component and new feature development:
- Advanced Search page, a Catalog Browser feature, Advanced Search keyword operator support, a SearchBar widget, a SearchSaver Utility, a Site Header widget, and many other features too.
- Internationalization: string extractor/injector utility built in Python. Tool was used by all SketchUp development groups: SketchUp app, Layout, 3D Warehouse, Extensibility, etc.
Technologies Used: JavaScript, Google's Closure Tools, JsUnit, HTML, CSS/Sass, Soy Templates, Knockout.js (light), Python, PyCharm, Git, Sourcetree, Rietveld (for code reviews), and JIRA.
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.
Supported a Java based e-commerce system called "SoftSlate" comprised of Java, JSP, Struts (w/Tiles) and Hibernate. Responsible for maintenance and new feature development of this online ordering system: client-facing and site administrator pages.
Technologies Used: Java, Struts 1.2.8, Hibernate 3.1, JSPs, JUnit, JavaScript, Apache HTTP Server, Tomcat (5.5.35), MySQL, SQLyog, ANT, SVN, bash shell scripting, Linux, and the IntelliJ IDE.
- 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.
-
Admin development for the SoftSlate e-commerce system.
- Full CRUD development – Hibernate queries/mappings
- MySQL scripting and database administration (schema updates) for all SoftSlate instances/stores
- Server configuration: Tomcat, Apache, openssl, SSL certs, etc.
- Server administration: SoftSlate store setup, deployments, build management, etc.
- Developed internal wiki: Thoroughly documented company procedures, technical HOW-TO's, developer insights, etc.
- Order-flow fine-tuning/customizations, Campaign layout A/B split-testing, campaign configuration tools/settings, etc.
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.
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 main 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.
Technologies Used: Java, Hibernate (light), JCatapult/Slingshot (2 in-house proprietary Java web development platforms), JSP/HTML, JavaScript, JSON, Cactus/JUnit, POI-HSSF, MySQL, SQLyog, perl, MS-Excel, Tomcat 5.x, ANT, Maven, CVS, and Subversion (SVN) on Windows.
Longmont, CO
February 2004 - June 2006
New feature and maintenance development using a test-driven development approach for DG's Customer Front End team and Geospatial Commercial Operations group using Java, JSPs, JSTL, Struts, JavaScript, JUnit, JSUnit and HttpUnit.
Project Highlights:
- BrowseTool: Wrote extensive frontend and backend code to enable DG Service Reps to define spatial geometries (box-maker, circle-maker, corner-coords, direct coordinate entry) for customer order polygons.
-
Location Desktop: Extensive GIS spatial services
development.
- Geometry Validation Services - Supported formats: GML, Lat-Lon coordinate data, WKT (Well-known-text).
- Geolocation Services - Country codes derivation based on one or more specified spatial geometries.
- PP Stats: Designed and implemented a statistical reporting system for DG's Product Processors (PPs) using perl (heavy pattern matching and regex work) and cron scheduling.
- WAN Ingest: Designed and implemented a standalone Java app used to ingest raw satellite imagery from RGTs (Remote Ground Terminals) to DG's image archive.
Other Technologies Used: XML (XSD, XSL, JDOM, GML, XHTML), EJBs (Stateless Session Beans, MDBs, XDoclet), App Servers: OAS, OC4J & JBOSS, Oracle Spatial, JTS (Java Topology Suite), SonicMQ, perl, bash & korn shell scripting, Redhat Linux, IntelliJ.
Software Engineer
Westminster, CO
July 2003 - November 2003
Refactored the server team's build and deployment system using Java, Ant, RPM, and bash shell scripting within a UNIX environment (Linux and Solaris).
-
Developed system tools and a component versioning system for the
Mystro App Server using Java.
- Automated the server release build process which cut the procedure's run-time down from an hour to about 10 minutes.
- 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 said App Server.
Additional Technologies
Technologies I use and have 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, ES6, TypeScript, Google Closure, React, JSX, Angular, Express, Knockout.js, JSON, XML, CSS, Sass, HTML, XHTML, JSPs, Java Servlets
- Testing: Jasmine, Selenium, JUnit, JsUnit, HttpUnit, Cactus
- MVC Web Frameworks: Struts (v1, v2), SlingShot, JCatapult
- Database: Couchbase, MongoDB, Hibernate, SQL, MySQL, SQL*Plus, SQuireL, Oracle (CASE Methodology for DB Design), Sybase, PostGreSQL, MS-Access
- Editors/IDEs: WebStorm, PyCharm, IntelliJ, STS, Eclipse, Visual Studio 2017, slickEdit, jEdit, Borland C++ (v5.02), MS-Visual C++ (v5)
- Source Control: Git, BitBucket, GitHub, SourceTree, SVN, CVS, Perforce, TFS, 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: create-react-app, Angular CLI, Babel compiler, webpack (bundler), 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
- Studied performance and jazz improvisation.
- Instrument: Guitar
- Styles: Jazz, Rock, Blues, and Classical
- Guitarists I studied with while living in Boston:
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.
- Maintain a personal website, www.flupe.com, for fun. Topics include: music, guitar playing, and software development.
- Wrote a lesson series about music theory and improvisation for guitar players.
- I continue to write and record original guitar music and songs. Some of my material can be found on my SoundCloud page.
Coding Examples
The Flupey website is a fun and easy way for others to see some of my code and coding style. This website has been around for many years and I take pride in how it's evolved since its inception. I've always kept this site rather simple and that's been a conscious choice on my part. I like simple things.
I don't use any fancy frameworks for this website and just code using "Plain Vanilla" JavaScript to keep me grounded and give me some perspective in terms of some of the tools and frameworks I use professionally on a daily basis. I like programming without a framework because it helps me understand what a framework can and can't do for you. Neat.
Okay, there's a little JQuery used here and there, but for the most part, it's basic JavaScript, HTML and CSS on flupe.com.
For me, it's not so important which language you code in, but rather, what you do and say with that language. How do you express yourself with a technology or a set of technologies? Are you helpful to others? For me, this site has always been centered around music and sharing knowledge of guitar playing, music theory, etc. I think it's important that we give back and help others improve their abilities and I try to help where I can.
All of the code on this website is readable by right clicking on any page and choosing the option to view the page source. Some highlights include:
- The RGP: Phrase Trainer Tool - A web utility I built using HTML5 audio and JavaScript which can help musicians transcribe music and learn (guitar) solos. One can define a playback loop within the uploaded song and use this as a phrase trainer to help one play difficult musical passages, etc.
- A responsive HTML5 Audio Player featuring three albums of original guitar music I composed, performed, recorded and produced.
- Modals (using animatedModal.js) to display discography info of each album on the music page. The modals keep users on the music page and thus enable them to still listen to any music being played in the audio player while looking at album info at the same time. Cool, no page "redirects", which used to cause the music to stop playing. (The album "liner notes" used to be on their own separate pages.) So, now users can have a better listening experience. Neat.
- A Photo Gallery of the Flupe over the years. Be sure to notice the gallery shuffle feature. That was a fun one to implement. Also, care was taken to ensure the gallery could handle viewports with varying widths, so it's responsive. I've also integrated the photo gallery with Lightbox2 which enables each image to be displayed in a modal window when it's clicked on.
- A Random Quote Generator on the home-page. I started accumulating quotes, lyrics, etc. of concepts and ideas I like many years ago. It's fun to add more quotes with each passing year. NOTE: Some effort was made to make sure the same quote isn't shown twice between page-loads or quote refresh clicks. Of course a random number generator and cookie technology was used to accomplish this amazing programming feat!
-
Be sure to check out the
Coding
Examples page. There are a couple of interesting little
projects there that are worth checking out:
- A Dependent Drop-downs Example
- A Mortgage Payment Calculator
- Power Intervals - an interview programming assignment I did for a local Boulder company at the beginning of 2018. I coded it in 6 days. This was a fun little problem to solve and it allowed me to flex my coding muscles using Google's Maps and Charts APIs. Cool.
- And, finally, the main Flupey Scripts which are used throughout this site and act as a kind of utility class housing common functions, etc. Have fun exploring.
There are some neat things happening under the covers from a coding perspective here at flupe.com if you take the time to look. Thanks for your interest.