March 20, 2018
The authorized web site of Lee Geistlinger - beware of any imitations!

Web Portfolio - Hidden

Project List

Much of the work I've done over the years - and some of the most innovative work - has been behind firewalls or on self-imposed, local projects so I could learn. This Portfolio presents a very small sampling of this "hidden" work.

View links to my "non-hidden" web work here.

NOTE: Links open in child window; turn off the pop-up blockers!

Blogging Tool - Promotional

This tool was an exercise to hone my skills in both PHP (scripting language) and PostgreSQL (a powerful, open-source database very similar to Oracle).

Construction of this tool required a detailed understanding of PHP's and PostgreSQL's date object, the use of structured and flexible templates, extensive CSS and strong SQL skills.

In addition, the introduction of an XML format for syndication taught me RSS (v0.91 and v2), the standard for blog syndication.

Language: PHP (v4.x); XML (RSS)
Database: PostgreSQL
Platform: Linux (Red Hat 7.3)

Checkbook - Promotional

This is an effort to learn more Java and to get better at JSP - I've done minimal coding in JSP.

I built this page - an imaginary checkbook tool - in JSP; it calls an EJB (Enterprise Java Bean) that I wrote to produce the results.

Very basic; just an experiment. All coding was done by hand (no pre-built Beans, etc).

Language: Java, JSP
Database: MS SQL Server v7 (had to install an open-source JDBC driver; MS does not supply one for v7)
Platform: Win2000 (Netscape FastTrack server with JRun)

Content-Management System - Promotional

One of the most noticable holes in my resume was that I hadn't done any Active Server Page (ASP) work.

With no paying project working with this technology, I decided to learn the language on my own.

Instead of a simple "hello world" application, I build a Content-Management System with the following features:

  • User (read only) section

  • Password-protected admin area for adding/modifying content.

  • Ability to add, edit or delete (soft-delete; disable) content.

  • Author control section: Add, edit or delete users

  • Database- and template-driven output

  • Left-hand navigation (story list) highlights current story; prints list of 10 most recent stories, with link to full list

Language: ASP, VBScript, JavaScript
Database: MS SQL Server 7
Platform: Windows 2000

Customizable Resume - Promotional

This was just an exercise in CSS, JavaScript, DHTML and cookie control. It's an older version of my resume, but with a customizable look and feel.

Systems like this are used for portals such as Yahoo! and Excite. This was an attempt to use various methods to achive this result.

Methods tried were the following:

  • Style sheet per user - written out and stored with user ID. Since there is no login to this area, accomplished via session token stored as part of cookie.

  • Use of "themes" (with a separate style sheet per theme) and user's theme selection stored in user cookie

  • Fully customizable style sheet parsed with user cookie variables each page hit. More overhead; more user control. This is currently used on this exercise

Since preferences are stored to a cookie, a user is presented with changes upon subsequent visits.

