Senior Web Applications Engineer Resume
5.00/5 (Submit Your Rating)
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