Scroll To View More
Chris Wagner, Software Developer in Toronto, ON, Canada
Chris Wagner

Software Developer in Toronto, ON, Canada

Member since December 12, 2014
Chris has over fifteen years of experience developing software, with over a dozen focused around web technologies. He has written applications in languages ranging from the dynamically-typed scripting family (PHP, Ruby, etc) to cutting-edge 'functional' offerings including Scala and Haskell. He's particularly excited about Bitcoin at present, believing crypto-currency could change money the way the Web changed how we access information.
Chris is now available for hire

Portfolio

Experience

  • Agile Software Development, 15 years
  • PHP, 12 years
  • Test-driven Development (TDD), 12 years
  • PostgreSQL, 12 years
  • Ruby, 10 years
  • Python, 8 years
  • Scala, 7 years
  • Haskell, 5 years
Toronto, ON, Canada

Availability

Part-time

Preferred Environment

Linux, IntelliJ IDEA (RubyMine, etc), Git

The most amazing...

...thing I've developed recently is a search engine for things you can buy with Bitcoin (Spendabit).

Employment

  • CTO

    2014 - PRESENT
    Spendabit
    • Developed a custom “scraper” engine capable of locating and importing products from arbitrary eCommerce websites.
    • Constructed a search engine with an index of millions of products from hundreds of external sources (eCommerce websites, primarily).
    • 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 using HTML5, CSS, Bootstrap, and a sprinkling of JavaScript.
    Technologies: Scala, Scalatra, PostgreSQL
  • Senior Software Engineer

    2015 - 2019
    Salon Lofts
    • Supported and extended an online-scheduling system used by thousands of stylists across the United States.
    • Extended application's test-suite to include hundreds of "full-stack" test cases (full-stack meaning, running against a real web-browser, interacting with the application more or less as a real user would).
    • Developed a "waiting list" system that attempts to auto-fill schedule openings by interacting with clients via text messages when an opening arises (with a dab of "natural language processing" to try to determine which clients are most/least likely to be available).
    • Implemented a feature allowing stylists to enforce cancellation policies (by requiring some/all clients to provide a credit-card when booking).
    Technologies: Ruby, Ruby on Rails, Rspec, MySQL, Elasticsearch, AWS
  • Developer

    2014 - 2015
    Emailium
    • Supported a second-hand Rails application with limited documentation.
    • Extended said 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: Ruby on Rails, MySQL, Sphinx
  • Chief Programmer and Technologist

    2009 - 2014
    DownsizeDC.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 Scala and Scalatra micro-framework.
    • Maintained a number of websites across several servers, including individual and shared test suites to keep it all ticking smoothly.
    • Developed custom mailing-list management software (as 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 as well as the team.
    Technologies: Scala, Java, PHP, PostgreSQL, MySQL, Tomcat, Linux
  • Senior Developer

    2008 - 2009
    Pubget
    • 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 which enabled Pubget to aggregate articles from thousands of scientific journals and provide access to the latest journal articles (from Nature, JAMA, etc.) 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: Ruby on Rails, MySQL, Apache Solr (search platform)
  • Lead Developer

    2005 - 2007
    SCRIP-SAFE
    • Developed a Java/J2EE-­based web application to enable educational institutions to exchange confidential documents (namely, student transcripts) securely.
    • Leveraged a number of agile (in comparison 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: Java, Struts, Hibernate, Spring, Lucene, Linux

Experience

  • Spendabit (Development)
    https://spendabit.co

    Spendabit is a search engine for things you can buy with Bitcoin. It searches across and aggregates products from thousands of merchants across hundreds of data sources (eCommerce websites, CSV data feeds, etc).

    Spendabit is a Scala-based application leveraging PostgreSQL on the back-end for general data storage and for search (using the PostgreSQL Full Text Search extensions), as well as a number of Java and Scala libraries (such as Slick for database access). It leverages state-of-the-art "scraping" (web crawling) technology to import, and keep up-to-date, the majority of its products.

  • DownsizeDC.org (Development)
    https://downsizedc.org/

    DownsizeDC.org is an educational venue, but also a platform for (primarily US-based) people to advocate the case for liberty on a multitude of issues. The most notable component is the "Educate the Powerful" system, which presents a very simple user-interface atop a powerful back-end that automates the web-based contact forms of members of the US Congress, using a large set of rules and heuristics. It handles several hundred contact forms without the need for website-specific rules or coding, and even handles Captchas and other similar roadblocks.

    Its functionality is probably best illustrated by visiting and interacting with one of the campaigns. Here is the URL for the "Read the Bills Act" campaign, for example: https://downsizedc.org/etp/rtba/

    DowsizeDC.org is a primarily PHP-based application with PostgreSQL as the data store.

  • Zero Aggression Project (Development)

    The polling and petitioning application at ZeroAggressionProject.org aims to both recruit people to the position of the Zero Aggression Principle (a.k.a. Non-Aggression Principle) and offer a platform for recruitment and advocacy to existing adherents to the principle.

    The application presents potential respondents with a series of "panels" positing facts, questions, hypothetical scenarios, and general arguments regarding the particular "campaign" (for example, "drug prohibition" or "immigration"). Responses are recorded in a database and re-presented to users in a visual fashion.

    The back-end is written in Scala, leveraging the Scalatra micro-framework, with PostgreSQL as the data store. The front-end makes use of Bootstrap and jQuery.

  • BitcoinChipin.com (Development)

    BitcoinChipin.com is a bit of a pet project but presents a clean, elegant user interface. It is a simple tool that provides users with a graphical widget, embeddable on their own website or blog, which they can use to encourage people to donate, via Bitcoin, to a particular cause (e.g., "Help us feed the homeless").

    BitcoinChipin.com is mostly PHP-based, with MySQL for the database, and Bootstrap and jQuery for UI components. It uses the Blockchain.info API for interacting with the Bitcoin network (retrieving balances).

Skills

  • Languages

    PHP, HTML5, HTML, Python, Ruby, Scala, SQL, Java, Haskell, JavaScript
  • Paradigms

    Agile Software Development, Test-driven Development (TDD), Model View Controller (MVC), Unit Testing, Functional Programming, Test Automation, Concurrent Programming
  • Platforms

    Debian Linux, Linux, Ubuntu Linux, R3 Corda, Blockchain, Apache Server, Windows, MacOS
  • Other

    Agile Software Testing, Cryptocurrency, HTTP, Bitcoin, Encryption, Cryptography, ID3
  • Frameworks

    Bootstrap, Scalatra, Smarty, Play Framework, Zend Framework, Flask, Django, Ruby on Rails (RoR)
  • Tools

    IntelliJ IDEA, Git, Subversion (SVN), bzr, MailChimp, PhpStorm, SBT, Apache Solr, ScalaTest, Celery
  • Storage

    PostgreSQL, JSON, MongoDB, Sphinx Search Engine, MySQL, CouchDB
  • Libraries/APIs

    jQuery, Slick

Education

  • Bachelor of Engineering degree in Computer Science
    2001 - 2005
    Ohio University - Athens, Ohio
I really like this profile
Share it with others