Stacks Explorer •♥• Source Code

Note: Work on this project is still gradually ongoing. These files will be updated a couple of times through 2019 until we reach the final version.

Last update: 2018-12-26

I did the meat-and-potatoes work in Processing Java, and I've done my best to keep the code reasonably organized and decently commented. However, keep in mind I'm basically flying by the seat of my pants here. If you're planning on adapting this for your own project, some familiarity with the overrides required to use HashSets with objects in Java will be helpful.

And finally, if you find yourself asking "wait but... why?": The Documentation may help to shed some light on that whole can of worms.

The project is organized like this:

Pre-Runtime Processing

175,877 PrelingerLibr(...).zip This is a zip of the whole Processing directory, which includes everything listed below, and all of the files which it outputs (some of the HTML and the JSON file in the "Runtime" section below).
88,216 Prelinger-2018-12-17.tsv This is the raw export from the google doc.
42,008 ArchiveOrgResults.csv Pinging for the full set of tags & titles takes over an hour. In order to expedite iteration, I've included a boolean TF in makeEntriesArray.pde, where you can instead load this CSV. (NOTE! If you make changes to the TSV, you'll need to re-run the web-pinging loop and make a new one of these.)
1,203 PrelingerLibr(...).pde NOTE: This and all of the other .pde files need to be in the standard directory setup for Processing programs (If you're not familiar with this, the .zip file above has everything in its right place). This is a small hub which loads the TSV file, and calls the next four functions.
9,293 MakeEntriesArray.pde Parses the TSV and creates a master set of entries. (Note the boolean flag "getOnlineResults" which toggles pinging or loading the ArchiveOrgResults.CSV).
8,809 makeHTMLSidebars.pde Takes the master set of Entries and generates the two HTML sidebars.
3,484 makeShelfJSON.pde Takes the master set of Entries and generates the JSON file. (This file is organized via LOCATION, and is used to populate the tags below the shelf photo when you arrive at a new location.)
2,995 makeListHTML.pde Creates and exports the HTML table for the List View.
1,557 miscStringFunctions.pde Misc. little helper String functions, like replacing the ^ characters with commas, creating JSON pairs (etc etc)

Runtime Web Files

611,299 index.html Just a plain old index file. (Note: the "sidebar-stacks.html" content included in this, because it cuts down on the number of HTML requests when the site initially loads.)
16,875 stacks-explorer.js This is the meat-and-potatoes javascript file. It's organized and commented.
534,566 shelves-JSON.js A JSON file which has all of the topics and titles organized by location.
426,752 sidebar-alpha.HTML The HTML for the alphabetical sidebar.
601,560 sidebar-stacks.HTML The HTML for the stacks-ordered sidebar, nested in Topic Categories.
299,860 list.html The list view HTML for Command-F enthusiasts. Side note: This is a standalone vanilla HTML file. It doesn't require js, jquery, and the CSS is included in the head.

Photo Files

1,835 PrelingerFileRename.pde A small utility for renaming files sequentially into Stack-Bank-Row-Depth. Works either with incrementing bank or row (see commented-out code). Note: This script uses the Apache Commons' "FileUtils" package.
1,670 PrelingerContactSheets.pde This script takes a folder of photos, and stitches them together into the full-stack composites. This is set up for the Prelinger Library's particular stack configuration (ie: 12 banks x 10 rows + some weird oversize stuff), so you'll need to modify it. Also requires Apache's "FileUtils."

<••• Back to "About"
<••• Back to the Stacks Explorer

"Code Rush" by David Winton, 2000
"A Vernacular Web" by Olia Lialina, 2005
"The Jargon File v4.4.8" Ed. Eric Raymond, 2003
"The Computer Chronicles" with Stewart Cheifet, 1983-2002
"My website is a shifting house next to a river of knowledge. What could yours be?" Laurel Schwulst, 2018