David Rolsky
Summary
I have been a professional software developer and architect since December of 1998. My areas of expertise include web applications, database design, Perl, and Javascript. I have excellent communication skills, as shown by my experience as a presenter and writer. Some highlights include:
- Design and development work on many web apps, including the Socialtext Wiki and a community restaurant review site, VegGuide.Org.
- Co-author of Embedding Perl in HTML with Mason and RT Essentials, both published by O'Reilly.
- A member of the core development team for Mason, a widely used Perl application framework and templating system. In mid-2002, Mason became Amazon.com's official templating system.
- Head cat herder for the Perl DateTime Project, and a prolific CPAN and JSAN module author
- Mentoring of junior programmers, helping set standards and encourage best practices including good API design, automated testing, documentation, and coding for maintainability.
- Experience talking to non-geeks and determining the end user requirements for a project.
- Presenter at numerous conferences, including many OSCONs and YAPCs.
Skills
| Languages and related technologies | Perl, mod_perl, Javascript, SQL, (X)HTML and CSS, RSS, Mason, Template Toolkit, web services and REST, Catalyst, XML, Haskell, PHP, C, Perl XS, SWIG |
| Servers and tools | Apache (1 & 2), Subversion, SVK, CVS, RT, Bricolage, mod_ssl, IIS, Sendmail, Exim, Postfix, Qmail, NFS, Mailman, Bind, SSH |
| DBMS Applications | MySQL, Postgres, Oracle, Sybase, SQL Server |
| Operating systems | Unix, including GNU/Linux, FreeBSD, and Solaris |
| Other skills |
|
Experience
Reuters
Consultant, 11/2007 - present
LiveText, Inc.
Senior Developer, 3/2007 - 11/2007
Socialtext, Inc.
Senior Developer - Database Lead, 9/2004 - 3/2007
As part of a growing startup, I worked on numerous projects at Socialtext. I created our first automated deployment system, as well as our first automated tests. I also performed on-site field engineering for a major customer, integrating our appliance into their custom SSL certificate authentication system.
One of the larger projects I worked on was to move some of our data storage from the filesystem to a Postgres database, providing data integrity, increased query-ability, and much improved speed of data retrieval. Along the way, I also implemented a simple but flexible ACL system, and added real authorization checks, plugging numerous security holes.
House Absolute Consulting
2/2002 - 9/2004
One of my first consulting jobs was with Marigold Technologies, working on their salesperson-focused CRM, ContactBook. I was initially hired to do code review of the existing system. After this was completed, I helped them re-architect the code for greater scalability, and added a number of features. Along the way, I mentored another programmer on the new system architecture.
The most challenging of these was to add per-client custom fields for contacts. The end result was a highly customizable system for end users which still maintained strong data integrity constraints and allowing for quick searches over large sets of contacts.
I've also worked for Kineticode setting up the Bricolage CMS for several Kineticode customers.
More recently, I worked on a simple mini-CMS for Native Americans in Philanthropy. This CMS allows them to control the dynamic portions of their web site, such as job listings and news. It is also integrated with a membership management CRM I wrote, allowing new members to sign up and pay online.
Please see my list of clients for further details.
DoTheGood
Lead Developer, 4/15/2001 - 1/22/2002
I was responsible for the design and development of an online system into which non-profit organizations were able to enter data about themselves. This data was browse-able by potential donors, who could donate directly to the non-profits via a shopping cart.
Clients were provided co-branded access to the system, and had an administrative interface from which they could view statistics, filter non-profits shown on their version of the site, and select featured projects for their site.
In addition, I also created a development environment which allowed both the designers (using Macs) and developers (using either Windows or GNU/Linux) to share a CVS repository and to run their own copy of the site.
The site was mostly created using Mason, with a little PHP (not my work), and MySQL as the database. My data modeling tool Alzabo was used in the development of the schema for the application, as well as for communicating with the database.
O'Reilly and Associates, Software division
Consultant, 7/24/2000 - 2/23/2001
I was involved in the design and implementation of a Unix version of O'Reilly's WebBoard, which had begun life as a VB web application for Windows. This was not a port in a strict sense, as the "ported" version was in Perl. In addition, many new features were added to this version which were never present in the Windows version.
The ported application used Apache and mod_perl as its platform, along with a database back end capable of using any one of four databases, MySQL, Postgres, Sybase, or Oracle.
There were a number of challenges while working on this application, including creating an installer that would seamlessly use an existing Apache/mod_perl installation or install these components from scratch. The installer also had to handle installing the software on the file system and creating the schema for the chosen DBMS. I also worked on the DBMS communication layer in order to minimize duplicated code, taking the original Sybase code and reworking it to support all four platforms. This product also supported multiple authentication models, a very full featured and customizable interface, and a powerful web interface for administration.
Bluewater Technology
Consultant, 3/21/2000 - 5/19/2000
As part of a three person team, I participated in rewriting a highly dynamic web site from scratch. This included redesigning the database and rewriting the code to run under mod_perl. The final result was much faster, more maintainable and more extensible. It also allowed for greater depth of reporting, as the new design was capable of storing more information on site traffic and how the site was being used.
Digital River
Software Engineer, 12/1998 - 1/2000
As a developer at Digital River, I was involved in a number of different projects, including the development of a simple webapp call tracking system for Customer Service, programs for exchanging data between Digital River and its clients, and a webapp providing a real-time interface for clients and partners.
From June of 1999 onwards, I was responsible for the maintenance and refinement of all shared Perl code used by my team. In addition, I was the primary interface with other development teams, responsible for the architecture of all new projects, code reviews, and mentoring other programmers.
Minnesota Life
Technical Support Analyst, later Network Services Analyst, 8/1997 - 11/1998
University of Minnesota School of Music
Music Theory and Ear Training Teaching Assistant, 9/1995 - 6/1997
Publications
RT Essentials
I contributed two chapters towards this book. For more details see the O'Reilly page for the book
"Exception Handling in Perl with Exception::Class"
Published in the July 2004 edition of The Perl Journal.
"The Many Dates and Times of Perl"
Published at Oreilly's Perl.com site on 2003-03-13.
"Module::Build"
Published at Oreilly's Perl.com site on 2003-02-12.
"Programming with Mason"
This slightly modified excerpt from the Mason book was published at Oreilly's Perl.com site on 2002-12-11.
Embedding Perl in HTML with Mason
This book, which I co-authored with Ken Williams, is available from O'Reilly and Associates, and was published in October of 2002. It is also freely available in an online version.
Presentations
I have presented at numerous conferences, including the O'Reilly Open Source Convention (OSCON), Yet Another Perl Conference (YAPC), and ApacheCon. Please see my slides listing for slides from recent talks.
AJAX, JSAN, and Perl
- YAPC::NA, Chicago - June, 2006
- YAPC::Asia, Tokyo - April, 2006
Dates and Times with Perl
- YAPC::NA, Boca Raton, FL - June, 2003
Fey(::ORM), YA(F)ORM
- YAPC::NA, Chicago - June, 2008
Introduction to Alzabo
- YAPC::NA, Montreal - June, 2002
- OSCON, San Diego - July, 2001
Introduction to Mason
- YAPC::NA, Chicago - June, 2008
- YAPC::NA, Houston - June, 2007
- YAPC::NA, Chicago - June, 2006
- YAPC::NA, Toronto - June, 2005
- OSCON, Portland - July, 2004
- OSCON (tutorial version), San Diego, CA - July, 2001
- ApacheCon, Santa Clara, CA - April, 2001
Patterns in Perl
- YAPC::Asia, Tokyo - April, 2007
Perl DateTime Project
- YAPC::NA, Houston - June, 2007
- YAPC::Asia, Tokyo - April, 2006
- YAPC::NA, Toronto - June, 2005
Perl Modules for Exceptions, Logging, and Parameter Validation
- YAPC::NA, Houston - June, 2007
- YAPC::NA, Toronto - June, 2005
- OSCON, Portland - July, 2003 - as Industrial Strength Perl - Failing Predictably and Dealing With It
I've also given a variety of presentations at Perl Mongers meetings, including Minneapolis.pm, Philadelphia.pm, and Taipei.pm.
Free Software
Besides contributing patches to numerous projects, I have created and/or maintained a number of Free Software projects, and I am a prolific CPAN and JSAN module author.
Mason
Since the summer of 2000, I have been a member of the core team for the Mason templating system. I led the development effort for the 1.10 release of Mason, which involved rewriting and re-architecting major portions of the Mason code base, in order to make it more easily extensible.
The Perl DateTime Project
This is a project I began, and still lead, which aims to develop a comprehensive suite of inter-operating Perl modules for dealing with dates and times. Modules in the DateTime suite are listed on the datetime.perl.org website.
Log::Dispatch
Log::Dispatch. is a suite of object-oriented Perl modules for logging a message to multiple outputs. It is being used in a number of other modules, including Log4Perl and Log::Dispatch::Config, and is widely used by Perl application developers.
Exception::Class
Exception::Class allows Perl programmers to declare hierarchical sets of exception classes for their own use. It provides a complete exception object implementation though programmers are also free to use their own if they prefer to do so. In his book Perl Best Practices, Damian Conway recommends this module as the best way to declare exception classes in Perl.
Params::Validate
Params::Validate provides method/function argument validation. It allows verification based on primitive types, object class, object interface, and callbacks. At a simpler level, it can be used to verify that required parameters are present and that no superfluous ones have been given.
Other Work
These are some of the community projects I have worked on.
VegGuide.Org
An online guide for vegetarians. It is designed to be community-maintained, so that any registered user can rate/review entries, add new data, and suggest changes to existing data.
jobs.perl.org
I collaborated with Ask Bjørn Hansen on the design and development of the Perl jobs site, which is a resource for Perl programmers and employers looking to hire them. The site uses Mason and MySQL.