Founder2015 - PRESENTCreative Journey Software
Technologies: Swift, iOS, Node.js, NASA JPL Data, Ionic 2, Cordova, Paper.js, Meteor, MongoDB, Web Sockets, React
- Developed a serverless (Google Cloud Functions/MongoDB) Node.js back-end, delivering planetary event notifications from NASA’s JPL ephemeris data. The database script efficiently finds planetary events with to-the-second accuracy over arbitrary spans of time (usually hundreds of years).
- Developed a Swift/iOS app consuming a planetary event API, including retrograde charts (planet's path through the sky over a period of time) and event list with filtering. Switched the architecture to Ionic 3 with Cordova plugins to take advantage of the ease of rendering custom text and graphics with a platform-agnostic, web-based platform. Used plugins for event notifications and local storage for user settings. Designed on tablet and implemented with canvas (Paper.js), HTML5/CSS, and Ionic's built in components and navigation stack.
- Developed a mobile game with Paper.js and Cordova to practice tracing letters, numbers, and other arbitrary Bezier paths. The game helps kids learn the correct stroke order to complete the letter with a margin of allowed error determined by user's choice of difficulty level. Made extensive use of Bezier math and path rendering mechanics. Explored how kids learn, what speaks to them, and where sticking parts were in the game mechanics, through usability testing with a three-year-old.
- Developed a video/audio lecture web app with slides and live pen annotations synchronized in real time to the audience. Used Meteor/MongoDB and web sockets for synchronizing pen strokes, OpenTok for audio and video, Reveal.js for slides, and Paper.js for drawing pen strokes.
Lead Software Architect2018 - 2018Win/Lose (via Toptal)
Technologies: React.js, Cordova, TypeScript, MobX, Firebase, Firebase Functions, Firebase Firestore
- Worked with a PM, designer, and client to determine the best technologies for a law app MVP. Determined that using React (MobX State Tree data models, Blueprint UI controls) with Cordova would suit the needs of an app that needed to function on the web, Android, and iOS on all device sizes.
- Recommended Firebase Functions (implemented with TypeScript and Express.js), Firestore (integrated with Functions to react to database changes), Authentication, and Storage for the REST API, database, logins, and document uploads, respectively.
- Costed dozens of user stories with references to any relevant implementation specifics. Created and costed user stories from the developer's perspective for creating the infrastructure for the app's front-end and back-end.
- Created slides for a presentation to the client to explain the tech stack choices and upkeep costs.
Web/Mobile Developer2017 - 2018Turas Health (via Toptal)
Technologies: Ionic 3/Angular 4, Cordova, Native Camera/Microphone/Keyboard Cordova Plugins
- Took over an existing project written in Ionic 3/Angular 4 which had fallen behind schedule on the front-end. The app's purpose is to synchronize medical notes between care providers and their patients while giving control to patients to determine which family and friends can see the medical notes. Providers can take video and audio (implemented with Cordova plugins and Ionic 3 adapters), and text notes, which appear in a vertical timeline for the patients and family/friends.
- Removed redundancy and cleaned up the codebase.
- Worked via regular standups and issues boards to get the project moving forward; collaborated on design decisions and how best to bring project requirements into the UI.
- Used Ionic 3's lazy loading feature to minimize the initial bundle size and increase load performance.
- Organized pages, components, services, and template pipes into modules.
- Made use of the RxJS (Observables) package to facilitate REST API query ordering and combination, graceful error handling, polling for uploads to complete and to maintain session activity, and app-wide event architecture for synchronized UI updates.
Web Developer2017 - 2017Prodzee (via Toptal)
Technologies: React, Speech Recognition API, Firebase, Responsive Apps
- Implemented a product management tool around the concept of Gherkin, using exact design specifications from InVision.
- Developed based on an existing React.js platform, upgrading and refactoring to use ES6/TypeScript and Webpack with Babel, CSS/Sass, and a static directory for assets.
- Used a container/component paradigm to separate Firebase logic from pure React components. Included a browser native speech API for entering text. Firebase's database product automatically synchronizes data in real-time between the database and client.
- Used native SpeechRecognition API to translate users' speech into user stories quickly and accurately. Saying keywords such as "AND" and "TITLE" allows users to control where the input goes.
- Implemented a hierarchical structure to categorize user stories in a typical feature/epic/story format. Categories automatically collapsed (unless pinned) to maximize screen space relevant to the user.
Web Developer2017 - 2017DareWest/SunPower (via Toptal)
Technologies: Angular 4
- Implemented a solar panel product browser with photos of the technology and buildings/houses utilizing the technology.
- Developed based on an Angular 4 project that had already been started, applied exact styles from a design specification, and implemented a mini gallery connected to a carousel, a filtering menu, an expanding/retracting navigation bar containing the above, and visible "hotspots" in each image with a callout with further information and a link to a filter.
- Used Angular and CSS animations and Angular services to access configuration and transferred settings to JSON files to make all site content editable.
- Used Wrike for team task management to quickly move through the remaining features and bring the project back into an on-time status, collaborating with the team who communicated the client's periodic feedback to me.
- Developed for all tablet sizes including iPad, iPad Pro, Galaxy, etc.
Co-founder, Developer2009 - 2017Examily, LLC
Technologies: Node.js, MongoDB, Redis, Express.js, AngularJS
- Designed and developed a pre-health sciences admissions testing website with 5,000 subscribed customers since 2011.
- Optimized server and client-side performance. Implemented with Node.js, AngularJS, MongoDB, and Redis, with caching and bundling to minimize file size and overall downloads. Used Chrome Perf tab to identify and improve bottlenecks.
- Generalized a framework that supports any multiple-choice test with a few modifications and stylesheets.
- Implemented practice tests, guided the animated tours, and handled the support system, question difficulty as calculated from millions of user answers, white-label purchase page using Braintree, upgrades, email notifications and confirmations, automatic employee payouts via ACH PayPal, and many other features.
- Implemented full style syntax for displaying special formatting in questions: LaTeX math/chem equations, tables, bullet points, font styles, images, etc.
Developer, Architect2012 - 2013Flink Learning
Technologies: Backbone.js, jQuery, jQuery UI, Audio Playback and Recording, HTML5/CSS3, Animation
- Developed a platform for game content authoring for 25+ children's game templates. Developed the framework from scratch in Backbone.js, jQuery, and jQueryUI, using plugins for sound recording. Cleaned up the PHP/MySQL back-end, which was open to SQL injection and integrated logins with a separate ASP.NET server.
- Developed customization for the platform through an interactive human-friendly JSON editor, so that branding, features, playable games, and all aspects of the platform could be tailored to clients in publishing, school districts, and teachers.
- Developed a platform to keep track of a class of kids, assigning homework to groups or individuals with the same code base as the content authoring framework.
- Developed a standalone game for learning spelling, involving dragging letters up or down or changing their order. Appeared on Android and iOS app stores.
- Collaborated remotely via phone and email with the founder on all aspects of the platform. Offered creative solutions to a variety of problems and business requirements.
Developer2010 - 2011Redfin
Technologies: Java, Spring, Dojo, PostgreSQL, Salesforce, Hibernate
- Worked with an Agile team of developers, PMs, QA, and designer on Redfin's CRM platform for their real estate agents. Worked directly with agents to understand the business, spec features, and make UI decisions.
- Developed an analytical dashboard for Redfin's teams to visualize the pulse of their business flow. Used Google Charts API to create graphs with deals at different stages in the pipeline and tours for the team and overall market. Linked from actionable statistics to perform essential business functions. Raw PostgreSQL queries for most statistics, highly performant across all markets.
- Developed a tour packet given to customers on home tours, downloaded via a link on Redfin's touring agents' dashboard. Used a Java-based XHTML/CSS to PDF converter with CSS to tailor pages to fit exactly. Included similar homes in the area for pricing comparisons, information on the home, amenities, price, neighborhood and schools, and contact information for the Redfin team for that area.
- Developed part of the Redfin listing manager for home selling: listing details. Kept track of the essential information for each deal, integrated with other widgets developed by the team such as workflow and scheduling.
Intern, Developer2008 - 2009PitchBook
Technologies: Adobe Flex, MS SQL, Access, Java Excel API
- Prototyped features for a small, new private equity data startup (now acquired). Documented prototypes for easy adoption by an offshore team.
- Developed an interactive entity relationship viewer with Adobe Flex using graph visualization features such as force layout. Entities included companies and people.
- Migrated data from an Access database to MS SQL using C# 3.0 and .NET features.
- Developed and documented an auto-generated Excel spreadsheet using a Java API.
Intern, Developer2008 - 2008Pure Networks
- Completed the installation wizard for Cable Gateway devices in C++. Utilized a proprietary framework for UI, OOP C++, and SOAP interaction API for communication with the router.
- Worked with QA to identify and fix problems. Worked in an Agile Scrum environment with four developers.
Intern, Developer2006 - 2007Microsoft
Technologies: MS SQL, C#, .NET UI
- Developed a Windows Component viewer for the Embedded Vista team. Improved on the tool the following year. Allowed team members to easily view, filter, and search components and navigate to their dependencies. Worked autonomously with feedback from managers and mentors. Used C# and .NET for database connectivity, MS SQL queries, UI, and class design. Included an exclude list for components with messy dependencies.
- Developed a scripting language to output and view graphs of components and dependencies (nodes with arrows pointing to each dependency, using Graphviz library).
- Presented demos of the component viewer (a.k.a. Badger), and Graph Visualizer to the embedded team. Incorporated feedback from these meetings.
- Developed Embedded Vista features by compiling components related to a specific area of functionality. Developed, debugged, and tested packages for network printing and legacy app support. Used low-level debugging tools and process examiners, command line tools for creating OS images, and the Component viewer to determine which components to include in the package.
- DATQvault (Development)http://datqvault.com
DATQvault is the cumulative result of 6 years of development and changes to this pre-health sciences admission testing platform. The latest version is developed in Node.js, AngularJS, Express, Redis for sessions and data caching, and MongoDB. Several scripts regularly perform MapReduce functions on large databases to compile statistics relevant to users.
- Optimized for initial load performance and page transitions.
- Emails for order confirmations, including a free test from one of any remaining unpurchased subjects.
- Questions categorized by area of knowledge and sortable by difficulty or practice frequency.
- Practice test format mimics official ADA format.
- Statistics on the home page, and at the conclusion of each practice test, including how your results compare to your peers.
FrameworksRedux, Angular, Express.js, Paper.js, Ionic 2, AngularJS, Bootstrap 4, Cordova, AVA.js, Jest
Libraries/APIsREST APIs, Node.js, Backbone.js, jQuery UI, MathJax, jQuery, Socket.IO, MobX, React, Redux-saga, HTML5 Canvas, PayPal API, React Router, Chai, Braintree API
ToolsStylus, Browserify, Gulp.js, Chrome Developer Tools, Karma, WebdriverIO, Webpack, Cordova Plugins, Mocha
ParadigmsUnit Testing, Test-driven Development (TDD), Functional Programming, Behavior-driven Development (BDD), E2E Testing
PlatformsFirebase, Heroku, Meteor, Visual Studio Code, OpenTok, iOS
StorageCloud Firestore, MySQL, Redis, MongoDB, PostgreSQL
OtherFirebase Cloud Functions, APIs, Minification, HTML5 Video, Semantic UI, WebSockets, Google Cloud Functions
- Bachelor of Science degree in Computer Science2006 - 2010University of Washington - Seattle, WA
- Study abroad in Japanese Language, Literature, History, and Culture2008 - 2008Kyushu University - Fukuoka, Japan