# Kevin A. Cameron
Seattle, WA
[resume@kevinkace.dev](mailto:resume@kevinkace.dev)
[GitHub](https://github.com/kevinkace) | [LinkedIn](https://www.linkedin.com/in/kevinkace/) | [CodePen](https://codepen.io/kevinkace)
I’m a full-stack web developer, specializing in front-end. I love to build great things with brilliant people. I’m obsessed with user experience, and performant, maintainable code.
## Experience
### Senior Web Programmer, ArenaNet
March 2013 - Present
Lead developer on many marketing websites, ([Path of Fire](https://www.guildwars2.com/en/path-of-fire/), [Play Guild Wars 2](https://welcome.guildwars2.com/en/play-guild-wars-2), [New Player Guide](https://www.guildwars2.com/en/new-player-guide)). Automated GDPR request processing in internal CRM tool. Created highly interactive single page applications with MithrilJS, Modular-CSS, React, Webpack, Rollup, and custom state management. Provided technical mentorship to new hires, including code reviews and project direction.
### Web Developer, Anime-Planet
2010 - 2019
Provide guidance for front-end design and technical decisions. Implemented certain key features, including new responsive, animated SVG site banners.
### Front-End Developer, NCsoft
Dec 2010 - March 2013
CMS customization for customer-facing websites: My Aion, and Aion-Online. HTML emails. Complete overhaul of the City of Heroes game website.
### Front-End Developer (WAP), Motricity
Nov 2010 - Mar 2010
Wrote custom CSS for dozens of low-power mobile phones.
### Web Developer, Kace Visual (self-employed)
2009 - 2010
A handful of small business sites.
## Expertise
- Javascript SPAs
- CSS animations/transitions
- Build systems, CI, CD
- Developer experience
- SVG
- CMS customization
- HTML5 Video
- Analytics, SEO
- REST API design, development, and consumption
## Open Source Projects
- [Lyrite](https://github.com/kevinkace/lyrite) - lyric formatting tool
- [Animation Resolve](https://github.com/kevinkace/animation-resolve) - promise resolution for CSS animations
- [cssJoin](https://github.com/kevinkace/cssJoin) - conditionally join CSS class names
- [PostHTML Pseudo](https://npmjs.com/package/posthtml-pseudo) - add classes to HTML match pseudo selectors (":first-child", ":last-child", etc)
- [SVG Spritzer](https://npmjs.com/package/svg-spritzer) - join SVGs into a sprite sheet
## Additional Work Experience
- Game UI using Coherent GT
- Particle emitter with physics simulation - [Path of Fire](https://www.guildwars2.com/en/path-of-fire/#map)
- End-to-end testing with Puppeteer and Jest
- Purchase verification with Digital River
- Resilient 2-layer caching in Node
- Newsletter signup and management using the BlueHornet API
- WordPress static site exporter to JSON and HTML
- Responsive SVG image mask - [Path of Fire](https://www.guildwars2.com/en/path-of-fire/#mounts)