Michael Angstadt's Homepage
programmer, teacher, artist, frontiersman

Projects

Last commit: 08/31/2017 How I get this date
Language: Java

A Java library that can parse and create vCards. 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'm also a contributing member of the vcarddav and jcardcal IETF mailing lists, and am listed as a contributor in the following papers:

Last commit: 10/14/2017 How I get this date
Language: Java

A Java library that can parse and create iCalendar files.

Last commit: 10/16/2017 How I get this date
Language: Java

A chat bot for the Java chat room at Stack Overflow.

Last commit: 10/21/2017 How I get this date
Language: Java

A GUI program written for a Minecraft server I play on. It screen-scrapes your player's in-game monetary transactions from the server website and organizes the information in useful ways.

Small/Inactive Programs

Using the Github commits API

Last updated: 6/20/2013

Some 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 a User-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

The response contains the twenty-five most recent commits sorted by date descending and is encoded in JSON. The sample below shows the data that my website parses from the response (the actual response is fairly large).
[
  {
    ...
    "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.

View the source

Back to top