Brian Glass

Senior Software Engineer

Profile

Skills

  • Ajax
  • Apache
  • AppEngine
  • Blender
  • C
  • CSS
  • Django
  • GeoDjango
  • Gimp
  • Git
  • Google Closure
  • Google Maps API
  • Google Docs API
  • HTML
  • Ingres
  • Inkscape
  • Javascript
  • jQuery
  • Linux
  • MatPlotLib
  • MongoDB
  • MySQL
  • Nginx
  • Perl
  • Perforce
  • PHP
  • PostgreSQL
  • Python
  • Raphael.js
  • Satchmo
  • SQL
  • SVN
  • Symfony
  • Tornado
  • Yahoo Maps API
  • XML

About Brian

Highly Experienced

With over 17 years of experience in the industry, I have a very broad background. I cut my teeth on C but prefer working with dynamic languages like Python, Perl, or Javascript. While my specialty is full-stack web development, I also have experience in Unix/Linux system administration, database management (MySQL or PostgreSQL), and general systems integration and automation using various glue languages.

Big Picture Advantage

My advantage is my big-picture understanding of technology. Having worked at many levels of various technology stacks, I have a thorough understanding of how all the pieces fit together. I am a generalist.

Bleeding Edge Tempered by Experience

While experience has tempered my sense of adventure, I am drawn to the cutting edge of technology. I continually seek new and better ways to solve problems. I thrive when I am able to choose and develop cutting edge technologies.

Experience

Google

March 2012-Present
Web Developer

Developed content management solutions for the Python/Django based Ellington content management system.

Representative Projects

  • Priority Queue

    Engineered, developed, and tested priority queue system for batching of search index updates and deletes. Utilized heapq for prioritization in conjunction with Kombu, Haystack, RabbitMQ, and Solr.

  • Photo uploader and editor

    Designed and developed photo batch upload and editing feature for Marketplace businesses. Incorporated drag-and-drop uploading, rotation, scaling, and delete using jQuery and Tastypie for both ajax and client-side operations.

  • Obituary Refactor

    Refactored obituary feature, providing moderated condolences, additional meta data, and presentation layer enhancements.

Google

February 2011-March 2012
Python Developer

I developed with Python in environments ranging from hosted Linux/MySQL to Google Appengine for both web-based applications and command-line tools. I also acted as a resource for junior python developers.

Representative Projects

  • Online Reporting Tool

    Engineered, developed, and tested a platform for developing personalized online reports

    • Collaborated throughout engineering process with tech lead
    • Developed back-end using Python/Django on Appengine with Google Cloud SQL Service
    • Secured confidential data using proprietary security measures
    • Developed Javascript front-end with Google Closure
    • Integrated markup and styles provided by project designer
    • Interacted with client and participated in product demos
  • Education and Work Experience Search Tool

    Engineered and Developed an education and work experience search tool for recruiters

    • Developed back-end using Python/Django on Appengine and Google Cloud SQL Service
    • Integrated markup and styles provided by the project designer
    • Completed the project under emergency 2-week deadline
  • Online Mail Merge Tool

    Extended and maintained mail-merge tool, focusing on improved stability and security - (Django, MySQL, Openoffice)

    • Implemented numerous security enhancements
    • Re-factored email handler to process multiple jobs concurrently
    • Improved stability through militant exception handling
    • Squashed numerous memory leaks and bugs
  • Bonus Tool

    Extended and maintained an application for rewarding bonuses - (Webapp, Google Closure, Appengine)

    • Developed on-the-fly mugshot display using Closure ajax facilities
    • squashed numerous bugs
  • Proration Analysis Tool

    Extended and Maintained a proration analysis tool - (SQLite, Google Docs API)

    • Revamped tool to improve accuracy of business day calculations
    • Re-factored significant portions of the code

5Q Communications

Dec 2009-February 2011
Programmer
Atlantic, IA

I work on a variety of web-development projects for various businesses and non-profits using both Python/Django and PHP/Symfony, Redhat and Ubuntu Linux, and MySQL and PostegreSQL.

Representative Projects

  • Parkside Church

    Visit the Parkside Church site. In this role I developed a significant number of features for the site including:

  • Biblica

    I participated in the development of a new PHP/Symfony-based site for Biblica.

    • Prepared the initial configuration of Symfony for the site
    • Managed development server hosting and maintenance of MySQL
    • Provided client support when the site was turned over to the client for internal hosting
    • Integrated HTML templates
    • Wrote numerous views, components, forms, and models
  • Eternal Perspective Ministries

    I acted as the primary developer for a Satchmo-based ecommerce site for Eternal Perspective Ministries.

  • GoCentury

    I acted as the secondary developer for a Real Estate search engine for Century Sales and Management. In this role I participated in implementation of a MongoDB repository of properties integrated into a Django-based site.

Naples Daily News

May 2009-Dec 2009
Lead Developer
1100 Immokalee Road Naples, FL 34110

As lead developer I was involved in a variety of projects. I worked closely with the Ellington and Jazbox content management systems. I was involved in some data conversion projects and some internal applications.

Representative Projects

  • Tide Map/Chart

    Visit the Tide Chart site.

    • Used Python/Matplotlib to generate tide charts (PNG and PDF) from the XTide program
    • Used Django to serve the images
    • Used jQuery and jCarousel to indefinitely scroll tide charts through time
    • Generated a map of chart locations using Yahoo Maps
  • Mug Shots

    This application was never released to the public due to ethics concerns.

    • developed Python scripts to scrape arrest data from County Sheriff websites from multiple local counties
    • generated bar and pie charts using raphael.js
    • used jQuery with the taconite plugin for ajax
    • Developed SSH-based CDN Django storage backend using Paramiko
  • Source Database

    This is an internal database reporters use to keep track of "sources."

    • Used GeoDjango and PostgreSQL
    • Customized the Django Admin.
  • Jazbox to Ellington feed
    • configured Jazbox to feed NITF to a Python server on a remote host
    • Processed Jazbox NITF into something Ellington would accept
    • Fed to Ellington with paramiko

