You are best known for creating the custom build of Perl known as SybPerl back in 1991 when Perl itself was new. What made you decide to create SybPerl?
In 1989 I moved from developing on MS-DOS and Waterloo Port (Waterloo Port was a cousin to QNX) to SunOS 4.x. I had no formal software (or OS) training, so this was a major shift, and required me to learn a lot of new things (shell, awk, sed, etc.). At the same time I first started using Sybase (SQL Server 4.0, on a Sun 386i). In 1990 I went to the Software Development conference in Oakland, and Rob Kolstad (IIRC he was at Sun at the time – a quick google search shows that he is a director of SAGE now) made a presentation on perl – and as a C programmer this made a lot of sense.
I managed to download and build perl (remember – no internet back then so getting the code meant sending an email request via uucp to a mail responder that returned uuencoded chunks…). After building perl it quickly became obvious that writing perl scripts to perform various duties on the Sybase database would be ideal. The first attempt involved running isql in a subshell, via pseudo terminals. While this worked it was rather slow, and error prone.
Then around June 1990 Larry Wall added “user subs” to perl (version 3.something) and that made it comparatively easy to link a few DBLibrary calls into perl. That first version only opened a single connection, and had a number of other limitations. During the next year I expanded it to allow multiple connections, and then in September 1991 I made it public in a post to comp.lang.perl. It was a natural move for me – I had already been active for several years on a few public BBSs (mainly BIX, set up by Byte Magazine), and Usenet, and helping others had allowed me to learn my craft – making this code public was just an extension of that activity.
You wrote the Sybase module for the Perl DBI (DBD::Sybase). What difficulties did you run into when making the module? Were you also involved in the design of the Perl DBI?
The impetus for DBI was started by Buzz Moschetti – he was also a sybperl user (among other things) and was getting annoyed at having different APIs for the various database servers that he needed to access from his perl scripts. Buzz, Kevin Stock, Ted Lemon, Tim Bunce and various others (including myself) were on the original mailing list for the design of the DBI spec, although Tim certainly did most of the actual work. It took a lot of time before I started writing the DBI module (initially as an emulation layer on top of Sybase::CTlib). Then there was mostly the issue of handling multiple result sets which the DBI wasn’t really geared to handle. I think the work-around I chose (using the syb_more_results attribute to check for more results) was reasonable and allowed code written for DBD::Sybase to be compatible with “normal” DBI code. For a long time I was really still a Sybase::CTlib user, and it’s only comparatively recently (in the last couple of years) that I’ve started to use DBD::Sybase extensively for my own work.
Did you receive any help from Sybase, specifically any undocumented features of OpenClient? Has it been difficult supporting both FreeTDS and OpenClient?
I received some help from Sybase in 1995 when they were developing web.sql, which itself used perl and the Sybase::CTlib module. Since then I have received help “privately” from various people at Sybase (via email, or in the newsgroups). However, Sybase doesn’t publicly acknowledge DBD::Sybase (yet ?), which is a little unfortunate as they do acknowledge various other OpenSource interfaces (for PHP and the DBI module for SqlAnywhere).
My support for FreeTDS is minimal at the moment, due to a lack of time. I did some work on a DBD::FreeTDS module a couple of years ago (sponsored by a Wall Street brokerage firm), and I should really find the time to make this module public. The reason to have this module separate from DBD::Sybase is to allow linking with both Sybase OpenClient and FreeTDS from the same perl process, and to remove the functionality that isn’t supported by FreeTDS.
Is there anything in the pipeline from you? Any new features that will be added soon to your modules?
Not really – at the moment I’m focusing on maintenance, bug removal, and following the DBI evolution. As Tim Bunce is now a DBD::Sybase user he has contributed some significant changes (and motivation). After 17 years spent working on what is for large parts the same code it gets harder to sit down after a days work and decide to work on this or that feature.
Can you tell us a little about your professional work life?
I’m a production DBA in a large bank, with primary focus on Sybase ASE, and secondary focus on Oracle. As a production DBA I don’t do much coding, and only minimal performance tuning. Most of the applications we run are third party apps, so our maneuvering range is quite small (add cache, make sure the disks are configure corrrectly, and that’s about it). The things we do code are backup and restore scripts, DBCC checks, and so on. I’m on call one day out of five (meaning I must be able to get on to the company network in less than one hour), but other than that it’s fairly low stress – mainly because we’ve developped procedures and checks to catch problems as early as possible.
What do you do when you’re not coding?
I read a lot (Science Fiction, Crime/detective, general fiction), listen to music (I used to play guitar and bass in a band a long time ago…), I like to ski (I live in Switzerland), play golf, and just hang out with friends…
What other languages do you work with besides Perl?
SQL (well, I’m a DBA :-), and C.
For those of us that use your Perl modules, how can we express our gratitude?
Submit patches with the changes you’d like to see, help answering questions for newbies in the newsgroups and mailing lists.