If no cookie is present (deleted or user's first visit), defaults are assigned and stored in cookie on user's machine in the background.

Language: Cold Fusion
Database: (none)
Platform: Windows2000 was designed as a LAMP project (Linux, Apache, mySQL and PHP).

A community site for drummers, the site was designed to support many user-interactive features, including the following:

  • Concept of vistors/registered(in-session)/admin users (with associated functionalites)

  • User input: Articles, User Profile, Bands, recommended links and so on.

  • A robust administration section to support the user-visible sections and admin-only needs

  • Modular, scalable code to support future expansion

  • Extenisve logging system to enable quick overview of site visitors/events

Sadly, this vision of the site never got off the ground, but these screenshots are proof-of-concept works I executed during the project's requirements-gathering phase.

Note: All code, functionality and design elements are just for the the proof-of-concept work and do not necessarily reflect whatever form the site may eventually launch with.

Language: PHP, Perl, ImageMagick
Database: mySQL
Platform: Linux

Google API - Promotional

Google opened the API to its database last April. Via a SOAP call, a user with a Google key can query Google's database and pull back the raw data for display on one's own site.

This was an exercise to do the following:

  • Learn the Google API

  • Learn more SOAP (an XML protocol)

  • Learn more Perl. I had written a small PHP/Google API tool before, so I decided to do this project in Perl.

This tool is hosted on my home Linux box; the tool requires the SOAP::Lite module, which my Unix host says they will not support.

Note: This entire tool is one page of code - display is dependent on input (or lack threreof) and results. Approx. 300 lines of Perl, not including my CSS file or Google's WSDL file.

Language: Perl
Database: Google via SOAP wrapper
Platform: Linux (Red Hat 7.3)

Joe Ruck Design: The Body Snatchers

The client works with other artists to produce what they call "corpses" - each artist creates a three-part human-like drawing (head, torso, legs) that meet certain centering/sizing requirements

In this way, each corpe can be carved into three pieces and mixed-and-matched with other corpse parts.

This project was to build a randomizer that created these mix-and-match corpses.

The following constraints were part of the project design:

  • Images for all corpse parts should pre-load for fast regeneration

  • Each corpse should include one and only one part by any given artist

  • Each corpes should consist of three images: one head, one torso, one set of legs

  • All selections should be random: The three artists selected, then which artist for which part, finally, which of a given artist's corpse part displayed.
  • The project had to allow the inclusion of more than three artists

  • No database could be used, nor any server-side scripting language

The project is build with JavaScript; by manipulating a few variables (arrays) in the head of the code, the site owner could add new images or artists in a manner transparent to the code.

Design of the site was by the client; functionality by me.

Language: Javascript (client-side)
Database: (none)
Platform: Unix (Solaris)

LittleGhost Gallery Admin

This gallery is linked from my blog (Blog This!).

Since there is no relational databae available on the LittleGhost site, I wrote the front end in Perl and used flat files as my pseudo-database.

The back end - the gallery administration - is on one of my local Linux boxes, and thus inaccessible for viewing. Which is why it's highlighted here.

Language: PHP & ImageMagick
Database: mySQL
Platform: Linux, RedHat v7.3

MoveableType Blogroll - Promotional

While currently a WordPress user - and before that Blogger - I have examined other ways to publish blogs (see my Blogging Tool project).

MovableType seems to have one of the best tools out there, and - while neither of my domain hosts support this tool - I could use it on my home Linux box.

One missing part of the MovableType tool was a way to create a blogroll - a linked list of other blogs I read/recommend and so on.

Since MovableType is a Perl application, I wrote a Perl tool and integrated it with the existing application.

Note: This is a work in progress; it currently writes to a files only, no database storage yet.

Language: Perl
Database: Written to flat file
Platform: Linux (Red Hat 7.3)

Multi-Platform Experiments

One of my weaknesses/strengths is that I'm always trying new things, wanting to learn new procedures, languages, methods.

Example such are the "glossary" (of Internet terms) and "quotation" tools that I have used as an excuse to run new languages against, just to expand my sphere of learning.

The following, overlapping experiments are presented in the following formats:

  1. Glossary: PHP/PostgreSQL/Linux

  2. Glossary: Perl/flat file/UNIX

  3. Quotations: Perl/flat file/UNIX

  4. Quotations: Cold Fusion/SQL Server & MS Access (depends on environment)

Language: PHP/Perl/Cold Fusion
Database: PostgreSQL, flat file, MS SQL Server
Platform: Linux/Unix/Win2000 server

Portfolio Tool

In light of the dynamic Web site development I've done that's displayed in this Portfolio section, it seems redundant to list this tool, but it's worth mentioning.

I realized that much of my work is inaccessible via the Web, so there are two choices:

  1. Recode my work in some manner - static or otherwise - so it is accessible via my Web sites, or

  2. Do a portfolio, with screenshots and some clarification as to what a pages does, why, and my contribution to the page/tool

The latter seemed more accessible to me.

I could have hard-coded the pages, but that did not make sense (maintenance nightmare), and would have been more time-consuming.

I threw this "porfolio admin" solution together in an afternoon, and it performs the following functionality:

  • Database-driven display; only two pages (portfolio and pop-up page) are required

  • Form/database-driven input: Only two pages (client/project and screenshot) required to build all.

This is essentially a full-blown CMS - updates my online Portfolio (the page you're on).

NOTE: These Portfolio tool page are not meant to be pretty; they are functional.

NOTE 2: Rebuilt this all out in PHP; see last slide

Language: Cold Fusion; later ported to PHP
Database: Access (so it's Web accessible on my host); ported to MS SQL Server v7 for local use. Later ported to mySql
Platform: Windows 2000; later ported to Linux

SBC Communications - XML parser

TIM was the acronym for a bug/issue reporting system I designed and built virtually single-handedly.

One noteworthy aspect of TIM was the use of XML formatting to extract comment information out of stored procedures and Cold Fusion template headers: date added, modification history, author, purpose, known issues and so on.

These bits of information were wrapped in tags so they could be exported as XML and diplayed as an XML file - in this way, system admins could view comments/code notes from the files without having to open the actual files -- on-the-fly documentation, always up-to-date.

I originally built a Perl XML parser that was kicked off manually to build/refresh the XML pages; after I left SBC I worked on a better solution: Build the XML parser in Cold Fusion, so maintenance of the parser could be done by resident Cold Fusion programmers (no one there wanted to learn Perl).

The results of this effort were the following:

  • All Cold Fusion code

  • XML files generated when a user requested them, to make certain the most up-to-date information was displayed
  • Databasing the tag information, to allow searches for a particular file/author and so on

  • Database fully refreshed upon every search request, for up-to-date information

Language: Cold Fusion (originally in Perl); XML; XSL
Database: MS SQL Server 2000
Platform: Win2000 Server (ported to Linux [Red Hat 7.1] and it worked flawless there, as well)

Thoreau Capital

Thoreau Capital was a hedgefund company in Chicago.

The desire of the company was to have a database-driven, password-protected site to display sensitive financial information.

In addition, the company wanted the ability to administer the site as much as possible through the browser; a tiered-user approach was deployed to support users and administrations.

Users are shown only the links to areas for which they have permission; administrators have full run of the site.

I did all work on this site: graphic design, logo, database design, coding, CSS and initial setup.

The company ceased operations before the site was posted.

Language: Cold Fusion
Database: Access (to keep costs down)
Platform: Win2000 Server

Threaded Message Board - Promotional

This project was undertaken for two primary reasons:

  • Get more acquainted with mySQL

  • Gain an in-depth understanding of sessions in PHP

I've written threaded message boards in both Cold Fusion and Perl, but never in PHP.

Message boards are complicated in that they require a deep understanding of the scripting language's and (if used) database's date object; raise issues about access (can one read/post/edit/delete?).

Language: PHP v4.x
Database: mySQL v3.23
Platform: Linux (Red Hat 7.3) - backups performed nightly to mySQL on Win2000 server

Top 10 Lists - Promotional

An area that contains Top 10 lists - favorite movies, books, and so on.

Accessible via a link on my blog, this area has drawn more traffic than any other non-blog area of my sites.

This area integrates the look and feel of my blog, including the adjustable (CSS-driven) looks and feels of the blog.

LAMP (Linux, Apache, mySQL, PHP) back-end; front-end results are written out to static HTML pages backend.

Language: PHP 4.x
Database: mySQL 3.x
Platform: Linux Red Hat (7.3)

Just a HTML/CSS mockup for a potential client.

CSS is great for this type of design-decision work. Change a couple of CSS lines, and the colors totally change, rail can move from the left to right side and so on.

Ultimately, this site never launched.

Language: Static HTML/CSS
Platform: A Unix variant.