sky background

David Rolsky

Summary

In the time I've been working as a developer, I've realized that what I really like is to solve problems for humans. This means more than just "making it go". When you're working with real people, that means making something that they can use. I'm no usability guru, but I want to build tools that people enjoy using, rather than tools they use for lack of a better alternative.

I want to create applications with both clean internals and usable interfaces. That interface might be a web application, a command line program, or a daemon, but usability is important in all those cases.

I also have a great interest in data. A lot of developers are interested in code, but it seems like fewer are interested in thinking about data. Data representation and handling is the key to building powerful, flexible applications. As the old saying goes, "garbage in, garbage out."

Finally, I care about the development process. Automated testing, good deployment tools, QA, bug tracking, source control; all of these tools and practices are crucial to building software that is good for both its users and its developers. It's not enough to build something that works if you can't maintain it over time. It's not enough to fix a bug if you reintroduce it in the next release. Software should get better over time, not worse.

I've spent most of time programming in Perl and JavaScript, with a smattering of C. I also know SQL all too well.

Skills

Languages and related technologies Perl, JavaScript, SQL, (X)HTML and CSS, RSS and Atom (publishing), Catalyst, Mason, Template Toolkit, web services and REST, XML, Haskell, PHP, C, Perl XS, SWIG
Servers and tools Apache (1 & 2, including mod_perl and SSL), git, Mercurial, Subversion, SVK, RT, Bricolage, IIS, Postfix, Exim, Qmail, Sendmail, NFS, Mailman, Bind, SSH
DBMS Applications MySQL, Postgres, Oracle, Sybase, SQL Server
Operating systems Unix, particularly 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
  • Automated testing, benchmarking, and test reporting

Experience

Thomson Reuters

Consultant, 11/2007 - present

At Thomson Reuters, I have worked on integrating new data feeds with an existing database of corporate information. Much of this work involved talking to the business side of the company, as well as the outside feed partner, and making sure that the solution I was building would satisfy our business requirements.

On the technical side, this work involved building Perl scripts for batch jobs that were run via Autosys, and updating a complex Sybase database.

LiveText, Inc.

Senior Developer, 3/2007 - 11/2007

At LiveText, I worked on a variety of projects. One project involved adding automatic draft saving to the FCK editor that was used to create documents in the system. As users edited, work was regularly saved to the server using Ajax. If a document was not saved "properly" by the user, perhaps because of a browser crash, they did not lose their work.

I also helped improve internal practices by implementing automated unit and integration testing. I set up a continuous test server that checked out branches of the code, ran the tests, and reported the results to a Smolder instance.

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 file system 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 developer on the new system architecture.

The most challenging of these new features was adding per-client custom fields for contacts. The end result was customizable system for end users, while still maintaining 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.

Later, 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 "donation shopping" system. Non-profit organizations were able to enter data about themselves, and data was browseable by potential donors, who could donate directly to the non-profits.

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

Digital River

Software Engineer, 12/1998 - 1/2000

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) North America and Japan, and ApacheCon.

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.

Moose

I have been part of the Moose core development team since early 2008, and have contributed a variety of code to both Moose and Class::MOP. I have also written a number of Moose extensions.

The Perl DateTime Project

This is a project I began, and still lead, which has developed 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.

Mason

Since 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.

Log::Dispatch

Log::Dispatch. is a suite of object-oriented Perl modules for logging a message to multiple outputs. It is widely used by Perl application developers.

Exception::Class

Exception::Class allows Perl developers to declare hierarchical sets of exception classes for their own use. It provides a complete exception object implementation though developers 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. This is a community-maintained directory of restaurants, grocers, and more. 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 development of the Perl jobs site, which is a resource for Perl developers 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