We provide IT Staff Augmentation Services!

Senior Web Applications Engineer Resume

SUMMARY:

I build SPA applications using React.js, Redux and Webpack. I only use Angular.js on an as - needed basis and am seeking projects that will/are implementing React.js. I can fill the positions of Senior UI Engineer, Lead UI Developer or UI Architect.

WORK EXPERIENCE:

Confidential

Senior Web Applications Engineer

Responsibilities:

  • Architected two Single Page Applications (SPA) with React.js
  • Used Redux for app state management
  • Created separate builds for all environments (Local, Dev, QA and Production) with Webpack with configurable settings to deploy to Amazon Web Services (AWS)
  • Implemented Hot Module Replacement (HMR) for rapid development
  • Used Redux-CLI for scaffolding
  • Designed custom blueprints to boost team productivity by 100%
  • Created blueprints for Components, Reducers, Action Creators, Routes along with their respective auto-generated unit-tests
  • Mentored 5 UI developers on the team
  • Held meetings and gave advice on how to use React.js, Redux and the way the build works
  • Created asyncronous React components with Webpack's bundle-splitting so routes only load their necessary logic
  • Wrote unit-tests with Karma, Chai, Sinon, Mocha, Enzyme and Phantom
  • Held test coverage at 75%
  • Integrated Google Maps API and created custom map components
  • Used Smarty Streets and Google Maps API's to auto-suggest addresses
  • Used Jenkins to auto-build app and deploy to AWS with each accepted Pull Request on the Master branch
  • Implemented custom React app mounting logic to support both a 100% SPA app along with a hybrid app which utilized two separate React apps that co-existed on the same screen on various JSP pages (within the same Webpack build)
  • Created a custom HTML5 dropdown component using
  • Implemented a team SCSS/Post-CSS standard to prevent conflicting stylesheets and allow highly modular asyncronous stylesheets
  • Used ESLinting within Atom for consistent team code patterns
  • Used Babel to transpile ES7 and ES6 code into older browser compatible ES5 code
  • Used JSX to simplify writing React components
  • Controlled SPA routing with React-Router
  • Used React's and Redux's Chrome Extensions to allow easy component debugging
  • Worked on various projects within the company using different technologies (React, Angular, Vue)
  • Helped make decisions on which technologies to utilize and which to pass on
  • Developed a library to force syncronous code to run asyncronously
  • Used Chrome's Timeline to find time consuming scripts
  • Used Grunt's copy task to copy files and folders into Java's temporary exploded .war directory
  • Held meetings to explain Node.js, SASS, Grunt.js, NPM, Bower and other UI tools to other developers
  • Prevented screens from freezing using QueueRunner.js
  • Polyfilled IE8 to be compatible with Angular.js
  • Worked within a Java environment
  • Used Eclipse IDE to compile and deploy Java servers
  • Used Jboss middleware to run a Java application
  • Wrote Node.js scripts to find directories within most recently modified files
  • Increased development team's UI development efficiency in multiples by introducing team to a proper UI workflow
  • Used .last() to retrieve array's last item with browser compatibility
  • Used Zurb Foundation 5 CSS framework to increase speed of UI feature implementation
  • Built interactive table with Angular.js
  • Enabled table pagination by creating a pagination directive
  • Created “before” and “next” directive to allow user to navigate between a limited set of items
  • Built a customizable table row filtering directive
  • Added table sorting using LoDash's .sortBy()
  • Used angular's ng-click directive on table headers
  • Efficiently ran loops using .times()
  • Created table striped rows directive to simplify striped rows in IE8
  • Implemented an extremely wide tables x-scrollable feature
  • Forced table pagination to display only available pages within filtered rows
  • Used angular's ng-repeat directive to create elements within an array
  • Merged objects together with .merge()
  • Used angular's limitTo filter to simplify implementation of number of available rows to a user
  • Built modals with Angular's ng-show directive
  • Used $timeout to allow updating controller's outside of Angular.js
  • Controlled user's input with modals using views 100% height & width background elements
  • Built angular subscribe/publish service to allow communication between an angular application and a non-angular legacy application
  • Used SVN version control to merge source code with a team
  • Developed a library to easily time and debug specific events
  • Enabled custom user interaction with a table created with jQuery's Datatables
  • Created a “loading” spinner directive to display execution events to user
  • Developed “unhide-on-bind” directive to prevent FOUC
  • Used DOM's window.parent.document object to control window's parent within an iframe
  • Added optimizely to allow business users to easily turn UI features on or off
  • Increased optimizely development efficiency by developing features using optimizely's JavaScript API
  • Used .filter() to filter rows within jQuery UI's Accordian plugin
  • Built arrays with specific items per collection using .map()
  • Split arrays using .slice()
  • Efficiently found an item within a collection using .detect()
  • Coordinated tasks with a remote team in India
  • Split Grunt.js tasks into multiple files to simplify task management
  • Edited .gitignore file to instruct Git to ignore all Java and non-UI related files
  • Built SPA app with Vue.js
  • Created a RESTful API with Sails.js and Node.js
  • Used Sails.js blueprints and for quick server-side development
  • Built models, controllers and actions with Sails.js
  • Used Passport.js to control user sessions and user authentication in Sails.js
  • Used Node-Machine Machinepacks with NPM
  • Encrypted user passwords with Passwords machinepack
  • Validated user email address on the server with Emailaddresses machinepack
  • Created new server-side API’s using Sails.js CLI generate method

