Skills & Experience

Since December of 2002, most of my work has consisted of Python scripting and building sites on a Zope system. I love the combination of the two, which allows a speedy, flexible development process with instant feedback.

Programming & Database

XML, XSLT, Java, Servlets, JSP, JDBC, Perl, SmallTalk, and Unit Testing (2001 - 2002)
I started with XML, and it wasn't very difficult to get the basics. XSLT was next, and while it was trickier (things like not being able to change a variable after you've assigned it a value, and having to use recursion instead of iteration set it apart from most of what I've done before), I think I've got a pretty good handle on it.
Java came next. I installed IBM's VisualAge for Java and started exploring. The challenge of having to think of everything as objects, and the huge array of APIs that are available for use with them is a real treat (and a bit daunting). While the details of servlets and JSP are new to me, their broad conceptual outlines are not terribly different from WebClasses, COM, and ASP.
In the fall of 2001 I took a class in the Design and Implementation of Bioinformatics Infrastructures (and got an A). That led to a quick detour into Perl, just to see what it was all about, since it's the default programming environment for bioinformatics. I also installed Linux on a partition of my laptop for the same reason.
More recently I experimented with Cincom Systems' VisualWorks SmallTalk. SmallTalk is an entirely object-oriented language in which everything (even integers, strings, etc.) is an object. Like Java, SmallTalk code runs within a virtual machine. Unlike Java, the code is interpreted, not compiled, and all source code is accessible and can be modified (even the code for the development environment).
I was especially interested in SmallTalk because I had an idea for a bioinformatics application, and Cincom's VisualWorks SmallTalk is more seamlessly cross-platform than Java. This is an important consideration for me because the research labs that I would be targetting tend to have a diverse mix of Macintosh, Windows, and Unix/Linux machines.
As I learned more about object-oriented programming, I also become very interested in Extreme Programming and other Agile development methodologies. I've enjoyed the occasions when I've been able to do some paired programming, and I'm convinced that refactoring code to improve it's design is one of the keys to doing more work in less time, with less pain, as long as it's supported by a good suite of automated tests to catch any bugs that might be introduced by the refactoring.
Microsoft Visual Basic (2000 - 2001)
I learned VB in the course of building ASP and WebClass-based solutions for PowerGroups, and extended my knowledge of it while creating the SiteFactory code-generator for Globalstar USA.
My first experience with VB involved writing a Word macro that pulled data out of batches of Word forms and concatenated it all into a single text file so it could be imported into a Filemaker Pro database. (Self-taught, of course.)
Transact-SQL (1999 - 2001)
I began doing Transact-SQL stored procedures (Microsoft SQL Server 7) for the PowerGroups site in the fall of 1999. I learned the language on the job, getting the basics in a week or two of reading, experimentation and discussions with co-workers, then refining my skills as I worked. (My usual method for learning new tasks.)
I'm now comfortable with SQL, Query Analyzer and Enterprise Manager. I'm familiar with queries, joins, cursors, DTS packages, constraints, foreign keys, clustered indexes, etc., etc.
I think that SQL came easily for me in part because of my Filemaker Pro experience. While Filemaker is a unique animal, it still uses primary and foreign keys, requires an understanding of the basic concepts of relational database design, and has a scripting language (albeit a very limited one).
JavaScript (1995 - 2001)
I've used JavaScript occasionally, usually starting with a cut-and-paste script and then modifying and improving it. Most recently I've been experimenting with Flash's ActionScript (which is very similar to JavaScript), using it to manipulate XML documents and Movie Clip objects in a Flash movie. (Self-taught)
Pervasive Software - Tango (1995-2001)
Tango is a good medium-duty graphical RAD tool that can connect to either SQL or Filemaker Pro databases. I've used it with Filemaker to build several database-driven sites, including a couple of online catalogs for Demco Media's Turtleback Books and Periodical Subscription Service. (Self-taught)
Beginning C Programming (Spring 1992)
University of Wisconsin, Madison (I received an A).
Filemaker Pro Scripting (1991-2000)
Filemaker has a good graphical interface for building and working with databases, but if you want to do anything fancy you'll need to do a lot of work with its scripts and calculation fields. I've done a lot of tricky stuff with it, and am very familiar with both of them. (Self-taught, with a three-day seminar on relational design when Filemaker Pro 3 was introduced.)
MacroMedia Director - Lingo Scripting Language (1990-92)
I built an elaborate hyperlinked portfolio/resume for myself, with many features that anticipated web-browser conventions. It's not cross-platform, but if you have a Macintosh I recommend that you download it and have a look. Start with the Help section so you don't miss any of the hidden features. (Self-taught)
HyperCard - HyperTalk Scripting Language (1998-89)
While doing graphics for King Frog I also started to learn HyperTalk. I developed a script that we used to record an animation path by dragging a graphic around the screen. (Self-taught)
BASIC (1977-78)
I learned this on a teletype machine at my high-school that was hooked up to the mainframe at the l ocal college campus. The machine was so primitive that its display was a roll of newsprint. In true teenage boy fashion, my (mostly unrealized) goal was to create a sort of bulletin-board space on the mainframe where my friends and I could post mocking comments about our teachers. (Self-taught)

