PHP Developer / Systems Administrator / DevOps Engineer
Minneapolis, Minnesota, USA|

Portfolio (this site)

Created: Q1 2015
Language: PHP, SQL, Laravel 5, Bootstrap.css

First site using Laravel 5 framework. Pretty minimal site with lots of HTML and screenshots / thumbnails. The screenshots were created with a PhandomJS headless webpage screenshot command. Admin areas were captured with GNU Image Manipulation Program GIMP. Git commit timestamps are queried directly from each repository and saved to a Sqlite database.

Command line (artisan)

 scrape:gitlab        Pulls down last 10 commits from Gitlab and saves it in a file
 scrape:lastfm        Pulls down last 10 songs played from LastFM and saves it in a file
 scrape:screenshot    <url> Screenshot with PhantomJS and save it as [filename] [--thumbnail=yes]
 git:commits          --repo=/path/to/project/.git/ [--out={list,json}] [--outfile=outfile.tmp]
 generate:sitemap     Generates the sitemap.xml for search engines to follow.


  • Responsive CSS, works with mobile browsers.
  • Clone of GitHub's activity tracker using kamisama/cal-heatmap. Scans most of my local repos for the timestamp of every commit, saves them to a db, and then provides cal-heatmap.js with a JSON endpoint to render the days on the graph.
  • Scrapes my recently played songs from the Last.fm API.
  • Scrapes my Git commit history from my personal private GitLab installation.
  • PhantomJS integration to easily take screenshots of websites for the Projects page.
  • Personal Blog with file upload and private scratchpad for ideas / notes.
  • RSS Feed for Blog
  • Blog supports GitHub Flavored Markdown syntax
  • Automatic daily sitemap.xml generation


  • $$$$$$$$$


Admin Login

A standard login / password screen, the same as on every other website.

Admin Post Blog

The admin (me) can log in and write a new post for the blog.

Admin File Upload

The admin (me) can easily upload files from my computer.