Back end work

Weasyprint Open source - GitHub, Mar 2015

WeasyPrint converts web documents (HTML with CSS, SVG, …) to PDF.

Contributed 'Support for named strings in margin-boxes' feature. In short, this feature allows content in the margin-boxes (the area outside a document when a web-page is rendered as print media) to be determined by content in the pages. For example, a chapter title in a margin box at the top of the page is re-assigned with every occurence element with a certain CSS class, resulting in an indication of the current chapter.
After identifying an existing issue discussing the feature, I volunteered and was guided to read the latest draft of the CSS3 specification in order to get a full understanding for the feature. I incorporated some initial feedback and adjusted for PEP8 compliance [coding style guidelines] and a compatibility issue detected by the projects continuous integration service (accommodate older versions of Python by importing 'xrange()').

Sherlock And Me Independent

  • Django 1.7 (originally 1.5) app - Sales, bookkeeping and production* of personalized books
  • Printed books are generated on a local machine via Weasyprint (python - HTML to PDF)
  • Shopping cart adapted from Satchless (Django-compatible python package) enables PayPal checkout (django-paypal) of multiple purchases in a single transaction.
  • Purchases can be associated with schools (or other groups), enabling profit-sharing and payments by-check (delivered in person).

*Production consists of substituting variables for multiple character names, pronouns (accounting for gender) and other changes based on decisions made in the story. Progress is stored in the browsers’ local storage using an adapter for Backbone’s sync function.

Using a custom notation and parsing technique, personalized books can be rendered wholly on the backend (in the case of generating a PDF for printing), wholly on the front-end (enabling the full range of dynamic features [using Underscore-js templates]) or a mix of both (allowing for variables assigned at runtime with minimum computation on the front-end.)

Employed work

At Muzzy Lane Software (educational browser-based games) I received training in Python and worked across the MVC framework. A large portion of my work was on the 'MHPractice' website which is complex (reporting multiplayer game-data to instructors and students) and large-scale (thousands of users per day). I worked on critical portions of their service including:

  • UI/UX - some independently, some following mockup (ex. implement data visualization using JavaScript graphing library)
  • Game-data synchronization
    • Import/export of XML data (Python, PostgreSQL)
  • Authentication
    • Product registration/authentication & account-creation for Single Sign On (SOAP)
  • Website deployment (new-server/-environment configuration & updates to live sites)
  • Quality Assurance / release management / project technical-lead