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.