Stephen J. Brown

This is a more verbose listing of my skill set and experience than fits into the standard résumé format.

Languages

C and C++
I have worked in C since about 1992, and C++ since 1993. C++ is my preferred language for large projects or projects which require higher performance.
C#
I have used Microsoft's C# for a few larger projects since 2003. These days I limit my exposure more to building distributed applications around custom 3rd party code that is not available on Linux as of yet, and example applications for APIs that we make available to clients.
PHP
Almost all of my website development work was been in PHP. For smaller projects I used MySQL as the database backend, for larger or commercial projects PHP is often paired with Oracle.
Perl
I use Perl both for client projects and for system administration tasks, it is often a quick and easy way to get the job done, especially for data conversion tasks. IN the past decade I have found that Perl tends to be the universal glue language for most data flow tasks.
Java
Extensive use of Java in 1999-2000. Light use of Java after that, primarily conversion of Java code bases to alternatives and maintenance of legacy Java/Tomcat applications.
Python
I started using Python personally around 2001, but with the exception of Anaconda and RPM hacking I have not used it for production projects.
Bash, CSH, KSH and Bourne Shell scripting
The backbone of system administration work :)

Databases

Oracle
I started using Oracle while on Co-Op at Reality Online, where it was used exclusively as the database. After the co-op I dabbled with it to stay up-to-date, then used it again while at HMS where it was the main database until we migrated to Sybase ASE late in 2002. I was involved in a major conversion of a pharmaceutical data backend from Oracle to SQL Server at Gold Standard Multimedia. MediaGuide has the largest Oracle installation I have worked with to date, with multiple RAC instances in DR configuration for high-volume, real-time OLTP and data warehouse use. With the exception of the high price tag, Oracle is my preferred database environment for medium to large sized projects at this point.
MySQL
Many of the web projects while working full-time at Data Clarity involved MySQL in some fashion. While at HMS we used MySQL for most of the smaller projects; databases that were over 2G or a few million rows were in Oracle or Sybase).
Microsoft SQL Server
I have worked with SQL Server 6.5 and 7.0 as the database for a large distributed project, and administered the production databases for several years.
Sybase
I experimented with Sybase since it was available on Linux. I started to really use it during the second half of 2002 and early 2003 while at HMS as they were switching to Sybase from Oracle to save on licensing fees. Shortly after I left, HMS switched back to Oracle to better handle their ever-increasing dataset.
PostgreSQL
Off-and-on use only. Started using late 2000 it because of phpGroupWare and all the comparisons of MySQL vs. PostgreSQL. We evaluated it for a number of projects while at HMS, and it worked fine for some few limited cases, but a full Oracle or Sybase setup tended to work much better. Since then all organizations have had an entrenched Oracle, SQL Server or MySQL code base so it has not been worth a full-scale conversion.
SQLite
I have found SQLite to be an excellent embedded database for small projects, embedded applications and as a cache for high-volume use when the main database has a higher latency than can be tolerated.

Operating Systems and Platforms

Linux
I stared using Linux in early 1993 with a copy of SLS from a friend who ran a BBS in Northwestern Vermont. As soon as I had more than 1 computer (early 1994 as I recall) I have been running some flavor of Linux continuously. I have been system administrator of production Linux boxes since the late 90's, from firewall/router boxes to small web and mail hosts to my more recent positions where I am responsible for high-availability clustered environments with a SAN and large Internationally distributed networks with around 500 Linux servers on 4 continents.
Windows NT and above
For tasks that require Windows, I typically set up a VMWare machine under Linux and install Windows XP on it. This way seems to avoid the DLL and COM/ActiveX problems that testing multiple programs on a singe windows install usually results in. I have maintained many Windows based systems since the late 90's, from standalone workstations to clustered exchange and SQL Servers setups on HP SAN hardware.
Windows 9x and below
I started using windows back in the early 90's with Win386, and have used some flavor of Windows since that point. Extensive programming experience from back in the day with Win16 gave way to Win32 and the more recent 64bit environments.
I learned the windows API (and started in C) by translating the examples in Petzold's book from C to Borland Pascal (the only compiler for windows I could afford at the time). Within a few months, I obtained a C/C++ compiler and have been using C and C++ since then as my preferred programming language.
Solaris
We used Solaris for almost all high-level course work at college, and while I worked at Reality Online. I am quite familiar with Solaris as a normal user, and mildly familiar as an administrator.
Irix
Used occasionally at school, serious development on SGI Indy's during my OS Lab and Networking II Labs.
Assembly Programming on x86 and MIPS
Back in the days of Windows for Work Groups I did a fair amount of assembly programming on demos and other graphical tricks, and custom code to interface with C and Pascal for special tasks.
During OS Lab in college, we used a fair amount of MIPS assembly to glue our C code to the actual hardware (interrupt handlers, scheduler and VM subsystems).

Technologies and other buzzwords

Boost
I have been using some of the Boost functionality in current projects at Mediaguide. Boost has been quite handy in providing a more standard implementation of concepts I needed to re-implement at each client in the past.
CORBA
I have used CORBA internally for some projects, I have not yet used CORBA for client projects however.
Back in 2001 I performed some entertaining experiments comparing a few ORBs by creating an Apache module that exports the Apache EAPI (the expanded API you get when you add mod_ssl) and daemons that use CORBA to interact with Apache to serve dynamic content. All ORBs tested were either too slow or too unstable at the time to consider the technique a viable possibility for production environments; hopefully this has changed by now.
RogueWave tools.h++ and db.h++
Quite familiar with the libraries, as they were arguably the most versatile template libraries until the STL. Rochester Institute of Technology used tools.h++ extensively in their CS2-CS4 courses, and I used (and debugged) all of Rogue Wave's offerings for UNIX and C++ while at Reality.
Stingray Software's full suite of libraries for MFC applications
While I was doing windows development and using MFC, I used Stingray's excellent libraries to speed up the process. I used their Objective Studio for about 3 years up until Rogue Wave acquired them.
The 'standard' C++ STL, and SGI's STL
I have used my own custom templates and the STL for common data structures since working with RogueWave's libraries.
COM/DCOM/OLE/ActiveX
Utilization of database and other components on windows through these technologies, and occasional creation of components
.Net
Off and on I will whip up something using C# for testing purposes when I need to work in Windows.
Last modified: October 22 2007 08:00:52.