The Portfolio of Derek Brooks

Facebook API

I've used the Facebook API to do a bit of tinkering on my personal website and also to allow website users to easily integrate and create accounts via Facebook connect.

Here are 6 projects that I've worked on tagged Facebook API.

Screenshot of is my general home page, online scrapbook, and development playground. Its primary purpose is to catalog my life and allow me to play with various APIs and web development technologies. It serves up thousands of photos, check-ins, microblogs, blogs, maps, videos, and various other data from my life. Since 2001, it has been a constantly evolving web application.

v8 - latest version

This is the first version of my site that I completely rebuilt in a new language and platform. I moved the entire site from a containerized LAMP stack to a server-side-rendered (SSR) Nuxt.js application that relies completely on the Broox API to power its content. I chose Nuxt and SSR in order to keep my SEO and open graph / social sharing meta tags intact while still providing a speedy, asynchronous client-side browsing experience.

Voter Registration SaaS

Screenshot of Voter Registration SaaS
Voter Registration SaaS was a thin, skinnable, multi-lingual, voter registration web application built on top of the DNC's Voter Registration API. This app lived in several places - most notably at the hilariously named, which was mentioned by President Obama in several speeches, on television, within social media and even on reddit. In most states, this application basically acted as a fancy PDF filler that the user could print and mail in. However, it also allowed us to capture their information so that we could follow up and target that potential voter in the future. I inherited this application early-on and was in charge of making sure it was both stable and scalable while overseeing implementation of the campaign's evolving feature requests. It was one of the most interesting applications to scale because it rarely received organic traffic. It would get absolutely slammed when the president or some celebrity mentioned or linked to the application in speeches, on air, or in social media. This was addressed by extensive caching, limiting dynamic content on landing pages, and queueing API requests in the event of API downtime or latency. The queueing backup that I implemented (using Amazon's SQS) saved us thousands of voter registrations alone. We also made this application embeddable and eventually open sourced the core of it.

Call Tool

Screenshot of Call Tool
Call Tool is a phone canvassing web application used by both Obama for America and the DNC. In its simplest form, it provided volunteers with a potential voter to call and a relevant script to read. The volunteer could then record the answers from the potential voter, which were used to learn more about how the campaign should be operating or targeting individuals. Underneath its shell, Call Tool had a fairly complex architecture that proxied all of its data through our Narwhal API and interfaced with a Voter Checkout Service API and synced with 2 of the campaign's vendors. I architected and built the Call Tool web application and its communication with the Narwhal API from the ground up. I also extended several parts of the Voter Checkout Service to make it more performant, tighten protection against fraudulent callers, and better integrate with our vendors. As I took on other tasks on the campaign, I worked with other engineers and oversaw all development on the application.


Screenshot of Artworks
Artworks was a web application that allowed Obama supporters to vote on items in a contest. It was primarily used for promotional poster competitions. This app was built in PHP using the Kohana PHP framework. I worked on some of the core functionality of this application as well as built the basic CMS. I also integrated it with Facebook's Open Graph API to allow users to login to vote as well as publish custom open graph actions to their timeline. Unfortunately we launched this before Facebook's custom actions had publicly launched, so we didn't get to use that portion of the app.

Des Moines Alive

Screenshot of Des Moines Alive
Des Moines Alive is a personal project that my friend Nick Leeper and I built to help Des Moines Area folks find awesome local bars and restaurants. In addition to general merchant info, we provided users with aggregated data such as reviews, foursquare tips, merchant tweets, etc. We designed Des Moines Alive to be very lite and easy to navigate. The goal was to provide our visitors with the information they wanted as quickly as possible.

v2 - latest version

Nick and I decided to use this version of Des Moines Alive to learn new things, play with APIs, and switch our focus to local businesses. We built our own custom PHP MVC, with ideas borrowed from our experiences with Rails and Kohana. We redesigned our database to be more efficient. We also began using many more APIs such as SimpleGeo, Google Maps, Facebook, Foursquare, and Twitter to aggregate data and give our users more information.


Screenshot of Dipity
In short, Dipity was an interactive digital timeline web application with a hint of social networking. We built an incredible web-based tool that allowed users to create, share, embed and collaborate on interactive timelines that integrated video, audio, images, text, social media, geolocation and of course, accurate timestamps. Timeline viewers could pan around and zoom into these timelines for a very nice, visually engaging experience. Being that it was all built in vanilla javascript, it even worked, and was incredibly responsive, on mobile devices, ipads, etc.

v3 - latest version

Building Dipity 3 is the main reason I was hired. Version 2 was a couple years old. The design was dated, its timeline widget was built on the YUI library, and was generally inefficient. Dipity 3's goal was to update the look, improve the widget's efficiency, support HTML5 guidelines, function on mobile devices, and provide several new features. I built the front-end from the ground up, added several new features in both the front and back end (including Facebook connect, better registration process, etc), and worked closely with our other part-time engineer on the completely rewritten javascript timeline widget. I spent a lot of time making sure that the new Dipity timeline widget worked on mobile devices such as androids, iPhones, and iPads.