Founder2015 - PRESENTCreative Journey Software
Technologies: Swift, iOS, Node.js, NASA JPL Data, Ionic 2, Cordova, Paper.js, Meteor, MongoDB, WebSockets, 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).
- Built 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.
- Created 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.
- Programmed a video/audio lecture web app with slides and live pen annotations synchronized in real time to the audience. Used Meteor/MongoDB and websockets for synchronizing pen strokes, OpenTok for audio and video, Reveal.js for slides, and Paper.js for drawing pen strokes.
Senior Developer2019 - 2019Caminer, Inc.
Technologies: GraphQL, RxJS, dGraph, TypeScript, NestJS, Node.js, Event Sourcing, CQRS, Docker
- Developed features on spreadsheet services and API intended to replace traditional back-end developent with a visual interface.
- Prototyped and implemented generic, composable, transactional graph mutations to simplify raw dGraph queries.
- Implemented features such as foreign table references on the back-end API using CQRS, dGraph, event sourcing, TypeScript, Node.js/NestJS, GraphQL, gRPC, RxJS, sagas, Redis streams, Docker, and PostgreSQL.
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 issue 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 a 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 implemented a pre-health sciences admissions test preparation website with a bootstrapped, active customer base.
- Used OpenTok/WebRTC, WebSockets (Socket.IO), and Meteor to create a real-time lectures with synchronized slides, video/audio stream, and chalkboard.
- Implemented a back-end API with Node.js, Express.js, MongoDB/mongoose, and redis to cache semi-static data. Optimized front-end load time to increase conversion with redis caching, database optimization, minification/compression, dependency pruning. Nightly data aggregations, e.g., comparative test score histograms, difficulty by question and category.
- Developed an AngularJS front-end app with a guided tour, practice test simulation, index of categories sorted by difficulty/proficiency, a test results page with comparative histogram to show relative proficiency to other test takers, bar graph of proficiency by category, and answer explanations.
- Implemented white-label purchases with Braintree, employee payments via ACH (Balanced Payments) and PayPal.
- Developed a question editor (an editor of LaTeX for math/chem, tables/lists, font styles), reordering tests, and generating reports intended to discover outliers in content and behavior.
- Measured performance with Chrome's Performance tab and server logs with New Relic APM, optimizing initial load time, navigation time, and API endpoint performance.
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.