Jim Crossley ***** West Road, Roswell,
Georgia **075
404-***-**** (C)
770-***-**** (H)
***@*********.***
http://jim.crossleys.org/
Objective To build beautiful things with smart
people; to advance open standards and open-source software; to practice
my craft
Skills Web Technologies
XHTML, JavaScript/Ajax (JQuery, Prototype, Scriptaculous, YUI),
Ruby On Rails, Django, CSS, RSS, XSLT/XPath, mod_rewrite,
VoiceXMLJava (12+ years)
J2EE (JMS, EJB, JMX, JNDI, JDBC, JSP), Spring, Hibernate, Many
Apache libraries and frameworks, Maven, Ant, Ivy, JUnit, TestNG,
Jiniagile ("small-a") practices
Iterative design, Test-emphatic development, Refactoring,
Collaboration, Build Automation, Continuous Integration (Hudson,
Continuum, CruiseControl, Anthill)Server Administration
Linux (Ubuntu, Debian, Redhat, CentOS, Gentoo), Apache, JBoss,
Jetty, Tomcat, VoiceGenie, Squid, Asterisk, VMware, PuppetRevision Control
Subversion, Perforce, CVS, GitC++ (3+ years)
STL, ACE, TAO, Rogue WaveMiscellaneous
Concurrent programming, MVC, SQL, Emacs, Clojure, Ruby, Python,
Grinder, CORBA, Shell scripting
Experience
Red Hat, Inc. --
Roswell, GA (5/10-Present)
Principal Software
Engineer
Core contributor to TorqueBox and Immutant
projects.
Silverpop Systems, Inc. --
Atlanta, GA (6/08-5/10)
Application Architect
Responsible for technical direction, mentoring, and training;
helped establish development best practices, including
automated testing, continuous integration, code reviews,
standard project structure and build tools.
Selected to be on first "agile pilot" team, refining the
recommendations of an independent consultant to produce the
standard agile development practices rolled out to every
engineering team.Selected to be on a skunkworks team to create Silverpop's
"inbound marketing" service, a tool used by marketers to
gauge consumer reaction to their products; parsing, storing
and rendering relevant data from Google, Bing, Yahoo,
Technorati, Twitter, Alexa, Quantcast and others. It was the
first Ruby On Rails application developed at Silverpop.
WebSingularity, Inc. --
Atlanta, GA (10/07-6/08)
Senior Engineer
Designed and built several web components for small start-up
focused on local business search, social networking, and
recommendation engines.
Bizzlr.com -- A Ruby on Rails "local search" application
deployed on the Facebook, MySpace, and Hi5 platforms, as well
as standalone. The app was designed to encapsulate the
differences between the OpenSocial and Facebook API's so that
a single deployment served all four platforms.PeoplePIM.com -- Co-designed the initial model and
architecture for a comprehensive social networking site that
included profile, contacts, messaging, calendar, local
business reviews, resource sharing, and more. Also developed
the remote API, allowing interaction with the site via both
email and SMS (OpenMarket). Built using Python and
Django.
Tandberg Television, Inc.
-- Duluth, GA (11/06-10/07)
Senior Software
Engineer
Helped design and develop Tandberg's OpenStream
Switched Digital Video solution, focusing on two areas: 1)
introducing Maven/Continuum to simplify the automated
build/release process, and 2) refactoring the EJB3 entity
relationships and the transactional services that acted on them
to minimize data access and increase performance. Using JBoss
4.0.5, Oracle 10, JDK 1.5 and Linux RHEL4.
DemandVoice, LLC --
Alpharetta, GA (8/06-11/06)
Consultant
Built SpeakFeed.net, a Ruby on Rails VoiceXML
news aggregator. Users subscribe to RSS feeds, and then call a
special number on their phone to hear their contents, using voice
or DTMF commands to navigate the stories.
CPT International, Inc. --
Marietta, GA (02/03-10/06)
Senior Technical
Advisor
Responsible for the establishment of effective web
infrastructure, development best practices, and knowledge
transfer through research, collaboration, mentoring, and
training. Development included both application and system
software, with an emphasis on the latter.
Developed an automated testing framework for
speech-enabled VoiceXML applications, capable of both
functional and stress testing. The service would compile
scripts written in a simple DSL into VoiceXML, place the
outbound calls on a clustered VoiceGenie gateway and tabulate
the results. It included a web proxy component that would
dynamically "decorate" audio files with specific DTMF tones
when requested by the application under test, enabling the
testing application to "hear" expected prompts in response to
specific inputs, e.g. DTMF, TTS, or audio. The entire
application was written in Ruby.Led the design and development of middleware to
facilitate the exchange of data with 3rd-party web sites. The
multithreaded, high-throughput service provided a simple Java
API implemented as an EJB Stateless Session Bean enabling
access to 3rd-party databases exposed via any text-based HTTP
interface, e.g. SOAP, XML-RPC, or plain HTML. Encapsulating
the transformations of the clients' requests and responses
using XSLT stylesheets, the project used many best-of-breed
open source tools including HttpClient, JTidy, and
dom4j.Developed a robust application of common Linux utilities
(ssh, rsync, at) to automate scheduled software distribution,
configuration changes and staged, reversible production
deployments to various secure networks of Linux servers.Enabled customers to test their VoiceXML applications
hosted on their own web servers, providing secure access to
the system logs generated by the VoiceGenie platform within
our internal network, requiring sophisticated parsing of the
log files to only reveal data relevant to each customer's
specific application.Developed project templates based on Maven and Struts
that enabled the quick construction of J2EE VoiceXML
applications stubbed out enough to be immediately deployable
and reasonably functional, resulting in a uniform source code
structure across all CPT projects for Struts actions, static
content, project documentation, and unit tests.Instituted a policy of "idempotent system administration"
in which system configuration was maintained under revision
control, and installation shell scripts were written
according to a convention such that any compatible Linux
server could be configured with a specific "release" of
system software. This greatly simplified the management of
the applications' system dependencies.Implemented a DMZ-style web architecture for hosting
customer voice applications. Used clustered Apache nodes as
SSL accelerators and reverse proxies to JBoss/Jetty app
server clusters, providing secure, efficient access to
various resources, including VoiceGenie VoiceXML gateways and
MySQL databases.Championed the conversion of revision control system from
Starteam to Perforce after extensive evaluation of multiple
SCM products. Led the effort to port the existing codebase
and established administrative policies and procedures
resulting in a more streamlined project lifecycle and minimal
dependence on sys-admin personnel.
Equifax, Inc. --
Alpharetta, GA (07/02-01/03)
Senior Developer
Co-led a team responsible for the reengineering
of existing mainframe processes into a more automated and
distributed web-based framework to support the delivery of
customized credit marketing data. Initial Struts/JBoss prototype
provided counts of people matching various demographic criteria
against a one percent sample of 288 million credit records in an
Oracle 9i database. User actions were captured by a "click
stream" servlet filter spawning JMS events asynchronously
persisted using EJB 2.1 CMP Entity beans.
iFleet, Inc. --
Roswell, GA (06/94-06/02)
Senior Engineer
Responsibilities included the design, development and
deployment of large-scale, distributed systems, most to serve
the special needs of inbound call centers; the evaluation of
new technologies resulting in recommendations relevant to our
customers' requirements; the establishment of standards and
best practices for development teams; the mentoring of junior
staff.
Multiple J2EE Struts MVC applications, including a means
for locating service providers closest to a particular
geocoded location, a tool for selecting roadside incident
data matching various criteria, and a framework for defining
applications in terms of services that pass XML data back and
forth via an embedded Jetty HTTP server. (09/00-06/02)Designed and developed a proprietary object-relational
persistence layer. (08/99-09/00)
Transparently mapped business objects to tables in an
Oracle RDBMS using the Java Reflection API to encapsulate
the dynamic construction and execution of the SQL
statements necessary to retrieve, save, and delete those
objects.Provided robust support for parent-child
relationships -- both aggregation and association --
including automatic cascading saves and deletes of
corresponding rows linked by direct foreign key or
intermediate association table.Combined Sun's Jini and Oracle's Advanced Queueing
libraries to form a distributed cache of replicated
business objects, synchronizing the JVM's using Jini
event notifications when the state of any cached object
changed.Featured built-in support for the automatic
management of concurrent access to the persistent objects
using an optimistic locking strategy.Data Access Resource Manager (06/97-05/99)
Co-designed a proprietary IDL and C++ framework which
simplified the development of peer-to-peer and
client-server components that created, sent and received
complex data structures comprised of STL containers.Managed stateful, concurrent access to multiple
Oracle database instances, using Rogue Wave DBTools.h++
to invoke one or more SQL stored procedures within a
single transaction corresponding to a client's
request.Efficiently spread load across distributed processes,
each with its own dynamically-configurable pool of
operating system threads and database connections.On-site consultant with Ceridian developing their
HR/Payroll application. (06/94-05/97)
Access Consulting, Inc. --
Marietta, GA (02/91-05/94)
Consultant
Configured, enhanced, and maintained various
installations (retail, wholesale, and manufacturing) of the
ADD+ON Business Basic commercial application suite.
Education
Georgia Institute of
Technology June 1987
Bachelor of Industrial
Engineering
Supplemental education includes 5 full-time
quarters (6/90-8/91) of CS courses at Southern Polytechnic
University in Marietta, GA, as well as 3 full-time quarters
(8/91-3/92) of graduate-level Artificial Intelligence courses at
Georgia Tech.