Graphics

Adobe Photoshop
I've been using Photoshop since v1.0. It's one of my favorite tools, and I'm especially fond of it's layers. I'm equally as comfortable building an image from scratch as I am retouching photos.
Adobe Illustrator
Illustrator is my other favorite graphics tool, and I've been using it even longer than Photoshop. I first worked with it in the summer of 1988 when I used it to do the package art for King Frog. I desinged the box with Illustrator '88 on a Mac Plus (tiny black & white screen). I had no manual, so I learned what I needed to know by browsing a third-party book for a half hour in a software store.

3D Modeling and Animation

Hash Animation:Master
Animation:Master is an incredibly full-featured 3D modelling and animation package that costs only $300. It's especially well-suited for character animation, with inverse kinematics, bones, reusable actions, pose sliders, and a lot of other fantastic features.
The program is not without flaws: I think LightWave has a better renderer, A:M has never been especially stable on my PowerTower Pro Macintosh clone, and its "Hash patch" geometry doesn't seem to be imported or exported by any other applications. Nevertheless, the program has so many great features that I don't really care.
NewTek Inspire 3D
Inspire was a lite version of LightWave. I bought it because it seemed like the cheapest way to get my hands on a reasonably powerful modeling and animation package. Then I discovered Hash Animation:Master, and I haven't gone back to it since.
Pixar MacRenderMan
I really fell in love with 3D when I saw Pixar's Tin Toy. I talked a Pixar rep at a MacWorld Expo into giving me a copy of the RenderMan Companion, even though I didn't have any practical use for it; I just wanted to know more about it.
My first 3D project was a blimp that I modelled in MacroMind 3D and rendered with MacRenderMan. I loved what MacRenderMan could do, but I really wanted Pixar to add modelling and animation features to it. I was really disappointed when they killed the product.

Computer & Network Administration

Since I joined the staff at Purdue's Engineering Communications Office I've been helping maintain a mixed network of OS X Macs and PCs. When something needs fixing, I'm often the person who everyone asks first. If I can't fix it, we'll talk to the Engineering Computer Network tech support.
Until 2000 I was, by default, Woodland/BizDat's Network Administrator, Webmaster, Postmaster, Tech Support, Chief Cook and Bottle Washer. I have years of experience troubleshooting Macintosh systems, setting up backup schedules, running a WebSTAR web server, an FTP server, a mail server, etc. I also maintained the primary DNS records for the domains we owned.
More recently I've been performing administration chores on Windows NT servers running IIS and SQL Server, arranging database backups and data transfers, replacing hard drives, adjusting partitions, etc.
In between Woodland and Purdue I toyed around with Linux. I started by installing it on my laptop, which was a hairy operation since I already had both Windows NT and 2000 Pro on it, and I didn't want to lose either OS. I spent a lot of time reading RedHat's installation documentation and boning up on partitions before attempting it, and the effort paid off: I was able to get all three OSs peacefully coexisting on one machine. Then my hard drive died, and since I've had my hands full learning about OS X's unix underpinnings, I haven't felt a need to look any deeper into Linux.
Last update: November 29, 2005