sky background

Dave Rolsky

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 people, you have to create a solution that works for them. 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.

Good applications have 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. Solid data representation and handling is the key to building powerful, flexible applications. "Garbage in, garbage out," and garbage isn't useful.

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 well enough for its design failures to bother me.

Skills

Languages and related technologies Perl, JavaScript, SQL, HTML and CSS, RSS and Atom (publishing), Catalyst, Mason, Template Toolkit, web services and REST, XML, Haskell, PHP, C, Perl XS
Servers and tools Apache, including mod_perl and SSL, Plack/PSGI, Git, Mercurial, Subversion, RT, Bricolage, Various Unix daemons/servers like Postfix, OpenSSH, Mailman, and many others
DBMS Applications Postgres, MySQL, Oracle, Sybase, SQL Server
Operating systems 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 - 4/2011

At Thomson Reuters, I 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.

I also worked on a number of infrastructure projects. I worked on adding support for new processor architectures to our build system, building a mechanism for managing our Perl module installations, and adding support for handling Unicode data to our code base. This work required coordination with developers in different groups, as well as gaining an understanding of business requirements for internationalization.

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 moving 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 a customizable system for end users which maintained strong data integrity constraints and allowed for quick searches over large sets of contacts.

I've also worked for Kineticode on deploying the Bricolage CMS for several Kineticode customers.

Later, I worked on a simple mini-CMS for Native Americans in Philanthropy. This CMS allowed 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.

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

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.

Various

Too Old to List, 1995 - 2000

Do you really want to read about my TA position or my first programming jobs?

Publications

House Absolute(ly) Pointless

My blog. Most of the writing is on technical topics.

perlootut and perlobj

I wrote perlootut from scratch and revised perlobj from the ground up for the Perl 5.16.0 release. I also made major edits to several other documents in the Perl core, including perlhack, perlhacktut, perlhacktips, and perlsource.

Moose documentation

In 2009 I received a grant from The Perl Foundation to work on the Moose documentation. I revised all of the existing API docs, wrote new cookbook recipes, and wrote the Moose::Manual documentation from scratch.

RT Essentials

Cover of RT Essentials

I contributed two chapters to 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.

"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, Europe, and Japan, and ApacheCon.

Relatively recent presentations. These are still relevant.

Ancient cruft, view at your own risk. There may be something worthwhile in here, but much of the content is outdated.

Free Software

Besides contributing patches to numerous projects, I have created and/or maintained a number of Free Software projects. I'm a very prolific CPAN module author.

Moose

I have been part of the Moose core development team since early 2008, and have contributed a lot of code to the core. 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, 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

VegGuide is a community-maintained directory of veg-friendly 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