sky background

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:

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
  • Object oriented analysis, design, and programming
  • Data modeling
  • Web application design
  • Web authentication and authorization
  • Email parsing and generation
  • Network applications and daemons
  • Expert knowledge of date/time standards
  • Internationalization and localization, including Unicode and character set conversions
  • Code architecture for re-usability and maintainability

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

Cover of 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

Cover of Mason book

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.

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.

Education

University of Minnesota, School of Music, 1995 -1997

Master of Arts in Music Composition

Bard College, 1991 - 1995

Bachelor of Arts in Music