It seemed like a simple request. "Please add 'MAINT-CNTRL-ADMIN' to the cost center dropdown for client #876." It was also Scott A's very first assignment, having recently started as a web developer for the B2B merchandise reseller.
The ecommerce application he was hired to maintain was ASP-based and had been developed over the course of several years by an outside consultant. During the job interview, the system looked pretty decent: it tracked orders, inventory, products, etc. The UI wasn't wonderful, but it worked.
As for the request, Scott figured it'd be a matter of finding the cost center table and add a new row for that particular client. If only it were that simple. Since there was no "Cost Center" table — nor anything named anything similar — he decided to just trace the code to find where the dropdown got its data from. That's when the fun began.
The first thing Scott noticed was that there seemed to be a lot of include files. And the include files included a lot of other include files. And those files included even more files. Functions were being called and objects being created that he couldn't find the source for. After a short while, the entire site began to seem like one giant "choose your own adventure" novel, and it quickly became clear that simply opening up the target page and looking for the drop down wasn't going to be enough.
In desperation, Scott wrote a simple script that would trace all of the include files and display them in a nice pretty tree. Surely, he'd be able to find the files he needed to look at after that. Following is the output of what he got for one — yes, one — the pages within the website.
catalog.asp
catalog.code.inc.asp
catalog.display.inc.asp
catalog.display.product.inc.asp
catalog.display1.product.inc.asp
catalog.display.product.files.inc.asp
catalog.display.productADD.inc.asp
catalog.display19.product.inc.asp
catalog.display.product.files.inc.asp
catalog.display.productADD.inc.asp
catalog.display2.product.inc.asp
catalog.display.product.files.inc.asp
catalog.display.productADD.inc.asp
catalog.display3.product.inc.asp
catalog.display.product.files.inc.asp
catalog.display.productADD.inc.asp
catalog.display4.product.inc.asp
catalog.display.product.files.inc.asp
catalog.display.productADD.inc.asp
catalog.display5.product.inc.asp
catalog.display.product.files.inc.asp
catalog.display.productADD.inc.asp
catalog.display6.product.inc.asp
catalog.display.product.files.inc.asp
catalog.display.productADD.inc.asp
catalog.display.productlist.inc.asp
catalog.display.productlist2.inc.asp
catalog.display.productlistProduct.inc.asp
catalog.display.quickorder13.inc.asp
catalog.display.quickorder23.inc.asp
CatalogRedirect.code.inc.asp
category.code.inc.asp
iUser2.0a.code.login.inc.asp
iUser2.0.code.login.inc.asp
iUser3.0.code.login.inc.asp
Category2.0.obj.inc.asp
iUser2.0a.code.login.inc.asp
iUser2.0.code.login.inc.asp
iUser3.0.code.login.inc.asp
layout.display.catalogs.inc.asp
content.display.catalogs.inc.asp
cart.display.inc.asp
cart.display.table.inc.asp
CartImage.display.inc.asp
catalog.display.feature.inc.asp
catalog.display.productlist2.inc.asp
catalog.display.productlistProduct.inc.asp
catalog.display.inc.asp
catalog.display.product.inc.asp
catalog.display1.product.inc.asp
catalog.display.product.files.inc.asp
catalog.display.productADD.inc.asp
catalog.display19.product.inc.asp
catalog.display.product.files.inc.asp
catalog.display.productADD.inc.asp
catalog.display2.product.inc.asp
catalog.display.product.files.inc.asp
catalog.display.productADD.inc.asp
catalog.display3.product.inc.asp
catalog.display.product.files.inc.asp
catalog.display.productADD.inc.asp
catalog.display4.product.inc.asp
catalog.display.product.files.inc.asp
catalog.display.productADD.inc.asp
catalog.display5.product.inc.asp
catalog.display.product.files.inc.asp
catalog.display.productADD.inc.asp
catalog.display6.product.inc.asp
catalog.display.product.files.inc.asp
catalog.display.productADD.inc.asp
catalog.display.productlist.inc.asp
catalog.display.productlist2.inc.asp
catalog.display.productlistProduct.inc.asp
catalog.display.quickorder13.inc.asp
catalog.display.quickorder23.inc.asp
catalogform.display.inc.asp
cataloglink.display.inc.asp
CatalogPass.display.inc.asp
catalogpointscash.display.inc.asp
catalogpointshistory.display.inc.asp
CatalogPointsReport.display.inc.asp
catalogpointstransfer.display.inc.asp
catalogpointsupload.display.inc.asp
CatalogProfile.display.inc.asp
CatalogSearch.display.inc.asp
catalog.display.productlistProduct.inc.asp
CatalogUser.display.inc.asp
changepassword.display.inc.asp
inventory.display.inc.asp
inventoryvalue.display.inc.asp
login.display.inc.asp
login.error.display.inc.asp
login.permanent.display.inc.asp
lsmanage.display.inc.asp
order.display.inc.asp
order.display.1.inc.asp
cart.display.table.inc.asp
order.display.2.inc.asp
cart.display.table.inc.asp
order.display.2.BillBranch.inc.asp
order.display.2.BillCorporate.inc.asp
order.display.2.BillMe.inc.asp
order.display.2.BillMeWithPO.inc.asp
order.display.2.CostCenter.inc.asp
order.display.2.CreditCard.inc.asp
order.display.2.PaidInFull.inc.asp
order.display.2.PaymentTypeRequest.inc.asp
order.display.2.PayrollDeduct.inc.asp
order.display.2.Points.inc.asp
order.display.2.Prepay.inc.asp
order.display.3.inc.asp
cart.display.table.inc.asp
order.display.4.inc.asp
order.display.3.inc.asp
cart.display.table.inc.asp
order23.display.inc.asp
cart.display.table.inc.asp
cartfile.code.inc.asp
order23.display.1.inc.asp
order23.display.2.inc.asp
order.display.2.BillBranch.inc.asp
order.display.2.BillCorporate.inc.asp
order.display.2.BillMe.inc.asp
order.display.2.BillMeWithPO.inc.asp
order.display.2.CostCenter.inc.asp
order.display.2.CreditCard.inc.asp
order.display.2.PaidInFull.inc.asp
order.display.2.PaymentTypeRequest.inc.asp
order.display.2.PayrollDeduct.inc.asp
order.display.2.Points.inc.asp
order.display.2.Prepay.inc.asp
order23.display.3.inc.asp
orderhistory.display.inc.asp
orderreport.display.inc.asp
orderreportRJR.display.inc.asp
rmicusage.display.inc.asp
usage.display.inc.asp
userreport.display.inc.asp
userreport2.display.inc.asp
layout.display0-1.inc.asp
layout.display0-2.inc.asp
layout.display1-1.inc.asp
layout.display1-2.inc.asp
layout.display10-1.inc.asp
layout.display10-2.inc.asp
layout.display11-1.inc.asp
layout.display11-2.inc.asp
layout.display12-1.inc.asp
layout.display12-2.inc.asp
layout.display13-1.inc.asp
layout.display13-2.inc.asp
layout.display14-1.inc.asp
layout.display14-2.inc.asp
layout.display15-1.inc.asp
layout.display15-2.inc.asp
layout.display16-1.inc.asp
layout.display16-2.inc.asp
layout.display17-1.inc.asp
menus-17.code.inc.asp
cms.code.sub.inc.asp
menus-17.display.css.inc.asp
menus-17.display.js.inc.asp
layout.display17-2.inc.asp
layout.display18-1.inc.asp
menus-17.code.inc.asp
cms.code.sub.inc.asp
layout.display18-2.inc.asp
layout.display19-1.inc.asp
layout.display19-2.inc.asp
layout.display2-1.inc.asp
layout.display2-2.inc.asp
layout.display20-1.inc.asp
layout.display20-2.inc.asp
layout.display21-1.inc.asp
layout.display21-2.inc.asp
layout.display22-1.inc.asp
layout.display22-2.inc.asp
layout.display23-1.inc.asp
layout.display23-2.inc.asp
layout.display24-1.inc.asp
layout.display24-2.inc.asp
layout.display25-1.inc.asp
layout.display25-2.inc.asp
layout.display26-1.inc.asp
layout.display26-2.inc.asp
catalog.display.productlist2.inc.asp
catalog.display.productlistProduct.inc.asp
layout.display27-1.inc.asp
layout.display27-2.inc.asp
layout.display28-1.inc.asp
layout.display28-2.inc.asp
layout.display29-1.inc.asp
layout.display29-2.inc.asp
layout.display3-1.inc.asp
layout.display3-2.inc.asp
layout.display30-1.inc.asp
layout.display30-2.inc.asp
layout.display31-1.inc.asp
layout.display31-1.code.functions.inc.asp
layout.display31-1.code.inc.asp
layout.display31-2.inc.asp
layout.display32-1.inc.asp
layout.display32-2.inc.asp
layout.display4-1.inc.asp
layout.display4-2.inc.asp
layout.display5-1.inc.asp
layout.display5-2.inc.asp
layout.display6-1.inc.asp
layout.display6-2.inc.asp
layout.display7-1.inc.asp
layout.display7-2.inc.asp
layout.display8-1.inc.asp
layout.display8-2.inc.asp
layout.display9-1.inc.asp
layout.display9-2.inc.asp
ProductOption2.0.obj.inc.asp
ProductTMG2.0.obj.inc.asp
variables.inc.asp
CartTMG2.0.obj.inc.asp
Category2.0.obj.inc.asp
CCCharge2.0a.obj.inc.asp
cmsForm2.1.obj.inc.asp
cmsFormData2.1.obj.inc.asp
cmsFormDataElement2.1.obj.inc.asp
cmsFormElement2.1.obj.inc.asp
cmsFormElementType2.1.obj.inc.asp
cmsFormProcessor2.1.obj.inc.asp
cmsFormProcessorRole2.1.obj.inc.asp
cmsPage2.1.obj.inc.asp
cmsParagraph2.1.obj.inc.asp
cmsSection2.1.obj.inc.asp
Coupon2.1.obj.inc.asp
Customer2.0.obj.inc.asp
Feature2.0.obj.inc.asp
Item2.1.obj.inc.asp
ItemLong2.1.obj.inc.asp
LSList2.0.obj.inc.asp
Object2.0a.obj.inc.asp
ObjectRelation2.0.obj.inc.asp
StorageBinary2.0.obj.inc.asp
StorageDatabase2.0.obj.inc.asp
StorageImage2.0.obj.inc.asp
StorageIndex2.0.obj.inc.asp
StorageString2.0.obj.inc.asp
Object2.1.obj.inc.asp
Clientscript2.1.obj.inc.asp
Color2.1.obj.inc.asp
Extension2.1.obj.inc.asp
SPD2.1.obj.inc.asp
StorageBinary2.0.obj.inc.asp
StorageDatabase2.0.obj.inc.asp
StorageImage2.0.obj.inc.asp
StorageIndex2.0.obj.inc.asp
StorageString2.0.obj.inc.asp
OrderTMG2.0.obj.inc.asp
Price2.1.obj.inc.asp
ProductOption2.0.obj.inc.asp
ProductTMG2.0.obj.inc.asp
Receipt2.0.obj.inc.asp
email2.1.obj.inc.asp
Shipping2.1.obj.inc.asp
Browser2.1.obj.inc.asp
Email2.1.obj.inc.asp
User2.0.obj.inc.asp
Crypt2.1.obj.inc.asp
Object2.1.obj.inc.asp
Clientscript2.1.obj.inc.asp
Color2.1.obj.inc.asp
Extension2.1.obj.inc.asp
SPD2.1.obj.inc.asp
StorageBinary2.0.obj.inc.asp
StorageDatabase2.0.obj.inc.asp
StorageImage2.0.obj.inc.asp
StorageIndex2.0.obj.inc.asp
StorageString2.0.obj.inc.asp
User2.1.obj.inc.asp
Crypt2.1.obj.inc.asp
variables.code.constants.inc.asp
variables.code.functions.inc.asp
variables.code.server.inc.asp
variables.code.timecheck.inc.asp