Projects
Language: Java
A Java library for parsing and creating vCard files. It supports all versions of the vCard standard (2.1, 3.0, and 4.0), as well as xCard (XML-encoded vCards), hCard (HTML-encoded vCards), and jCard (JSON-encoded vCards).
I was a contributing member of the vcarddav and jcardcal IETF mailing lists, and am listed as a contributor in the following papers:
Language: Java
A Java library for parsing and creating iCalendar files. It supports all versions of the iCalendar standard (1.0 and 2.0), as well as xCal (XML-encoded iCalendars) and jCal (JSON-encoded iCalendars).
Language: Java
A desktop application for public libraries that aims to simplify the process of printing documents from patrons' smart phones.
Old Hobby Projects
Project | Description |
---|---|
Sleet | An SMTP server written in Java. |
PHP-HAPI | A PHP library for querying the API for a web-based game called Hyperiums. I also wrote a reference manual for the API. |
Bemuled! | A Java game similar to Bejeweled. Read the technical overview for a description of the game. |
Chumby Viewer | A Mac OS X dashboard widget that allows you to view the screen of your Chumby. |
Thumb-Thru | A Javascript utility that provides a simple way of displaying photos on your website. |
Errata Contribution | I read A Programmer's Guide to Java SCJP Certification: A Comprehensive Primer (3rd Edition) by Mughal and Rasmussen in order to prepare for the SCJP exam. I sent the authors of list of mistakes I found in the book and some made it into the online errata. |
The Game of Life | I wrote this program while reading the book The Art of Concurrency by Clay Breshears. |
JavaRanch Flair | A widget you can add to your webpage that displays the number of posts that you made on the JavaRanch forum. |
Public Wifi Terms and Conditions Accepter | A command-line Java program that automatically accepts the "terms and conditions" that are commonly shown on most public wifi networks. |
PHP Getter/Setter Generator | Generates getter/setter methods for each field on a PHP class. |
Schema Validator | Valides XML documents against an XML schema. |
Data URI Generator | Generates a data URI from an uploaded image. |
Boolean Satisfiability (SAT) Solver | Finds all solutions to a given Boolean Satisfiability problem. |
The Xillor Archivist | Downloads Hyperiums data files and imports the data into a database. |
SudokuSolver | A command-line program that solves Sudoku puzzles. |
Intro to Game Programming project | I created this as a project for a game programming class in college. Watch as alien invaders blow away helicopters in the city! |
Using the Github commits API
Last updated: 6/20/2013Some of the projects listed on this page are hosted on Github, a free, open-source code hosting service that makes it easy to share your code with other people. In order to get the date that my Github projects were last updated on, I use the RESTful Github API.
A listing of a project's commits can be obtained by sending a single HTTP GET request. No authentication is required, although the API requires that you include aUser-Agent
HTTP header with every request. The request URL contains the username of the project owner and the name of the project.
https://api.github.com/repos/USERNAME/PROJECT/commits
[ { ... "commit": { ... "committer": { "date": "2012-05-17T17:54:18-07:00", ..." }, ... }, ... }, ... ]
The data is cached in an XML file so my website doesn't have to contact Github everytime this page loads:
<?xml version="1.0"?> <github> <project name="PHP-HAPI" username="mangstadt" commit="2011/11/30 17:04:06" refreshed="2011/12/31 12:12:36" /> <project name="The-Game-of-Life" username="mangstadt" commit="2011/06/18 09:11:53" refreshed="2011/12/31 12:12:36" /> <project name="Public-Wifi-Accepter" username="mangstadt" commit="2011/06/01 07:42:34" refreshed="2011/12/31 12:12:37" /> </github>
The timestamp in the refreshed
attribute is used to determine if the data on that particular project is stale or not. If it is stale, then the Github API is queried to get the most recent data and the data is saved back to the cache.