Lead Software Engineer
2021 - PRESENTGo-UPC- Developed an API for matching UPC and EAN numbers (i.e., barcodes) for the name, image, description, and other product information.
- Aggregated product information from over 15,000 unique websites by large-scale web crawling and a proprietary AI product-detection algorithm.
- Engineered a mechanism for locating products on the fly when the system could not find a matching product in its local database.
- Designed and co-developed a complex product distillation algorithm to select the most relevant and highest quality product information from various sources.
Technologies: Scala, Java, JVM, PostgreSQL, API Design, NGINX, Google Ads, JavaScript, HTML, CSS, Test-driven Development (TDD), Git, API Development, Data Scraping, HTML5, SQL, HTTP, IntelliJ IDEA, User Interface (UI), User Experience (UX), Software Development, REST APIs, Web ScrapingCTO
2014 - 2020Spendabit- Constructed a search engine with an index of millions of products from hundreds of independent data sources (online stores, mostly).
- Developed a proprietary scraping engine that identifies and imports products from arbitrary eCommerce websites. Some call it "AI"—just point and fire.
- Devised novel algorithms ("tricks") for improving search-result relevance beyond standard keyword matching methods.
- Managed a test suite covering hundreds of use cases and edge cases across search, scraping, and basic app functionality.
- Designed a responsive user interface with HTML5, CSS, Bootstrap, and a sprinkling of JavaScript.
- Designed and implemented an API to enable third-party integrations with the search back end.
Technologies: PostgreSQL, Scalatra, Scala, API Development, Web Scraping, Data Scraping, Search, Java, JVM, Search Engines, Search Engine Optimization (SEO), JavaScript, HTML, CSS, Test-driven Development (TDD), Bitcoin, Cryptocurrency, ScalaTest, Git, API Design, HTML5, SQL, HTTP, IntelliJ IDEA, SBT, User Interface (UI), User Experience (UX), Software Development, REST APIsSenior Software Engineer
2015 - 2019Salon Lofts- Supported and extended an online-scheduling system used by thousands of stylists across the United States.
- Dramatically expanded the application's test suite to include hundreds of "full-stack" test cases (tests running against a real web browser, interacting with the full application more or less as a real user would) and thousands of unit tests.
- Developed a "waiting list" system that attempts to autofill schedule openings by interacting with clients via SMS when an opening arises (using a bit of "natural language processing" to read client text messages, etc.).
- Built the interface and API integration to permit stylists to require a credit/debit card when booking an appointment.
- Implemented a feature to allow stylists to enforce cancellation policies (requiring clients to provide a credit card when booking).
Technologies: Amazon Web Services (AWS), Elasticsearch, MySQL, RSpec, Ruby on Rails (RoR), Ruby, Darcs, Git, RubyMine, Buildkite, Travis CI, Natural Language Processing (NLP), Scheduling, Credit Card Processing, Stripe, JavaScript, HTML, CSS, Test-driven Development (TDD), Amazon S3 (AWS S3), Software DevelopmentLead Developer
2014 - 2015FreshAddress, LLC- Supported a second-hand Rails application with limited documentation.
- Extended the Rails app to add new features ranging from enhanced search functionality to user interface improvements.
- Reverse-engineered many app components for lack of solid documentation.
Technologies: Sphinx Search Engine, MySQL, Ruby on Rails (RoR), JavaScript, HTML, CSS, Git, Software DevelopmentChief Programmer and Technologist
2009 - 2014DownsizeDC.org & Zero Aggression Project- Designed and implemented the "Educate the Powerful" System, a tool enabling constituents of the U.S. Congress to quickly and efficiently contact their representatives via automation of congressional web forms.
- Developed a polling and petitioning application for ZeroAggressionProject.org using a Scala and Scalatra microframework.
- Maintained several websites across several servers, including individual and shared test suites, to keep them ticking smoothly.
- Developed custom mailing-list management software (as a replacement for the rickety phpList open-source tool) used to send regular mailings to a 30,000-subscriber mailing list, coded in Scala and leveraging the JavaMail stack.
- Provided counsel on all of the organization's technical matters.
- Delivered technical support to the organization's user base and the team.
Technologies: Linux, Apache Tomcat, MySQL, PostgreSQL, PHP, Java, Scala, JavaScript, HTML, CSS, SQL, IntelliJ IDEA, Software Development, MailchimpSenior Developer
2008 - 2009Pubget- Held one of two development roles in getting the Pubget bio-science search engine off the ground.
- Led the development of a powerful screen-scraping engine, enabling Pubget to aggregate articles from thousands of scientific journals and provide access to the latest journal articles days or weeks ahead of the then industry-standard PubMed.
- Leveraged a powerful Solr search server, distributed across many physical machines, to provide split-second search across the content of millions of scientific articles.
- Experienced a startup company going from the "out-of-the-garage" phase to becoming a "real" company with an office, proper staff, and the things that go along with that.
- Spearheaded the company's automated testing efforts (unit tests, etc.).
Technologies: Apache Solr, MySQL, Ruby on Rails (RoR), JavaScript, HTML, CSS, Data Scraping, Software Development, MongoDB, Django, Web ScrapingLead Developer
2005 - 2007SCRIP-SAFE- Developed a Java/J2EE-based web application to enable educational institutions to securely exchange confidential documents (namely, student transcripts).
- Leveraged many agile (compared to other Java technologies, anyway) and open-source technologies, including Hibernate, Spring, and Lucene.
- Worked with non-technical people within the organization and at institutions to understand the requirements and needs of those in the industry.
Technologies: Linux, Apache Lucene, Spring, Hibernate, Apache Struts, Java, JavaScript, HTML, CSS, Software Development