Confidential

UI Developer

Responsibilities:

  • Built a Single Page Application (SPA) with Angular.js
  • Developed views with Angular's Contollers, Directives & Services MVV* pattern
  • Used Require.js Asynchronous Module Definition (AMD) pattern to handle app dependencies
  • Used Angular.js 'bootstrap' function to manually bind Angular in async module loading
  • Architected a virtual product advisor SPA application
  • Built a spreadsheet for business users to be able to easily update business rules
  • Used PapaParse.js to parse . Confidential files
  • Created a Confidential parser class to extract data from Confidential files
  • Used Class.js to create multiple classes and simplify JavaScript inheritance
  • Built a Rules Engine to make logical decisions for a virtual product advisor application
  • Built logic to apply infinite questions, answers and assigned points within an application to allow the flexibility of not needing further developer involvement
  • Used console.groupCollapsed() & console.groupEnd() for grouping console messages
  • Created a root-event-handler Angular.js directive to delegate DOM events
  • Used lodash.js to perform activities on collections of data
  • Used .keys() to extract keys from objects
  • Applied .sortBy() to sort collections of data by point values
  • Used .each() to iterate over items
  • Used .forEachRight() to iterate over items in reverse order
  • Used JavaScript Ternary operator for simple comparisons
  • Implemented efficient collection searching with .find()
  • Created ability to apply current instance within a deep nested object with .apply()
  • Advised business on UX designs for best business results
  • Used bower to install UI dependencies
  • Used Node Package Manager (NPM) to install Node.js server dependencies
  • Used Grunt.js to run a local server
  • Used Node.js to provide a local development environment
  • Used npm-shrinkwrap NPM package to control package versioning
  • Ran JavaScript unit tests with Mocha.js test framework
  • Used Blanket.js for JavaScript code coverage
  • Used Sinon.js to create test spies, stubs and mocks
  • Used Chai.js assertion library for JavaScript tests
  • Built views within a Sitecore .Net environment
  • Built a responsive app with Twitter Bootstrap
  • Used ng-controller to bind a Controller instance to DOM elements
  • Used ng-change to run functions when an input changes
  • Used ng-model to tie an input to an object within a Controller
  • Used ng-click to bind click events on buttons
  • Used ng-show to display elements when a function returns true
  • Used ng-href to dynamically create href attributes from a Controller method
  • Used Angular.js “{{ }}” for 2-way data binding
  • Software Version Control implementation with Git
  • Created a Git server with Gitolite on an Ubuntu Linux platform
  • Controlled user Git access and read/write capabilities with SSH keys
  • Used kdiff3 to compare repository merges and conflicts

Confidential

UI Developer

