The Portfolio of Derek R. Brooks

Featured Projects

Here's a short list of some of the projects that I've been particularly excited about.

Narwhal November 2012

Narwhal Narwhal was the famous technology infrastructure behind Barack Obama's 2012 Re-election campaign. It was a Python-based interface and integration layer that allowed us to unify the disconnected pieces of what we knew about voters, volunteers, event-goers, voting locations, etc. I was one of the top 5 contributors to the Narwhal project.

The integration side was a small web layer that handled syncing data with our vendors in realtime. Incoming data was saved to a local database and then became queued via SQS for translation and loading (by our integration workers) into the Narwhal interface layer. Here I extended existing integrations and built some parts to sync voter applicant and precinct data.

The interface side allowed us to use this unified data to quickly build dozens of client applications for various tasks across the campaign. I spent most of my time in Narwhal building and extending models and endpoints to support client application needs. The pieces I worked on helped support pollster surveys, phone canvassing, volunteer organizing, image processing, voting location lookup, incident tracking, etc.

I also built a thin Ruby Gem that allowed our ruby based client applications to quickly and easily interface with the Narwhal API.

Des Moines Alive April 2011

Des Moines Alive Des Moines Alive is a personal project that my friend Nick Leeper and I built to help Des Moines Area people find awesome local bars and restaurants places. In addition to general merchant info, we provide 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 is to provide our visitors with the information they need as quickly as possible.

v2 - Current Version

Nick and I decided to use this version of Des Moines Alive to learn new things, play with APIs, and really switch our focus to local merchants.

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.

1 Previous Version

http://www.desmoinesalive.com

Dipity September 2010

Dipity In short, Dipity is a digital timeline web application with a hint of social networking.

We have built an incredible web-based tool that allows users to create, share, embed and collaborate on timelines that integrate video, audio, images, text, social media, geolocation and timestamps. Timeline viewers can also pan around and zoom into these timelines for a very nice, visually engaging experience.

v3 - Current Version

Building Dipity 3 is the main reason I was hired on at Dipity.

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 this new Dipity timeline widget works on mobile devices such as androids, iPhones, and iPads.

1 Previous Version

http://www.dipity.com

TowRate October 2009

TowRate TowRate is a startup that offers a custom service to towing companies. The site allows subscribed companies to manage assets, map routes, and calculate profit margins for every tow. It's built in a way that allows the towing companies to quickly run these calculations while on the phone so they can figure out the most profitable way to charge for each tow.

On this project, I was in charge of pretty much everything except for the initial design. My job involved data modeling, loads of calculations, back-end developing, front-end developing, form design, and deployment.

TowRate is a very javascript heavy application, using plenty of AJAX calls for things like sorting, recalculating rates on the fly, and grabbing map data from the Google Maps API. The Maps API is used to help determine mileage and time for each tow. From there, the app uses extensive math and formulas to help find the best price for each call.

Companies are able subscribe to TowRate on a monthly or yearly basis. I integrated PayPal Web Payments Pro to handle these subscriptions; let users join, autorenew, enter discount codes, cancel accounts, etc.

Subscribed companies can also manage their trucks (as well as truck expenses), users, tow rates, tax areas, routes, etc. It provides an all around fleet management solution to any towing company.
http://www.towrate.com/

derek.broox.com September 2009

derek.broox.com derek.broox.com is my general "home page" and development playground. Its primary purpose is to catalog my life and allow me to play with various APIs. I'd like to also think that it helps keep family and friends updated on my life, but there are enough other social networks for that these days. derek.broox.com hosts thousands of photos, videos, maps, status updates, blogs, and various other stories from my entire life.

derek.broox.com interfaces with Twitter, Facebook, Flickr, Foursquare, Google Latitude, Google maps, Last.fm, Withings, etc. It's also been known to hook into various other extinct APIs like Brightkite.

Even without major distinction between the versions, this is a constantly evolving web application.

v6 - Current Version

This version of my site was built to make my blog a bit less prominent and focus more on my internet presence as a whole.

This is also where I really began experimenting with geodata and APIs like Flickr, Twitter, Brightkite, Foursquare, and Facebook.

5 Previous Versions

http://derek.broox.com

S & C Automotive February 2009

