Resume
Preamble
I am principled but also pragmatic. I love efficiency and order.
I am passionate about doing things right, simply, and quickly.
I bring over two decades of experience, maturity, focus, and knowledge to my team in order to tackle technological and personal challenges.
Above all I want to invest in people I believe in and work for a company that creates real-world value.
Contents
- Employment history
- Apogee Travel (remote), 2023 - 2026
- Meetingful, Inc. (Opre) (remote), 2020 - 2023
- Built Technologies, Inc. (remote), 2019 - 2020
- eNotes.com, Inc. (remote), 2014 - 2019
- AppendTo, Inc. (remote), 2012 - 2014
- Reed Elsevier, 2012
- Fpweb.net, 2010 - 2012
- Lipper (Thompson Reuters), 2010
- Intellispend, 2010
- USFidelis, 2008 - 2010
- Bitmesa, LLC, 2008 - 2010
- Family Tree DNA, 2007 - 2008
- National Auto Warranty Services, 2006 - 2007
- River City Internet Group, 2005 - 2006
- DSDirect, 2005
- Protech Network Design, 2004 - 2005
- Open source contributions
- Select published articles
- Published books
- User group presentations
- Conference presentations
- Tutorials
- Volunteer Work
- References
- Personality (for fun!)
Employment history
APOGEE TRAVEL | (Remote) Senior Software Developer, January 2023 - April 2026
Apogee Travel (web, Android, iOS) is an Online Travel Agency (OTA) that combines competitive pricing, charity donations, and rewards program valuation and comparison features to give customers travel with purpose.
Web/Microservice Technologies: Typescript, Next.js, React, MUI, Jest, Express, MongoDB, Elasticsearch, Redis, RabbitMQ, Mapbox, OpenFeature, OpenTelemetry, Docker/Kubernetes, Claude Code
- Built the rewards and loyalty system end-to-end. REST API with pagination/search, CSV-based member tier imports, and customer-facing My Account UI with analytics tracking via Google Tag Manager. Extracted reusable business logic into a dedicated library.
- Redesigned the core hotel booking flow. Multi-month, multi-page overhaul of the revenue-critical booking experience: pricing details dialogs, cancellation policy display, booking summaries, and confirmation pages delivered iteratively across a dozen PRs aligned to Figma specs.
- Decomposed a monolithic service into microservices. Extracted a domain-specific profile service from an overloaded monolith, migrating endpoints, RabbitMQ topology, supplier channel resolution, and client API calls without disruption. Introduced canonical shared types with Zod runtime validation.
- Migrated search infrastructure from Elasticsearch to MongoDB Atlas Search. Eliminated an entire infrastructure dependency by rebuilding charity and inventory search on Atlas Search aggregation pipelines, iteratively tuning query relevance behind feature flags.
- Drove major platform upgrades across the monorepo. Coordinated Node 22, React 19, and Next.js 15 migrations across 74 workspaces, resolving breaking changes in MUI, Jest, ESLint, and SASS, including a security-critical RCE patch.
- Delivered a full supplier administration portal. Complete CRUD lifecycle: listing with search/pagination, creation, editing, contract management, inventory tracking, activation workflows, soft-delete with booking protection, and fractional commission support.
- Implemented charity integration across the customer journey. Charity banners, selection drawer with search/pagination, default donation logic, and checkout-flow integration, progressively rolled out via feature flags with full flag lifecycle management.
- Hardened observability and eliminated credential exposure. Standardized Winston log levels across all 17 services, implemented PII redaction, and scrubbed sensitive system info from log output.
- Reworked authentication from popup to redirect-based flows. Replaced browser-popup Keycloak login with redirect-based approach for better cross-browser and mobile compatibility, customizing Keycloak templates.
- Established frontend architecture standards. Introduced Feature-Sliced Design, enforced consistent naming conventions, and removed 9,000+ lines of dead code by decommissioning abandoned client apps.
- Modernized the monorepo’s build and CI/CD foundation. Migrated Yarn to npm workspaces, reworked TypeScript composite builds, fixed Docker builds and GitHub Actions, and established shared ESLint/Prettier configs enforcing zero-warning tolerance.
- Delivered user profile and account enhancements. Added company bookings support for business travelers, introduced react-query for data fetching, and improved trust signals and accessibility.
Mobile Technologies: Typescript, React Native, React, Jest, Expo, Mapbox, formik, OpenFeature, Claude Code
- Redesigned the end-to-end booking workflow. Multi-step flow: room selection, guest editing, payment, pricing breakdowns, review, confirmation, and receipt screens across 20+ PRs. Hardened with edge-case fixes for keyboard positioning, availability refresh, and cross-platform rendering.
- Delivered a complete loyalty rewards system. Full rewards feature from data layer to UI: transaction list/detail, rewards summary, and landing screen.
- Owned the Account section end-to-end. Navigation architecture, bookings list with current/past stays, and rewards system integration with a cohesive self-service experience.
- Overhauled hotel search and filtering. Multiple iterations addressing price filter behavior, total-price filtering with dynamic ranges, amenity filters, filter persistence, and responsive layout.
- Built interactive map-based hotel discovery. Mapbox clustering, “search this area” geographic re-querying, bullseye location markers, and custom pin graphics for spatial exploration.
- Led the Expo 54 / React 19 major framework upgrade. Migration execution, Node 22 upgrade, and CI runner alignment to keep the app on supported toolchains.
- Implemented cancellation policy transparency. Cancellation display across room cards, booking summary, and confirmation; normalizing inconsistent backend formats and fixing i18n issues.
- Drove the Feature-Sliced Design architectural migration. Restructured legacy code into FSD layers, extracting shared widgets and “FSDifying” the search screen as a reference implementation.
- Replaced third-party address autocomplete with a native solution. Swapped both search destination and billing address components (previously Google Places–dependent), fixing state selection bugs and reducing external dependency.
- Consistently polished cross-platform UI quality. Tablet layouts, image carousel rework, text truncation, consistent card heights, responsive filter layouts, and theme alignment across iOS, Android, phones, and tablets.
- Maintained developer infrastructure and code health. Pre-push test hooks, QA test IDs, dead code removal, updated CI runners, and dependency maintenance.
MEETINGFUL, INC. | (Remote) Senior Software Developer, January 2020 - 2023
Meetingful, Inc. is a startup developing the product Teaming, a web application aimed to help growing workplace teams thrive.
Technologies: JavaScript, Vue.js (2 and 3), Vuex, vue-router, Vuetify/PrimeVue, MySql (AWS RDS), node.js, Serverless (AWS Lambda), Auth0, postal.js, SCSS/Flexbox, Mocha/Chai JS/Sinon.js
As one of only two engineers, I took a direct hands-on approach to planning, implementing, and deploying our application. I worked with design and product to conceptualize features based on customer interviews, then translated plans into prioritized work delivering customer value quickly. My implementation spanned the full stack: Vue/Vuex front-end components and stores, API design and deployment on AWS Lambda via Serverless, and MySQL database design, migrations, and queries on Amazon RDS.
A guiding principle: all features are lean, stable, and “simple”, delivering the most value per unit of development time. We maintained high code quality and maintainability standards while moving fast, with rigorous unit test coverage and peer-reviewed pull requests. After beta launch we executed a Vue.js 2 to Vue.js 3 migration strategy that maintained existing functionality while future-proofing the product.
During my tenure, Teaming transitioned from alpha/beta through paid subscription release with a growing customer base. The company operated frugally and effectively – surviving the pandemic and thriving – while delivering features at pace.
BUILT TECHNOLOGIES, INC. | (Remote) Senior Software Developer, January 2019 - January 2020
Technologies: JavaScript (ES6), Typescript, node.js, React, React Hooks, Redux, Amazon AWS/S3/Cognito, Docker, docker-compose, Webpack, Babel, MySQL, GraphQL (Apollo), REST (axios), Webdriver.io, AG Grid, MaterialUI, eslint, jest, enzyme
I worked on a small team building a greenfield, service-oriented application managing “borrowing base” construction lending loans, adjacent to Built’s existing product. I worked primarily on the front-end React application and a GraphQL middle tier, with contributions to the REST API.
We devised a “mini-app” architecture allowing our borrowing base app to appear seamlessly integrated with the existing product while letting us develop independently of other teams’ schedules. We extracted reusable components into shared libraries across the company.
The front-end used React with hooks, contexts, and Redux for shared state, leveraging MaterialUI and AG Grid with extensive customization. In under twelve months, we moved through four major development phases – delivering features, expanding test coverage (unit, integration, E2E), and continuous refactoring – shipping the product a month and a half ahead of schedule.
ENOTES.COM, INC. | (Remote) Senior Software Developer, November 2014 - January 2019
enotes.com
Technologies: PHP 5.x/7.x, MySQL 5.x, composer, PEAR, Apache SOLR, Memcached, Redis, RightScale, Amazon AWS, Amazon RDS, Amazon S3, Amazon Elasticsearch, gulp, Mocha/Chai/Sinon, Webpack/Babel, Jake, ES2015, eslint, node.js
- Created a flexible advertising “waterfall” allowing administrators to configure third-party providers in fallback positions so higher-paying advertisers fill first, with lower-paying ones as fallback. Drove dramatic revenue increases.
- Created a marketing system enabling administrators to build ad-hoc targeting groups from business criteria. Saw immediate conversion results.
- Made significant site performance improvements: image optimization (250GB+ reduced by half), lazy-loading, script compilation/loading, and legacy code shimming. Dramatically improved load/render performance measured via Google Lighthouse.
- Led migration of all legacy JavaScript to ES2015 using Webpack/Babel, managing coworkers and overseeing code reviews for the initiative.
- Created reusable, open-source tree library Groot for managing nested educational content.
- Abstracted Amazon Pay, Apple Pay, and Braintree payment subsystems behind unified interfaces to decouple from billing subsystems.
- Created a Quill editor plugin for cross-linking educational content via Amazon Elasticsearch full-text search.
- Performed regular npm package audits to address vulnerabilities promptly.
owleyes.org
Technologies: PHP 5.x/7.x, MySQL 5.x, Symfony 2 + Doctrine, PHPUnit, composer, Apache SOLR, Redis, Amazon AWS, Amazon RDS, Amazon S3, gulp, WebPack/Babel, Jake, ES2015, Mocha/Chai/Sinon, eslint, node.js
- Built responsive, mobile-first e-book reading experience with highlights, custom annotations, reply threads, and in-text assignments/quizzes.
- Migrated existing e-texts and user annotations from enotes.com.
- Added robust visibility settings and user preferences for security, privacy, and customization.
- Used Apache SOLR for full-text indexing and search.
- Built classroom management tools tracking student reading progress, assignment completion, and class membership.
- Created reusable subscription/billing subsystems abstracted for Owl Eyes.
- Created a grants and privileges system controlling annotation visibility. Critical for privacy-sensitive environments like public school classrooms. Composable grants provided maximum flexibility.
- Created DQL Runner Electron tool for running Doctrine DQL queries via UI.
- Performed regular npm package audits.
Team Leadership
- Published educational emails to the development team on ES2015 features introduced into the codebase.
- Recorded tutorials and screencasts explaining complex codebase areas and onboarding new developers.
- Created “code kata Fridays”, programming puzzles worked during the week, solutions shared the following Friday.
- Gave team presentations on debugging, refactoring, and best practices (primarily JavaScript).
- Participated regularly in code reviews and mentorship.
- Used Jekyll to create an eNotes developer blog on Github; wrote articles and encouraged others to contribute.
APPENDTO INC. | (Remote) Architect/Project Lead, October 2012 - October, 2014
I worked on customer projects for the Solutions Delivery department, internal development and marketing projects, and organized/co-authored/edited an ebook on modern web practices with several appendTo developers.
Web application for managing bulk food donations (customer)
Technologies: HTML5, CSS3, JavaScript, jQuery, knockout, amplify, nonet, ventage, underscore, handlebars, node.js, strata, Cordova, AngularJS
- Functioned as technical lead and sole developer, deconstructing client needs into user stories, documenting architecture, and collaborating with the customer’s dev team on APIs, schemas, and domain knowledge.
- Created a custom, single-page, responsive web application replacing a legacy line-of-business app. Worked across mobile devices (primary) and desktop browsers with offline support via ApplicationCache, HTTP response caching, queued offline submissions, and multi-language support.
- Built a custom SPA framework utilizing jQuery and knockout with a promise-based middleware data access layer handling offline support, response caching, request interception, and API auth. Implemented a 5-fold online/offline detection approach with automatic cache cleanup and QR code scanning on mobile.
- Built a node.js proxy to simulate API responses before client implementation and proxy to finished APIs.
- Build process minified/concatenated resources, generated manifest.appcache, and deployed to the customer’s IIS server.
Apache Cordova application (Android) for taking bulk food donation inventory (customer)
Technologies: Cordova, AngularJS, HTML5, CSS3, JavaScript, lodash, node.js, mach
- Developed a hybrid Cordova app running natively on Android with options to expand to iOS, Kindle Fire, etc.
- Used AngularJS for single-page application architecture with offline support via local SQLite caching and queued data delivery.
- Created a virtual HTML keypad for input when Bluetooth laser scanners were paired with devices.
- Created multi-lingual build configuration for globalized deployments.
Social web application for entrepreneurs (customer)
Technologies: HTML5, CSS3, JavaScript, jQuery, knockout, require.js, node.js, express, mongo, mongoose.js, redis, grunt, sass, dotCloud, Ubuntu Linux
- Functioned as technical lead performing discovery, documenting architecture, coordinating engineers, conducting code reviews, and managing all project artifacts and customer interactions.
- Created a multi-page social network portal tracking entrepreneur profiles and suggesting potential partners using business rules. Members could submit articles for third-party syndication and find nearby members via geolocation.
- Responsive knockout/jQuery client with heavy use of view models for separation of concerns and WYSIWYG editors.
- Node.js/Express backend with OAuth2 authentication, MongoDB replication set (migrated from WordPress MySQL), Infusionsoft CRM integration, and geolocation-based proximity lookups.
- Custom dotCloud deployment with custom build/deploy scripts and Mongolabs for MongoDB.
- Developed a migration system transforming and exporting data from WordPress and Infusionsoft to MongoDB.
Web application to connect former military personnel with employers (customer)
Technologies: HTML5, CSS3, JavaScript, angular.js, lodash, grunt, sass
- Deconstructed high-level wireframes into workable user stories with traceability to customer project management systems.
- Created a single-page AngularJS application with job search (keywords, company size, industry), recruiter messaging, favorited jobs, and scheduled job fairs.
- Used UI state router for modular templates/controllers, extensive mocked data sets, mocha/chai testing, custom directives for reusable components, Angular resources for data access, and promise-based control flow.
Social web application for teachers and students in academic settings (customer)
Technologies: HTML5, CSS3, JavaScript, jQuery, Backbone, node.js, postal.js, machina.js, socket.io, express, handlebars, mongo, mongoose.js, redis
- Extended the Manhattan social networking platform with virtual classes, real-time dashboard streams, live profile/class updates, and user-posted content feeds with accessibility support via aria tags.
- Single-page Backbone app with a custom data layer using postal.js for in-memory messaging and machina.js finite state machines for offline/network state handling.
- Node.js proxied requests to eCollege Java services and stored app state in distributed Mongo instances. Redis routed events between app instances, forwarded to browsers via socket.io.
- Stream functionality exposed to third-party apps as widgets using postal-xframe for cross-domain concerns.
Web application for members to share annotations on classic texts (customer)
Technologies: HTML5, CSS3, JavaScript, rangy
- Analyzed severe performance problems and implemented solutions: dividing documents into logical sections for range offset loading, interrupting range creation during user events for responsiveness, responsive UI improvements with CSS3 keyframe animations, and edit-after-creation capability for document ranges.
Technical coach for enterprise hackathon (customer)
Technologies: ASP.NET MVC5, Windows Azure, SQL Server, Web API, Visual Studio 2013, jQuery, HTML5, CSS3, JavaScript
- Spent a week on-site coaching five teams through an internal hackathon for IT support, each building a mobile project over two days.
- Provided technical expertise on Azure and ASP.NET MVC5, analyzed project ideas with team leaders, prepared mock data mimicking company domain data, and helped overcome obstacles through pair-programming.
- Participated on the judge’s panel. All teams met technical and business goals with flawless demos.
Example applications to demonstrate and document chat, voice, and streaming video APIs (customer)
Technologies: HTML5, CSS3, JavaScript, jQuery, respoke
- Created example applications demonstrating best practices for user/group chat, presence, voice chat, and video chat.
- Wrote extensive documentation with screenshots, sample code, and diagrams as developer guides.
BrowserSwarm CI server - executed project test suites across suites of browsers (internal)
Technologies: HTML5, CSS3, JavaScript, Strider CD
- Fixed bugs and issues in core Strider CD (open source) to meet a deadline. Executed well under pressure, identified potential future problems, and contributed to a successful launch.
Organized and edited e-book on modern web development practices (internal)
Technologies: markdown, gitbook
- Proposed the e-book concept to management, organized five authors (each responsible for a 5000+ word chapter), coordinated peer critique and alpha reader feedback, and performed final grammar edits.
- Worked with the team to create a gitbook build process converting markdown to static site, PDF, epub, and mobi.
- Participated in marketing and design decisions.
Miscellaneous (internal)
- Wrote several technical articles for appendTo blog.
- Assisted training director during JavaScript presentation to Amazon hardware team.
- Led initiative to create a “Modern Web” eBook composed of chapters by appendTo employees
- Contributed several open source projects to a2labs.
- Mentored other developers through one-on-one video chats.
REED ELSEVIER | Senior Developer, January 2012 – October 2012
Technologies: JavaScript, node.js, strata, express, require.js, jQuery, HTML5, CSS3, mocha, chai, jake, underscore.js, postal.js, less, stylus, git, riak, redis, mongodb, OSX, Ubuntu Linux
- Worked closely with business sponsors and team leaders to generate requirements, user stories, and technical designs for each application.
- Created a searchable API documentation viewer; an AST parser generated a large JSON file containing API info for every module. I wrote modules to load, convert, and dynamically display it in a jQuery-powered single-page application for instant developer access.
- Created a slideshow application running on our platform to dynamically load HTML or Markdown slides (with Express-based Markdown conversion), using CSS3 animations for transitions, media queries for mobile, and multiple input methods (keyboard, mouse, touch gestures).
- Developed an open-source, reusable tree control consuming arbitrary JSON for navigable UI (used in a proof-of-concept web IDE prototype loading files into tabbed text editors).
- Created custom strata middleware intercepting requests and dynamically routing to data sources based on path information, giving calling code a uniform data API across multiple stores.
- Conducted research and presentations on UI libraries, cross-domain iframe communication, browser sandboxing, and UX data-saving recommendations.
- Maintenance tasks: automated jake tasks, NPM package management, binary dependency rebuilds, mocha/chai test suites, module decomposition, and documentation.
FPWEB.NET | Senior .NET Developer, December 2010 – January 2012
Technologies: C#, .NET 4.0, ASP.NET MVC 3, ASP.NET WebForms 4, Ruby, Rake, HTML5, CSS3, Sass, JavaScript, jQuery, Chrome extensions, SQL Server 2008, SQL Server CE 4, Entity Framework 4, NHibernate 3, Linq2SQL, PowerShell, nUnit, TeamCity, AgileZen
- Consolidated and automated shared hosting site provisioning by deconstructing manual PowerShell scripts and automating their execution via .NET PowerShell libraries in response to website orders. The solution used an extensible pipeline architecture where each step’s output fed the next, with new functionality insertable by extending classes.
- Handled bulk product price synchronization to the remote billing provider, including hierarchical price propagation (changing a top-level product cascaded through the tree). Created a command-line utility for bulk operations bypassing the billing provider’s UI limitations.
- Migrated billing data from a legacy IBM AS400 to a cloud billing provider. I built a multi-threaded data sync service pulling from the cloud provider’s WSDL/CSV endpoints into an on-site data store for disaster recovery, reporting, and internal app access (incremental sync every 15 minutes, full sync daily, with cross-thread coordination and graceful failure handling with email alerts). This service became indispensable for the CFO’s financial reporting needs.
- Implemented a universal feedback system leveraging Chrome’s plugin architecture. An HTML5 form and JSON service injected via Chrome extension into all internal and external web applications employees used. Feedback was piped to AgileZen via web services for rapid review.
- Re-platformed mixed classic ASP/WebForms applications to ASP.NET MVC in small increments. Created a customer account “event feed” consolidating notes, invoices, payments, and subscriptions into a unified jQuery/Handlebars timeline.
- Performed maintenance on internal applications and the public website (bug fixes, feature requests, system integrations) and contributed extensively to the internal Wiki knowledge base.
LIPPER (THOMPSON REUTERS) | Web Services Developer, July 2010 – November 2010
Technologies: C#, .NET 4.0, Windows Communication Foundation, SOAP, Oracle 10g, Subversion, CruiseControl.NET, MSTest, Bugzilla, Fiddler
- Developed secure, publicly exposed WCF services (SOAP 1.1) for the Lipper Investment Management desktop application.
- Collaborated with Oracle and desktop app teams to design efficient services encapsulating business rules and financial analytics cluster communication, meeting stringent performance requirements via multi-threaded data acquisition, consolidation, and caching.
- Designed and implemented a multi-threaded task registry running concurrent tasks from application pool startup through termination or timeout. Initial implementation monitored analytics cluster endpoint connectivity, guaranteeing unavailable endpoints were never accessed.
- Designed an XML-based health check monitoring subsystem recursively checking service dependencies and returning consolidated availability reports.
- Maintained unit/integration tests verifying service performance and data accuracy; wrote new tests for added services or significant changes.
INTELISPEND | Senior Developer, January 2010 – July 2010
Technologies: C#, .NET 2.0, ASP.NET WebForms, .NET Remoting, Subversion, CruiseControl.NET, NUnit, SQL Server 2005
- Worked on upgrading an existing ASP.NET business application for a critical 2010 release. Planned velocity exceeded every iteration across six months of three-week Agile cycles.
- Added usability enhancements (drag-n-drop, tree views, specialized validation) via dynamic HTML and jQuery. Created new modules from business requirements spanning UI, entities, and data access. Converted legacy Prototype framework code to jQuery across all pages.
- Standardized CSS layouts, converting table-based pages to CSS for cleaner markup and cross-browser consistency. Tested in IE6/7/8.
- Created/updated ASP.NET template-based server controls used throughout the application.
- Updated the data access layer: SQL DDL scripts, stored procedures, functions, and pre/post-deployment scripts.
USFIDELIS | Senior Developer, May 2008 – January 2010
Technologies: C#, .NET 3.5, ASP.NET WebForms, ASP.NET MVC, Windows Communication Foundation, Windows Presentation Foundation, LINQ to SQL, Entity Framework, SQL Server 2005/2008, IIS 7, Visual Studio 2008 Team System, Team Foundation Server 2008, Subversion, Team City, MSTest, NUnit, RhinoMocks
As part of the company’s growth strategy, I split the existing corporate website into three distinct .NET 3.5 websites, augmenting each with new functionality.
- Implemented ASP.NET MVC mock-ups using jQuery for rich AJAX interactions without postbacks.
- Wrote WCF services forming an application tier masking the data model; consumed directly by all websites.
- Used LINQ to SQL for ORM, with NUnit/RhinoMocks testing and Team City CI on every check-in.
- Completed the primary corporate site redesign, working with marketing on Google Web Analytics/Frontline Analytics traffic campaigns and regulatory compliance.
- Refactored the primary site to eliminate code duplication and break up dependencies.
- Standardized environment promotion (dev/staging/prod: IIS 7, load-balanced service tiers, replicated SQL Server 2008) and developed a semi-agile change management process with TFS.
To mitigate re-engineering risks, I researched and prototyped core technologies:
- WCF. Demonstrated dynamic proxy construction via custom
ChannelFactory<T>wrapper, documented binding settings, and showed parallel message reception with UI thread marshaling. - LINQ to Entities. Evaluated 3.5 (insufficient POCO/self-tracking support) and 4.0 beta (T4 templating, self-tracking entities across WCF). Concluded the ORM wasn’t mature enough and recommended further research.
- WPF. Evaluated MVVM and Prism; chose Prism for Silverlight compatibility, EventAggregator, Unity DI, and region support. Demonstrated action-level security via commanding and control-level security via visual/logical tree helpers.
- log4net. Created a custom WCF appender for asynchronous logging, enabling remote debugging without physical log files.
- ININ ICELib. Demonstrated VOIP telephony integration from within a WPF test harness without ININ’s standard client.
As part of project leadership, I wrote standards documents:
- Coding Standards. Variable naming, commenting, exception handling, refactoring, and .NET best practices enforced through code reviews.
- Solution Structure and Namespacing. Visual Studio project organization guidelines adopted by all new projects.
- Source Control Structure and Branching Strategy. Branching aligned with iteration plans; all .NET dependencies and databases moved under source control.
- Performed maintenance on the legacy line-of-business application in preparation for re-write.
- Participated in requirements-gathering focus groups and executive steering committee meetings.
- Prepared new application architecture documentation (UML diagrams, risk assessments, vision/integration documents).
- Led a design patterns workgroup educating developers for the new application.
- Analyzed third-party vendor APIs in preparation for integration.
BITMESA, LLC. | Partner, March 2008 – December 2010
Huntleigh USA (Client)
Technologies: C#, .NET 3.5, WinForms, Apache, MySQL 5, Subversion, Mantis
- Developed a .NET WinForms desktop application managing scheduled wheelchair assistance for 20+ US airports with a custom MySQL data access layer over VPN.
- Implemented XML-based caching saving data locally during network outages.
- Created PHP reports tracking individual airport team statistics.
RinaWear.com (Client)
Technologies: C#, .NET 3.5/4.0, ASP.NET, SQL Server 2008, NHibernate, jQuery
- Designed a custom e-commerce retail website with custom database schema for products, sales, and customer management.
- Integrated Authorize.net for transactions.
- Migrated from standard ASP.NET to ASP.NET MVC with NHibernate for maintainability.
FAMILY TREE DNA | Lead Developer, September 2007 – May 2008
familytreedna.com
Technologies: C#, ASP.NET, SQL Server 2005, IIS 6, Mantis, Subversion
- Assessed unfulfilled business needs and documented existing practices for a platform transition proposal.
- Established bug tracking and trained customer service reps. Achieved a 74% closure rate (217 of 293 bugs), averaging one fix every three hours.
- Mitigated two system intrusion incidents, preserving data and implementing preventative security.
- Delivered two on-time site upgrade iterations coordinating with a remote team in China.
dnatraits.com
Technologies: PHP5, Symfony, MySQL 5, Apache, Linux, Mantis, Subversion
- Developed data model, business logic, and UI components working with scientific collaborators in NY, Israel, and the UK.
- Chose Symfony for its flexibility, community support, and documentation.
- Built a secure administration portal with JavaScript/AJAX for product, customer, sale data, and financial reports.
- Developed Schema-enforced XML data exchange with a UK partner lab for orders and test results.
- Enhanced the checkout system with a dynamic discount/coupon scheme.
- Created dynamic PDF reports for customer test results and integrated a third-party appointment tracking system for genetic counselor scheduling.
NATIONAL AUTO WARRANTY SERVICES | Software Engineer, August 2006 - August 2007
Technologies: C#, .NET 3.x, WinForms, Windows Communication Foundation, Visual Studio 2005/2008 Team System, Team Foundation Server 2005/2008, Visual Source Safe
- Worked on a team of ten re-platforming a Lotus Notes legacy system for a 300+ user call center.
- Gathered business rules across administrative departments and prepared high-level documentation.
- Collaborated with the DBA on the data model.
- Implemented a C#/.NET smart client architecture (WinForms + WCF services). Designed the customer service, contract fulfillment, and administrative modules.
- Acted as liaison to the accounting subsystem team for financial operations.
- Led a refactoring initiative for under-performing core components.
RIVER CITY INTERNET GROUP | Web Application Developer, November 2005 – August 2006
Technologies: PHP 5, Java, Apache, Apache Tomcat, Linux, MySQL 4, Bugzilla, Subversion, Zend Studio
- Worked in a collaborative environment on the IntraISP enterprise ISP management system.
- Acted as production support liaison analyzing critical bugs (code and data), proposing solutions, and conducting client follow-ups.
- Bug analysis and fixes across customer registration, equipment activation, billing, financial reports, and APIs.
- Extended PHP front-end functionality and APIs; enhanced Java web services.
- Authored company-wide PHP coding standards and wrote release notes, test cases, and functional documentation.
DSDIRECT | Web Application Developer, July 2005 – October 2005
Technologies: C#, VB.NET, IIS 6, SQL Server 2000, Visual Studio 2003
- Performed requirements analysis for administration projects.
- Designed intranet sales application for auto warranty salesmen using ASP.NET (VB.NET/C#), IIS, and SQL Server 2000.
- Wrote sales interface documentation.
PROTECH NETWORK DESIGN | Web Developer, May 2004 – July 2005
Technologies: PHP 4/5, MySQL 4/5, Apache, Linux, FreeBSD, Zend Studio
- Acted as project manager and web application architect for small/medium-sized business clients.
- Performed requirements analysis, prepared sitemaps and cost quotes, and wrote documentation.
- Designed, coded, and maintained various websites and web applications.
- Developed internal project management web app tracking projects, customers, purchase orders, credit cards, hosting, and reports.
- Created reusable PHP classes (security, calendar).
- Administered a mixed Windows 2000/FreeBSD server network; performed network installs and PC maintenance.
Open source contributions
- @enotes\groot
- memcd
- amplify
- jquery-mockjax
- node-zippopotamus
- infusionsoft-api
- grunt-infusionsoft
- confide
- vette
- ventage
- nonet
- jsdoc3-dash
- l33teral
- interpolate.js
- postal.js
- footnote.js
- jsguid
- tbtree
Select published articles
- Going postal with postal.js
- Streams and Middleware in strata.js
- l33t literals in JavaScript
- Encapsulate What Varies
- ES2015 Maps
- ES2015 Generators
- Caching jQuery Objects
- Using the find Command
- Creating Reusable Code
- Destructuring Reconsidered
- Goodbye Evernote
- Book Review - The Mythical Man-Month
Published books
- Modern Web Practices
- JavaScript Frameworks for Modern Web Dev (note: While this work is now dated, Anthropic thought it valuable enough to pirate for AI model training.)
User group presentations
I was the organizer and founding member of the St. Louis ALT .NET user group from August 2010 to June 2014. In this role I secured a venue, sponsors, swag, and speakers, and delivered a number of presentations myself. I’ve also given presentations at the St. Louis JavaScript developer’s group and various developer conferences (listed below). Some of these presentations were released as screencasts on Vimeo.
- Introduction to NHibernate
- Introduction to F#
- HTML5, CSS3, and JavaScript
- Threading in C#
- .NET Micro Web Frameworks: Nancy and Jessica
- DLR Dynamic Programming
- CQRS and Event Sourcing with NCQRS
- Using Rake to Make Your Builds Majestic
- Introduction to CoffeeScript
- Going Postal with postal.js
- Async and Await in C#
- Full Frontal Fiddler
- I used redis and liked it!
- scriptcs
- What writing fiction taught me about writing software
- Github is Your Resume Now
Conference presentations
- Mastering Asynchronous Flow Control in JavaScript, or How to Avoid Callback Hell (devLink 2014)
- What Writing Fiction Taught Me About Writing Software (devLink 2014)
- Going Postal with postal.js (Kansas City Developers Conference 2013)
- Introduction to CoffeeScript (Kansas City Developers Conference 2012)
- The Nancy Micro Web Framework (Kansas City Developers Conference 2012)
- Going Postal with postal.js (St. Louis Days of .NET 2012)
Tutorials
Volunteer work
- F3 “The Chuck” - Tech Q (2022/present)
- developed The Chuck website
- work directly with F3 The Chuck/F3 St. Charles/F3 St. Louis communications teams to coordinate content and delivery
- feature project planning and implementation
- F3 St. Charles - “3rd-F Q” in New Town (2021/22)
- prepared and conducted weekly F3 QSource discussions with members of F3 St. Charles (New Town)
- planned and executed year-round, outdoor workouts for members of F3 St. Charles (New Town)
- participate in charity events sponsored by F3 St. Charles, including the St. Baldricks fundraiser for childhood cancer research, the Orchard Farm school district adopt-a-family Christmas program, and the annual food pantry drive at True Life Community Church
- built and maintained the F3 St. Charles “Make America Burpee Again” website (f3maba.com) for all F3 regions to track cumulative burpees performed in the month of January (in 2022 the cumulative total exceeded 1.5 million!)
- contributed written content to the F3 St. Louis Accelerator newsletter for the F3 St. Charles region
- LaunchCode Mentorship Program - voluntary mentor for three students (2016)
- met with students regularly to help them develop real-world applications to serve as resume pieces for potential employers
- guided students through their chosen technology stacks (PHP + MySQL, Node.js + MongoDB) and helped them understand how to construct an entire application
- my efforts directly resulted in one student getting hired immediately after mentorship program
- LaunchCode LC101 - voluntary TA and co-instructor for 6-month course hosted at UMSL (2016)
- course divided into three units; acted as TA for the first two (Python focused) and co-instructor for the third (C#/.NET Core focused)
- helped students understand and begin to use version control (Git + Github)
- co-developed and edited course material
- created sample code to help students further understand course material
- organized extra-curricular meetups to help students catch up/sharpen skills
- maintained “office hours” during the day on LaunchCode Slack chat where I fielded many questions, often from students in other classes/cities participating in the same program
References
References available upon request.
Personality (For Fun!)
Big 5 personality traits
| Aspect | Degree | Percentile |
|---|---|---|
| Agreeableness | Moderately Low | 39th |
| Agreeableness/Compassion | Moderately Low | 36th |
| Agreeableness/Politeness | Typical or Average | 45th |
| Conscientiousness | High | 87th |
| Conscientiousness/Industriousness | Moderately High | 62nd |
| Conscientiousness/Orderliness | Very High | 95th |
| Extraversion | High | 88th |
| Extraversion/Enthusiasm | High | 79th |
| Extraversion/Assertiveness | High | 88th |
| Neuroticism | Typical or Average | 47th |
| Neuroticism/Withdrawal | Moderately Low | 36th |
| Neuroticism/Volatility | Typical or Average | 58th |
| Openness to Experience | High | 83rd |
| Openness to Experience/Intellect | Very high | 94th |
| Openness to Experience/Openness | Typical or Average | 51st |
DISC Assessment result: CD (Conscientious/Dominant)
Meyers Briggs personality type: INTP