Responsibilities:

  • Build apps using Asynchronous Module Definition (AMD) development
  • Developed views using the Model-View-ViewModel (MVVM) pattern
  • 2-way data binding with Knockout.js
  • Built Single Page Applications (SPA) with Knockout.js
  • Used Knockout.js ko.observable() and ko.obserableArray() to build viewModel properties
  • Gave viewModels methods using Prototypal Inheritance
  • Built custom knockout binding handlers by extending ko's 'ko.bindingHandlers' object
  • Implemented knockout's ko.computed() and ko.pureComputed() functions for multiple observable binding
  • Created DOM nodes with Knockout.js 'foreach' binding
  • Speeded DOM rendering time with Knockout.js 'visible' binding
  • Instantiated multiple models per screen for complex viewModels
  • Knockout's with, click text, css and style bindings
  • Serialized viewModel data for posting JSON back to a server with ko.toJS()
  • Used Kendo.js UI widget API for rapid screen building
  • Used the knockout-kendo.js bridge to bind Kendo UI widgets with Knockout bindings
  • Displayed tabular data with Kendo's grid widget
  • Bound multiple viewModels to nested Kendo Grids using ko.applyBindingsToNode()
  • Used jQuery.Velocity to create highly optimized animations
  • Built 3D menu to navigate complex system hiearchy
  • Used Moment.js for JavaScript date management
  • Created jQuery animation plugins for less experienced developers
  • Used Zurb Foundation library to build screen templates
  • Used Zurb .collapse class to remove column margins
  • Imported multiple Sass files with @import
  • Sass style inheritance using @extend
  • Used Sass for app-wide and screen-specific styling
  • Changed app-wide styling with Zurb Foundation's Sass files
  • Created Sass variables with $
  • Created Sass @mixin for reusable styling logic
  • Built more sophisticated stylings with Sass @extend
  • Automated Sass builds with Compass and Grunt.js
  • Used Underscore.js to help manage large complex collections
  • Used .each() to iterate through arrays and objects
  • .find() to locate acceptable item
  • Amplify.js was used to request and send data to a RESTful endpoint
  • Cached data using amplify.request.define()
  • Stored miscellaneous user settings in localStorage with amplify.store()
  • Communicated with multiple viewModels using Amplify.js Publish & Subscribe messaging pattern
  • Programmed in Visual Studio 2013 for a .NET & C# environment
  • Used Razor templates with IntelliSense for helping build HTML
  • Fast & efficient HTML generation with Zen Coding
  • Used Psake task runner to compile, build & test local server
  • Used Powershell and Cmder for terminal commands
  • Used Git for software version control
  • Git 'status', 'push', 'pull', 'fetch', 'merge', 'log', 'checkout', 'branch', 'add', 'commit', 'reset', 'mergetool' and 'difftool' commands
  • Javascript Test-Driven Development (TDD)
  • Ran JavaScript unit tests with Karma test runner
  • Used Jasmine.js assertion testing framework
  • Ran headless testing with Phantom.js
  • Viewed code coverage with Istanbul.js
  • Used JavaScript Web Workers to speed up execution time by using multiple threads
  • Implemented LiveReload for automatic screen refreshing upon save
  • Used Gulp.js to create a localhost and LiveReload server
  • Ran Sass watch and compile with Gulp.js
  • Used Node.js to run build tools Grunt.js and Gulp.js
  • Concatenated and minified files with Node.js
  • Used Node.js shrinkwrap package to save current installed NPM packages versions
  • Ran JavaScript tests with Mocha.js
  • Implemented Chai.js assertion library
  • Used Blanket.js for JavaScript code coverage
  • Cleared temporary directories with Node.js grunt-contrib-clean
  • Copied files with Node.js grunt-contrib-copy
  • JSHinted files with Node.js and grunt-contrib-jshint
  • Used Node.js grunt-contrib-watch to run tasks on file changes

Confidential

Front-End Web Application Developer

Responsibilities:

  • Develop Admin and End-User sites with HTML5, Salesforce.com & Visualforce pages
  • Mesh HTML5 and Salesforce APEX tags
  • In corporate Twitter Bootstrap 3 into sites and applications
  • JavaScript sine wave graph plotting with flot.js & jqPlot.js
  • Use SVG images to eliminate photo pixilation
  • Draw vector graphics in SVG and VML using Raphael.js
  • Rotate Raphael.js canvas
  • Place multiple canvas and image elements on top of one another depending on a calculation
  • Build Linux Node.js server to serve AJAX requests with JSON Objects
  • Router port forwarding and NAT integration
  • Dynamic DNS updating
  • Create encapsulated modules with Require.js
  • Linux SSH configuration
  • Extract user's input with jQuery keyup
  • Disable/Enable buttons dependant on user selection
  • Salesforce elements
  • Data synchronization with Firebase.js
  • Use multiple versions of jQuery within the same page using $.noconflict()
  • Dynamic field population with data- attributes
  • Custom form validation with jQuery and CSS
  • I

Hire Now