Try clicking a square!

What you see in the background is my Javascript implementation of Conway's Game of Life, but with the ability for you to interact with it.

Projects I've worked on

History Object


A Python Decorator that when used will track the history over time of all attributes of an Object. The Decorator will provide a history dictionary attribute for the object that contains the names of the object's attributes as the keys and a corresponding List of said attribute's values over time. <the_object>.history[<the_attribute>][-1] will always be the most recent change.

>>> from history_object import History
>>> # Usage
>>> @History()
>>> class T():
>>>     def __init__(self, x):
>>>        self.x = x
>>> test = T("Hello World")
>>> test.history['x']  # ["Hello World"]
>>> test.x = "Goodbye World"
>>> test.history['x']  # ["Hello World", "Goodbye World"]



A website that serves as a place to show off some of the great programming work I've done over the years!

Samanage Slack Slash Command


A simple Sinatra application that allows a user to create a new support ticket in Samanage using a slash command in Slack.

/ticket name = "Title for ticket", description = "Description for ticket", requester = user@domain.com, priority = Low

LXML to Dict


A method allowing for the conversion of an lxml.objectify element to a Python Dictionary for those more familiar with a Dictionary object rather than an XML object.

>>> from lxml_to_dict import lxml_to_dict
>>> # Usage
>>> lxml_to_dict(<the lxml.objectfy.Element>)
>>> root = objectify.Element("root")       # <root><root>
>>> b = objectify.SubElement(root, "b")    # <root><b></b><root>
>>> b = objectify.SubElement(root, "b")    # <root><b></b><b></b><root>
>>> a = objectify.SubElement(root, "a")    # <root><b></b><b></b><a></a><root>
>>> lxml_to_dict(root)                     # {'root': {'b': None, 'b1': None, 'a': None}}


Ruby (Ruby on Rails)

A web application for print requests from the repographics print lab at Westmont College. This includes a homepage where users can see their print jobs with a status (To be printed, To be billed, completed), a form for filling in requests and uploading files, and a page to view the costs for each form attribute.

Prints2Go HomePage

Prints2Go Form

Prints2Go Costs

Companies I've worked for