My Work At ILAO

In my years as a technologist/web developer in legal aid, I've gotten to work on a lot of different projects.  Here is some information on some of my favorite projects and features. They run the gamut from smaller features to large-scale multi-year projects, from simple pieces of ColdFusion code to complex multi-service architectures and finally to our Drupal transformation project.

My primary job at ILAO has been to manage the development of its four substantive websites:,,, and  The websites are all ColdFusion-based websites.  For the last several years, we've been essentially a one-person development shop and I wear a lot of different hats: project manager, analyst, wirerfamer, front-end developer, back-end programmer, tester, troubleshooter, technical support specialist, and documenter. We had a graphic designer for a few years early on and on-and-off contract developers.  I now manage two excellent part-time contract programmers who have been an invaluable addition to our team.

Rebuilding ILAO in Drupal

We just kicked off a rebuild of all of ILAO's websites from ColdFusion to Drupal.  I am the technical architect and lead developer for the work.  We're blogging the progress of the project at  


Statewide Online Access System

This initiative is a multi-year project to add allow users of determine if they may be eligible for legal assistance from participating organizations. For users who are allowed to apply, their application is electronically transferred into the case management system of the participating agency.  The project combines ColdFusion, JBoss' Drools engine, and XML technologies.  ColdFusion (along with HTML, Javascript, CSS) provides the front end to the system and manages the session objects required.  A library of Drools Rule files provide all of the logic needed to triage a user through the system.  We use REST to pass data back and forth.  For example, ColdFusion will pass the client object to Drools who will reply with instructions to ask a question or exit the system.  ColdFusion then executes the instruction (if a question is returned from Drools, it generates the user interface to ask it; if an exit is reached, it processes the type of exit).  To transfer an application, the system generates an XML packet and sends it via HTTP to the case management system. With our program staff and partners, I designed the system's architecture, prototyped the application, managed the software development, coded pieces of it, coded the substantive rules developed by the programs, tested the application, and oversaw its deployment.   

In 2014, we recieved Law Technology News' Innovations in Pro Bono award for this system.  or more information on the project, see ILAO's Research and Development page.

Mobile Apps

I created two mobile apps at Illinois Legal Aid Online, both available on iTunes.  The Legal Aid app provides legal information and referrals to legal aid for individuals in Illinois.  the Illinois Pro Bono App provides legal information, inlcuding a desk reference, a search for pro bono opportunities, and an event calendar for attorneys who are interested in providing pro bono services.  Both apps are built using the jQueryMobile library for the interface, PhoneGap to provide native integration (mostly for email, calendar, and contacts) and JavaScript, HTML, CSS, and a SQLite database for the content of the app.  We exposed services via remotely accessible ColdFusion components to share content and data between our content management system and the apps.    

Mobile Commons SMS

I'm working on a project now that will integrate legal content and referrals from our statewide platform with Mobile Commons, which allows for enterprise-level texting.  As part of this project, I've designed a front end interface that allows our staff to create campaign data that can then be exposed as a JSON-producing web service and called via Mobile Commons' mData API.  

A Custom Content Management System

One of my earlier projects at ILAO was to rewrite our entire custom content management system.  At the time ILAO was founded, there wasn't really any good off-the-shelf options out there like there are now.  So ILAO created their own platform, using ColdFusion and SQL Server.  In 2007, I, along with our graphic designer, rebuilt the entire CMS.  Our CMS supports various content types, including standard types like html/text and files, but also a couple of custom content types--a "Guide Me" module, which uses a custom builder I developed using a combination of Adobe Flex, Flash remoting, and ColdFusion components and a special player also built on Flex, and a Webcasting Module, that I co-developed with an outside contract developer that uses Adobe Flex, Flash Media Server, and XML that allows authenticated users of our websites to record live webcasts and for our content managers to then "archive" them with transcriptions and chapters. 

Over the years, we've added new features to the CMS including a Content Quality Assurance system that prioritizes content for review and allows the content managers to track substantive content reviews and a ticket-based content tracker system.

Solr Search Integration

I led the implementation of an updated search on and that replaced the built-in ColdFusion search with a standalone Solr search engine.  I set up Solr, designed the schema we now use, implemented the REST calls from within ColdFusion to interact with Solr, built tools to support stop words and a thesaurus and built the tools to support bulk indexing as a nightly scheduled task in ColdFusion, including extracting binary data, updating the index, and restarting Solr.  In 2013, I extended the search to build additional support for volunteer opporutunities on

Event Registration System

As part of our calendar system, I created tools that allow authenticated users to set up event registration for calendar events.  The system supports a customizable registration form, email notifications, and a waiting list.  

Mentor Matching System

As part of, I designed and oversaw the development of a mentor matching system that matches users who agree to act as mentors with indviduals looking for a mentor.  The system uses a complex match algorithim I developed to pick best likely matches from the system based on profile criteria and then allows the user to select a match.  The match can then either accept or decline the invite.  A number of reporting modules allow admins to evaluate the system.

Internship Application System

I developed a system on, with administrative tools on that initially was designed to allow law students to apply to a number of legal aid agencies for funded summer and spring internships and replaced a system based on paper applications and lots of copying and mailing.  The system allows the funder to administer the program, set allocations for the number of interns an organization can hire, edit organization profiles, review applicants, and generate reports.  It allows staff at the organizations to download and review applications. It allows law students to apply online via a standard application form.

In 2013, this platform was extended to support internships and fellowships with different (or no) funding.  Authenticated users posting an internship or fellowship can use a customizable application form, indicate funding choices, and accept and manage online applications.


I'm working on a project now to tie to an instance of Moodle.  We are expecting to sync users across both systems and integrate course registration and other information from Moodle into

Google APIs

I integrated the Google Translate API into our content management system.  This integration allowed us to generate new content in Spanish from English contnet by copying English metadata and translating the content in the background into a new piece of content where it can then be reviewed, edited, and published.

I'm starting a project now, as part of a statewide initiative to share information among legal aid providers, to integrate data from Google Analytics into the CMS.  Ideally, we will be able to easily view Google Analytics data segmented by legal problem code, content type, and other CMS-specific data.

API Development

I created a series of REST-based services for our legal content, news, organziations, events, and volunteer opportunities that alllow anyone with service access to be able to pull content from our system into another system over ATOM.  It uses an ILAO-specific namespace as well as elements from the Dublin Core and Amazon's open search.  It is currently being used to pull legal content from the websites into the case management system of several legal aid programs in the state.  We expect to extend it in the next few weeks to allow our content to be integrated with

Taxonomy Development: The National Subject Matter Index

Early in my career, I participated in a standards group within the national legal aid community and served as the primary document author of the National Subject Matter Index, which is a taxonomy for categorizing legal content within the legal aid context.  It is used by all of the 54 states and territiories that have statewide legal aid websites.  The NSMI is available here and more information on it can be found on LSNTAP's website.