Jim Crossley

11455 West Road,  Roswell,  Georgia  30075
404.997.3131 (C)
770.518.4721 (H)
jim@crossleys.org
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, VoiceXML
  • Java (12+ years)
    J2EE (JMS, EJB, JMX, JNDI, JDBC, JSP), Spring, Hibernate, Many Apache libraries and frameworks, Maven, Ant, Ivy, JUnit, TestNG, Jini
  • agile ("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, Puppet
  • Revision Control
    Subversion, Perforce, CVS, Git
  • C++ (3+ years)
    STL, ACE, TAO, Rogue Wave
  • Miscellaneous
    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.