Dean Wampler http://polyglotprogramming.com
Technical Leadership in Software Development
I am a software consultant that teaches and mentors teams in a number of areas.
• Polyglot and Poly-paradigm Programming: Combining the best of object-oriented,
functional, and aspect-oriented programming paradigms, along with the best languages,
Scala, Ruby, Java, and others, to build robust applications quickly.
• Agile Methods: Extreme Programming, Scrum, Lean and Agile in the Large.
• Lightweight Enterprise and Internet Technologies: In particular Ruby on Rails, the
Spring Framework, and Akka.
In addition, I am an author and speaker with an established, international reputation.
• Programming Scala: (O’Reilly, 2009) A concise and comprehensive introduction to the
Scala programming language.
• Speaker at Industry and Academic Conferences: QConSF, JavaOne, RubyConf,
OOPSLA, AOSD, and others.
Senior Trainer, Mentor, and Training, mentoring, and consulting on Object-Oriented, Functional, and Aspect-Oriented
Consultant Software Development (OOSD, FSD, and AOSD), Agile Methods, Scala, Enterprise Java,
Object Mentor Ruby, C/C++, and C#.
Chicago, IL • Co-author of Programming Scala (O’Reilly, Sept. 2009).
• Developed and delivered courseware and conference talks on OOSD, FSD, AOSD,
Test-Driven Development (TDD), Refactoring, Agile techniques, Scala, Java, C++,
July 2006 - Present and Ruby.
• Frequent conference speaker on FSD, AOSD, Scala, Ruby, polyglot and poly-
paradigm ideas, and craftsmanship.
• Mentored clients on design, XP/agile methods, corporate agile transitions (Agile in
the Large), Enterprise Java, C/C++, Ruby, Scala, and C#.
• Founded the open-source project, Aquarium, an AOSD toolkit for Ruby.
• Contributed to FitNesse, an open-source acceptance-testing tool, and other open-
• Organizer of the Chicago-Area Scala Enthusiasts (CASE) user group.
Principal Consultant Consultant on Aspect- and Object-Oriented Software Development, Enterprise Java, Ruby on
Aspect Research Associates Rails, and Agile Methods.
• Architect and team lead for new services using the Spring Framework, Hibernate,
and other lightweight enterprise Java technologies at an online advertising services
August 2005 - June 2006 provider in San Francisco, CA.
• Contributed to a Ruby on Rails portal project at a major automotive manufacturer.
• Mentored clients on Spring, AOSD, and AspectJ.
• Contributed to the AspectJ standard library project.
• Speaker at several conferences on AOSD and Ruby development.
Directory of NCG Software Directed the server software development team for BridgePort’s Network Convergence
Development Gateway (NCG), telecom SCP/VLR that integrates VoIP and other IP media with CDMA and
BridgePort Networks GSM wireless networks.
Chicago, IL • Built development team from 2 to 10 members.
• Project Management for all BridgePort development teams, using Scrum.
September 2003 - August 2005 • Participated in customer engagements for business development and requirements
• Software process mentor and implementer.
• Implemented Enterprise Java components and server cluster configuration and
Site Owner Managed advocacy web sites for Aspect Oriented Software Development (AOSD), a.k.a.
Aspect Programming Aspect Oriented Programming (AOP), and Polyglot and Poly-paradigm Programming (PPP).
Polyglot Programming • Published white papers and conference talks on several facets of AOSD and PPP.
July 2003 - Present • Founded several open-source projects
• Contract4J, a Java 5 and AspectJ tool that supports Design by Contract in Java.
• Aquarium, an AOP library for Ruby
Sr. Product Manager Senior Product Manager for the Enterprise Java features and Aspect-Oriented Programming
IBM/Rational Software (AOP) support in Rational XDE, a modeling and patterns-oriented development tool that runs
Redmond, WA in the Eclipse environment.
• Specified feature set for J2EE and Java Web Services support in XDE.
• Researched AOP and drove strategic planning for AOP support in XDE and other
January 2002 – August 2003 Rational Products and services.
• Participated in whole-product strategies for product evolution and marketing.
• Worked with Rational and IBM customers and IBM to understand their
development needs and to evolve XDE to support those needs.
• Presented XDE at industry trade shows.
• Expert Group Lead for JSR-26, "UML Profiles for Enterprise Java Beans" (starting
with Public Draft 2).
Software Architect Software Architect for Powerhouse's Pinpoint technology for routing wireless telephone calls
Powerhouse Technology over the Internet. At the user's discretion, calls could be routed to IP devices or to mobile
Seattle, WA phones. I was directly responsible for the web-services component and the overall network
architecture, including security issues. I contributed to the designs of a PC-based VoIP client
and the System Control Point (SCP), a server that is part of the telecom-signaling network
January 2001 - September 2001 (SS7 in N. America). (Powerhouse was a predecessor of BridgePort Networks.)
• Developed the network security architecture, utilizing IPSec, firewalls, proxies, etc.
• Explored conflicts between Internet standards for Voice over IP (VoIP), security
(IPSec), and Network Address Translation (NAT). Recommended possible
• Member of the team that defined requirements and use cases using the Rational
Unified Process (RUP).
Architected the web-based Service Administration Module (SAM), a three-tier J2EE system,
used by subscribers and administrators to provision the system. Implemented the web tier
using Java, Apache Struts (JSP and Servlet based), dynamic HTML, and Cascading Style
Sheets (CSS). The web tier communicated with Enterprise Java Beans (EJBs). The JBoss
J2EE implementation was used.
• Provided technical contributions for business-development initiatives.
• Met with potential business partners and investors.
• Performed various process improvement and tool evaluation/selection tasks.
Systems Design Engineer Led the Advanced Development Team that investigated and implemented new technologies
Mercata for Mercata, both to improve Mercata's e-commerce site and to support corporate objectives
Bellevue, WA for new business initiatives.
• Team Lead for Mercata Marketplace™, a self-service portal for third-party sellers
to offer PowerBuys™ hosted by Mercata (analogous to auctions on eBay).
November 1999 - December 2000
• Implemented and maintained Mercata's web site for shoppers using WAP phone
and Palm™ devices, using the BroadVision One to One™ e-commerce platform.
• Coauthored U.S. Patent applications for enhancements to Mercata's proprietary
Group Buying technology.
• Provided technical contributions to strategic business development initiatives with
Wireless and Broadband partners.
• Investigated Wireless and Interactive TV (iTV) technologies.
• Investigated XML/XSLT, Voice Recognition, and ShopBot technologies.
Software Development Managed teams developing the user interface and Internet-Protocol (IP) monitoring and
Manager filtering technology for Sequel's Internet Resource Manager™ (IRM).
Sequel Technology • Led effort to develop next-generation Java and web-based user interface.
• Member of the team that defined new products, documented requirements and use
cases, and developed the system architecture and design.
• Mentored junior engineers. Introduced process improvements.
January 1999 - October 1999
Software Architect Project Lead and Architect for the second-generation Mobility Operating Environment™
Global Mobility Systems (MOE), a three-tier, client-server, web-based system for provisioning business dialing plans,
(now part of OpenWave) which are enhanced services for wireless phone subscribers.
Bellevue, WA • Member of the team that specified product requirements and use cases.
• Implemented user-interface and server components in DHTML and Java.
April 1998 - January 1999
• Member of the team that re-architected a legacy system to incorporate new
features and a web-based user interface.
• Developed the build process and improved other development processes.
Staff Software Engineer Project Lead and Architect for a new user interface for an existing source-level debugger
Applied Microsystems product line.
Corporation • Led requirements gathering, architecture, design, and implementation.
• Developed a reusable C++ component framework for debugger-type applications
based on the Galaxy Application Environment™ from Visix Software.
February 1995 - April 1998
• Designed a cross-platform user interface that supports the Windows and Motif
design guidelines. Applied the principles of effective human-computer interaction
• Promoted use cases as a tool for driving quality assurance (QA) activities.
• Mentored other engineers in object-oriented (OO) methods.
• Supervised small development team.
Software Engineer III Developed user-interface and system-diagnostics software for real-time medical ultrasound
ATL Ultrasound, Inc. system, the Ultramark 2000™.
Bothell, WA • Pioneered the use of object-oriented methods and C++ at ATL.
• Developed diagnostic user interface "panels" for technicians, customers, and other
June 1991 - February 1995 non-technical users.
• Developed C/C++ software for the VxWorks and iRMX operating systems and the
X window system.
Software Engineer Developed user-interface, data-analysis, and system-control software for real-time, three-
Technical Arts Corporation dimensional scanning systems.
Redmond, WA • Used object-oriented design techniques.
• Implemented C/C++ software for iRMX, UNIX V4.0, and DOS platforms.
January 1990 - April 1991
Software Development • Aspect-Oriented Software Development: Pioneering work on applications of
AOSD to the full development life cycle. Lead developer of the open-source
Aquarium toolkit for AOSD in Ruby and Contract4J for Design by Contract in Java.
• Object-Oriented Software Development: 20 years of experience using several
• Functional Software Development: 2 years of experience using Scala and some
Erlang, Clojure, and Scheme.
• Software Life-cycle: XP, Lean, and Scrum, Test-Driven Development (TDD) and
Refactoring, Scaling Agile to Large Organizations.
Perl, UNIX shells, plus some Erlang, Clojure, and Scheme.
• Internet/Enterprise: Ruby on Rails, Spring Framework, Akka, J2EE.
• Databases: MySQL and Oracle, some exposure to NoSQL data stores.
• Operating Systems: Mac OS X, Linux, Windows.
• Other: Concurrency, multi-platform portability, real-time and performance issues.
Management • Project Management: XP, Lean, and Scrum, agile transitions for large
organizations, resource and people management, scheduling, team mentoring.
• Technology Trends: Evaluation of trends as they apply to business objectives.
• Product Management: Technical contributions to strategic business initiatives.
• Communications: Customer-focused, skilled at communicating technical concepts
to non-technical stakeholders.
Internet and Telecom • Internet Standards: Voice over IP (VoIP), IPSec protocols, Network Address (and
Port) Translation (NAT/NAPT), etc
• Telecom: SS7 signaling protocols
• Wireless LANs: 802.11 ("Wi-Fi") wireless LAN protocols
User-Interface Technology • Human Factors: Effective presentation of information, visual clarity
• UI Design: For technical and non-technical users, for web and “rich client
Publications & Speaking Engagements (links are PDFs unless otherwise noted)
Programming Scala • with Alex Payne (O’Reilly, Sept. 2009)
Clean Code • “Clean Systems” chapter of Robert Martin’s Clean Code book
ICSE 2007 • Aspect Oriented Design for Java, AspectJ, and Ruby (full day tutorial)
OOPSLA 2007 • Aspect Oriented Design for Java and AspectJ (1/2 day tutorial)
Aspect-Oriented Software • Aquarium: AOP for Ruby (2008)
Development Conference • An Aspect-Oriented Perspective on Object-Oriented Design (2007)
2006 - 2008
• The Challenges of Writing Reusable and Portable Aspects in AspectJ: Lessons
from Contract4J (2006)
• Contract4J for Design by Contract in Java: Design Pattern-Like Protocols and
Aspect Interfaces (2006)
• Aspect Oriented Design for Java, AspectJ, and Ruby (1/2 and full-day tutorials,
RubyConf 2008 • Better Ruby Through Functional Programming (video)
QCon San Francisco • Radical Simplification Through Polyglot and Poly-paradigm Programming (video,
slides - 2008)
2008 - 2009
• Scala Full-Day Tutorial (2009)
JavaOne 2009 • Don't Do This! How Not to Write Java Software
Agile 2007 - 2008 • Ruby’s Secret Sauce: Metaprogramming (1/2 day tutorial - 2007)
• Clean Systems: Clean Code at the Architecture Level (2008)
• The Seductions of Scala (2009)
• Acceptance Testing Java Applications with Cucumber, RSpec, and JRuby (2009)
SD West 2007 - 2009 • The Seductions of Scala (Tutorial - shorter version here, 2009)
• Better Ruby Through Functional Programming (2009)
• Polyglot and Poly-Paradigm Programming (2008)
• Aspect-Oriented Programming in Ruby (2008)
• Aspect-Oriented Design and Programming in Ruby (2007)
SD Best Practices 2008 • Principles of Ruby Application Design (1/2 day tutorial)
Architecture and Design • Ruby Application Design (2008)
World 2006 - 2008 • Aspect-Oriented Design in Ruby (2007)
• Aspects in Dynamic Languages (2006)
• Architecture Best Practices for Ruby Applications in a Java World (2006)
WindyCityRails 2009 • (Son of) Better Ruby Through Functional Programming (video, slides)
Chicago Polyglot • Polyglot and Poly-paradigm Programming (May 2008)
Programmers Group • The Seductions of Scala (Oct 2008)
Chicago Ruby Users Group • Aquarium: AOP for Ruby (Oct. 2007)
Chicago Java Users Group • Aspect-Oriented Programming and Design for Java and AspectJ (Oct. & Dec.
• The Seductions of Scala (Dec. 2008)
DePaul Univ. Computer • AOP in Academia and Industry
Science Group, Oct. 2007
developerWorks Live 2003 • Model-Driven Development of J2EE Applications - A Practical Guide
JBossTwo Conf. 2003 • The Future of Aspect-Oriented Programming
IBM’s developerWorks • AOP@Work: Component Design with Contract4J
oreillynet.com • Cat Fight in a Pet Store: J2EE vs. .NET
• A Pet Market with Flash
polyglotprogramming.com • Contract4J: Design by Contract for Java
aspectprogramming.com • Aquarium: AOP for Ruby
contract4j.org • Use Cases as Aspects
Ph.D., Theoretical Physics • Studied rare decay processes in atoms and nuclei.
University of Washington • Developed numerical models of these processes using object-based methods and
1989 VAX FORTRAN.
MS, Theoretical Physics • Studied the structure of protons and neutrons in atomic nuclei.
University of Virginia
BS, Physics • Minor in Mathematics.
University of Virginia