Freelance React Front-end Developer2018 - PRESENTHouse So Green (via Toptal)
Technologies: React, GraphQL, Styled Components, Mapbox, Final Form, Recompose, Reselect, React Apollo, Bootstrap
- Created a React application for finding green-built homes.
- Queried and mutated information from the backend using GraphQL with React Apollo.
- Created a set of complex forms for editing information about homes, certifications, and other related data, including uploading photos.
- Implemented an interface for efficiently searching through thousands of homes and displaying paginated results with an interactive map display.
- Translated Sketch files provided by a designer to a responsive web design that works well with mobile and desktop browsers, using a combination of styled components and Bootstrap.
Freelance Front-end Developer2016 - 2018SeatCrawler (via Toptal)
- Built a prototype in Ember.js for visualizing ticketing data on custom and interactive venue maps using MapBox.
- Converted large GeoJSON maps to smaller vector tiles in Node.js and cached them on AWS in order to limit the amount of data transfer and speed up rendering.
- Created a Node.js-based API using LoopBack to serve data cached in MongoDB.
- Ported the mapping portions to standalone React-based components to be used in a larger application.
- Optimized the map viewer for better controls on touch-enabled devices.
- Converted InVision and Photoshop designs to an interactive, responsive, pixel-perfect user experience.
- Incorporated user feedback from bi-weekly demos and daily standups.
- Created detailed documentation describing API endpoints required for both our internal application and for fetching data from external providers.
- Ensured support for the web application to be used in all major browsers as well as IE 11 and as a Microsoft Outlook add-in.
Senior Software Engineer - Theatrical Domestic2015 - 2016Rentrak Corporation
- Set up an automated pipeline for continuous integration and deployment.
- Optimized the performance of the production virtual machines through the allocation of resources and software.
- Improved the client experience by providing new technologies quickly.
- Upgraded a set of reports to show data visually using AmCharts and Google Maps.
Software Engineer - Theatrical International2011 - 2015Rentrak Corporation
- Upgraded the website to a Single Page App, using cutting-edge web technologies.
- Developed a subsystem to track and display film interest prior to release.
- Led the team transitioning data and reports from the French market into our system.
- Practiced Agile, test-driven development in a Linux environment.
- Created a set of charts and graphs to visually compare historical data across multiple sets of films.
Peer Educator | Tutor2010 - 2010Academic Success Center, Oregon State University
Technologies: Prolog, Haskell
- Tutored three different students in the programming languages Haskell and Prolog.
- Wrote sample problems and gave advice to prepare students for upcoming tests.
- Guided students through lecture slides, homework, examples, and practice exams.
Management Information Systems Intern2008 - 2008OECO, LLC
- Designed a web-based help desk using ColdFusion and various web design standards.
- Implemented a Microsoft Access-based database system for electronic change orders.
- Provided general technical support with the Information Technology department.
- House So Green (Development)https://app.housesogreen.com
House So Green is a tool for finding green-certified homes. The site has information about homes as well as the suppliers, products, certifications, and awards associated with them.
I wrote the front-end for this site using React. The data is managed using Apollo GraphQL. A designer had provided mockups of the design in Sketch, which I then incorporated into the site using a combination of SCSS, Styled Components, and Bootstrap.
- DataWorker (Development)https://dataworker.github.io/
DataWorker is a joint effort mainly between me and one other coworker. We were interested in displaying tabular data on our internal website at work, but we were not satisfied with any pre-existing solution we could find. We had large amounts of data to receive and sort through, but we wanted to have the tables all rendered on the client-side.
We came up with DataWorker and open-sourced it. It let us stream data in using web workers so that the main thread doesn't get blocked when large amounts of data are coming in. We could then also sort the data in that separate thread and only request the small chunks we wanted to render a bit at a time. It allows you to stream through WebSockets or Ajax, and we kept the documentation up to date.
I recently updated the documentation's UI from Bootstrap 2 to Material Design.
- International Box Office Essentials (Development)https://iboe.com
I worked on this project at Rentrak for over four years. When we updated the site, I converted our customized CSS to Less, integrating it closely with Bootstrap for a consistent look. I worked with large amounts of data, creating quick, responsive tables, and finding ways to visually represent the data using graphs and charts. The site requires a membership, but you can get a feel for the responsive design just from the login page without needing an account.
- Ye Olde Shoppe (Development)https://github.com/redbmk/angular-academy-shop
As the final project for an online course on Angular, I created a mock storefront with RxJS, Redux, Firebase (for data management), and Angular Material (as a UI framework). Changes to products, orders, and users are all updated in real-time.
Logins are managed through Firebase using Google accounts for authentication. The store has the concept of three distinct roles for accounts, with varying permissions: users, managers, and admins.
Users can view products and add them to their shopping cart. The shopping cart allows users to edit the items and quantities of their order before checking out. Stripe's test mode is used during checkout to mock payments. Users can view their past orders and their status, and can also edit their profile picture, name, billing, and shipping addresses. All accounts are considered to be a user.
Managers have the ability to add new products and edit existing products, as well as view orders and update their status.
Admins can also add or edit products, as well as delete existing products. They may also view or delete existing orders. Admins also have the ability to view and edit other users.
- Auto Repair Shop (Development)https://github.com/redbmk/auto-repair-shop
For the final project of a course on React, I created a fake auto repair shop. This was bootstrapped with a Create React app, Material UI as a design framework, and Firebase for data storage.
In the repair shop, users can view repairs assigned to them and can comment on repairs. They also have the ability to mark a repair as completed which then needs to be approved by a manager. By default, all repairs are shown on screen, but there is a set of filters to find repairs by a date range, a time range, and whether the repair is completed or not. All filters are optional.
Only a manager may create, edit, or delete repairs, and assign them to other users or mark them as approved. They may also add and delete users, or add or revoke manager permissions for another user. Managers also have a special filter to view repairs assigned to a specific user.
All of the data is updated in real time. For example, if a manager is viewing completed tickets, then a user marks one of their tickets as complete and that ticket will immediately show up on the manager's screen.
FrameworksBootstrap 3, Knockout.js, Ember.js, QUnit, Durandal, Angular, React Native, Material-UI, Express.js, Loopback, Aurelia, Redux
Libraries/APIsMapbox GL, Turf.js, Node.js, jQuery, Firebase Web SDK, React Final Form, Flexbox, React Router, Moment.js, Lodash, Styled-components, Reselect, React, Immutable.js, Material Design Lite, LeafletJS, Reactstrap, RxJS, Chai, HTML5 Web Workers
ToolsGit, Vim Text Editor, React Apollo, Jira, Mocha, Sequelize, Eclipse IDE, Jenkins
PlatformsMapBox, Linux, Firebase, MacOS, Docker, Heroku, Oracle, iOS
StoragePostgreSQL, Firebase Realtime Database, MySQL, Google Cloud SQL, NoSQL, MongoDB, Vertica, Redis
OtherSPA, Firebase Hosting, Styled Components, AmCharts, Mapbox Styling, CSS Grid, SEO Content, SEO Audits, Google Material Design
ParadigmsTest-driven Development (TDD)
- Bachelor's degree in Computer Science2002 - 2010Oregon State University - Corvallis, OR, USA