Rocky Mountain News

September 2008-April 2009
Internet Site Developer
101 W. Colfax Ave, Denver, CO 80202

At the Rocky I was the primary Django developer. I built our Django environment from the ground up using PostgreSQL and Apache. I configured an Ubuntu RAID system for developement and hosted our public site on Webfaction. I wrote 90% of the Django code and helped train other developers to use Django. I used jQuery on the client. I developed numerous applications in a very short period of time.

NOTE: since the Rocky closed in March of 2009, many of the portions of the site I built have been shut down and so are unavailable for your viewing pleasure.

Projects

  • Holiday Lights

    This application allows people to submit their holiday lights displays and provides our readers with an interface for plotting driving routes and rating displays.

    • Configured PostGIS
    • Imlemented GeoDjango environment and Model/View structure
    • Wrote skeleton templates for our designer
    • Imported Census Bureau shape files (county, city, etc.) into GeoDjango
    • Wrote a Python function for finding efficient routes (The Traveling Salesman problem) using a dynamic programming approach and a unique combination of the nearest-neighbor and full-search method for longer routes - see source code
  • Colorado Election Results
    • Created a Python script to extract election results from a SQL Server database (fed by the Associated Press) into an XML feed for our Flash/Flex developer
    • Created a simple Django admin for our reporters to call races
    • Implemented DNS load balancing for election night
    • Configured an Ubuntu RAID server
  • Colorado County Election Profiles

    The Colorado County Election Profiles was on a very tight deadline because of the impending election. I worked with a designer/CSS artist and Flash/Flex developer to finish this project in just over 2 weeks.

    • Designed Django models
    • Converted census data to Django database using Python
    • Implemented basic Django templates
    • Created pie charts using jQuery and Canvas (with excanvas)
  • Colorado Campaign Finance
    • Designed Django models
    • Converted FEC data to Django database using Python
    • Implemented basic Django templates
  • Colorado Election History
    • Created Django environment using PostgreSQL and Apache
    • Designed Django models
    • Imported data from an Excel spreadsheet
    • Created an XML template to feed the Flash application
  • Denver Public Schools Report Cards

    Denver Public Schools Report Cards

    • Converted Excel spreadsheet to XML feed for Flash/Flex developer

Mathematical Reviews (MR)

July 1996-August 2008
Programmer/Analyst
416 Fourth St., Ann Arbor, MI 48107

MR publishes reviews of research mathematics publications and provides a search engine to our database of reviews and bibliographic information. MR's production systems run Ubuntu Linux with Apache, mod_perl and Ingres. Internal application are developed using the HTML::Mason Perl templating system.

Representative Projects

  • MathSciNet Front End

    MathSciNet is the primary public-facing product of Mathematical Reviews.

    • UI design using xhtml, CSS, and javascript with HTML::Mason templates
    • HTML::Mason templating system
    • browser compatibility testing
    • Graphics generated with Gimp and Inkscape
    • standards compliance (xhtml 1.0 transitional)
  • Scanned Document Archive

    This application is a web-based tool to scan and archive the mathematical publications MR reviews. It is for in-house use only.

    • UI design using xhtml, CSS, and javascript with HTML::Mason templates
    • managed transition from a commercial scanned image archive package (OTG) to an in-house developed system
    • converted MSSQL tables to our own table structures in Ingres
    • Class::DBI object/relation mapper and HTML::Mason templating system
    • object-oriented Perl based storage engine
    • use of Gocr and later an in-house developed barcode scanning tool for auto-identification
    • fine-tuned an open-source Perl package for detecting blank pages
    • Used PDF::API2 perl package for compiling images on the fly into PDFs for in-house viewing
    • end-user support
  • ADA (Author Database Application)

    ADA is an in-house application for identification of authors on reviewed publications. This project was a conversion from a combination of a legacy terminal-based application and a collection of printouts to an entirely web-based paperless tool.

    • updated legacy C program for finding likely author matches in our database
    • HTML::Mason templating system
    • refactored UI for a web environment using html, CSS, and javascript
    • converted ESQL C and OSL (Ingres 4GL) logic to Perl/DBI
    • refactored matching algorithm
    • end-user support
  • General Support and Administration
    • fall-back Linux administrator
    • minor Apache configuration
    • general in-house end-user support
    • general scripting
    • data conversion

Sheepology

I like to give back to the community. I started the Sheepology project for church management and church web content management. I will be spinning off several modules from that project as projects in their own right including a Django/Flex based visual tree editor and a Django webcam. If you'd like to see some of my source-code, visit this project.

Tidey

Tidey is a Python tide prediction site built on the Tornado asynchronous web server to make asynchronous calls to XTide. It uses Raphael.js for the charts. I built this as an experiment in asynchronous web servers. You can view the source-code for this project on Github.

Harvest API

I developed a basic Python API for the Harvest time tracking system using Harvest's RESTful XML-based API. You can review the source-code on Github.

Traveling Salesman Problem

When I was working for the Rocky Mountain News, I built an application that helped people find convenient routes to the nearest Holiday Lights. I have excerpted the Python function for finding fairly efficient routes using a dynamic programming approach and a unique combination of the nearest-neighbor and full-search method for longer routes - see source code.

Published Work

Training

Andrews University

1989-1993
Bachelor of Science majoring in Computer Science/Mathematics

Conferences and Trainings

Contact Brian