S & C Automotive S & C Automotive is a company that provides vehicle warranties and protections to local car dealerships. If you buy a car from any of several dealerships in Iowa, you'll be offered a set of warranties - paint protection, rust protection, etc. These protections are all sold to the dealerships by S & C.

I built a web application to allow S & C to manage these protections and offer them to dealerships. The dealerships login and submit each protection they sell. Then, S & C can view, process, ship, and bill for these registrations.

Siteman February 2009

Siteman SiteMan is a Content Management System that we've written at Red 5 Interactive. It was originally built so that mall property owners could manage each of their mall property's web sites. However once we realized how powerful our system was, we decided to generalize the app and use it for everyone. That way we would have our own internal product that we could keep deploying and improving for all of our clients.

We built SiteMan to allow our clients to easily manage a single web site or a group of web sites. This way a parent company could edit any of their child web sites, while employees of the child companies would only see their respective web site.

The front-end of the sites built with SiteMan is also completely extracted from SiteMan itself, which is great for 2 reasons. First of all, it allows us to more easily keep all of our clients' systems up-to-date in that we're just updating SiteMan and not touching their presentation layer. Secondly, it also allows us to launch new campaigns and designs for clients very quickly.

When we deploy SiteMan for a client it comes with a core group of tools like user management, webpage editing, file management, audit logs, etc. From there, custom Tools can be added as plugins. These tools might include functions like, announcements, events, careers, photo management, stores, social networking, etc.

We've also built SiteMan in a way that allows users to customize their tool layout. They can pick which tools they use the most and arrange them in a way to get a quick snapshot of the exact data they're interested in. Tools can be added, removed, or sorted at any time - and everything remains just as they left it on their next visit.

This application is very Javascript heavy, making extensive use AJAX, dialog windows, and WYSIWYG editing. As such, we have minimal page loads which provides a very streamlined experience for our clients.

I am very proud and excited to have worked with such a great team on this app. It's so versatile and simple to keep pushing forward. I can't wait to see where it goes from here.

NAPA Sales Driver February 2009

NAPA Sales Driver Edwards Graphics Arts (a partner to NAPA) hired our company to build a web application for distributing posters and flyers to NAPA's retail stores. Each store can purchase any of several different promotional products. This is a process that NAPA and it's 3rd party designers had previously handled over the phone.

I built a web application to help streamline this process and eliminate phone ordering. This app allows Edwards Graphic Arts to import and edit data for the stores to order. Retail store managers can then visit the site and order their promotional products.

This site is very javascript heavy to provide a quicker user experience. I've also integrated it with Pay Flow Pro to allow for online payment.

Adium Status Plugin July 2008

Adium Status Plugin Adium is a multi-protocol chat client for Mac OS X. I enjoy it because it lets me connect to both AIM and Google Talk.

Shortly after getting Adium I installed the TwitterAdium plugin (or Xtra - as Adium calls it). The problem with this plugin was that I had too many apps hooked to my Twitter account, therefore I was running into rate limitations with the API. I had derek.broox.com, Facebook, MySpace, and Adium all hitting my Twitter account, which made Twitter sad.

Since derek.broox.com grabs and stores my Twitter status, I decided to be nicer to Twitter and write an Adium plugin to grab my status from derek.broox.com. That is exactly what this plugin does.

I built the plugin with Ruby and made it configurable via a YML file. To get my plugin set up, simply update the url and duration in the included YML file. After that, just set your Adium status to %_RemoteStatus. It's as simple as that.

Now, all of my Google Talk and AIM contacts can easily follow what I'm doing while I'm on the go.

Audit Trail February 2008

Audit Trail The Audit Trail is an internal application that I built for Red 5 interactive. When we build sites for clients, we like to track any administrative actions that take place. This way we can track down any problems - accidentally deleted data, security breaches, etc.

We were duplicating much of this functionality for several clients, so I whipped out this Audit Trail app. I've built it so that we can set it up for our clients in 1 of 2 separate ways. The first, and most commonly used way is for our sites to call the Audit Trail as a service. This way, most of our clients are hitting the same Audit Trail and we can keep a close eye on what all of our clients are doing.

The second way is to install the Audit Trail as a separate app for any given website. We generally only do this if we anticipate a large amount of logs, or if we have a client with several sites that we're hosting.

The app has proven to be very beneficial - our clients really enjoy being able to easily see who's updating what.