A Quick Note on HackMD for Collaborative Notetaking in Class

A Quick Note on HackMD for Collaborative Notetaking in Class

I’ve long been interested in collaborative notetaking in class as a way of making presence in class more meaningful. In my imagination, collaboratively written notes from class discussions and exercises intersect with other kinds of notes (Hypothes.is for instance for reading, Zotero on bibliography) to make a sort of super zettlekasten.

In class this term (‘Bad Archaeology‘) I’m framing discussion as a series of unconferences. As part of that, I’m also making any notes that I scribble together available to the students via HackMD.io. HackMD also has a nice feature that integrates with Reveal.js so that I can quickly spin out a slide deck from a bit of markdown in a new note, like so:

---
title: Slidedeck Sept 4 Getting Started
slideOptions:
  transition: fade
  theme: night
---

## Sept 4 Getting Started

---

![an image](url to the image)

Note:
Speaking notes hide here; not visible in slide mode but visible in edit

---

and so on

This really fits well with my existing flow. You can create a ‘book’ by making a note with a list of links, then hitting ‘book mode’. The page that loads up will use your note as a table of contents on the left of the page, and the contents from the first linked page as the default first page:

Screenshot from my HackMD notebook

I’m imagining my students making many cards, then filing them altogether in a book-like format. Permissions can be set on individual cards to restrict who can edit them (so just the students, students plus me, outside world, etc). Materials can be exported to dropbox, github, odf format, etc. YAML can be added to each note to ask Google not to index and so on.

HackMD has pricing for more features, more space and so on;  if the business model is good presumably it’s going to hang around for a while. But… there’s always the fear, right? Turns out, you can deploy the whole thing to your own space too – the repository is at https://github.com/hackmdio/codimd. (There’s a desktop interface I see, which is neat, it’s in the organization’s repository list). It doesn’t look easy to deploy, mind you. I have a free account with Heroku, so when I saw the ‘deploy to heroku’ button….

Reader, I pressed it.

It failed the first time, but deployed the second time, so now I have a collaborative markdown notepad of my very own.

(ha, as I look at my Heroku dashboard, I see that I set this up once before a year or two ago! Completely forgot about it…)

featured image by Aaron Burden via Unsplash

DCGAN for Archaeologists

DCGAN for Archaeologists

The following is cross-posted from our project website at bonetrade.github.io

Learning about GANs 

Melvin Wevers has been using neural networks to understand visual patterns in the evolution of newspaper advertisements in Holland. He and his team developed a tool for visually searching the newspaper corpus. Melvin presented some of his research at #dh2018; he shared his poster and slides so I was able to have a look. Afterwards, I reached out to Melvin and we had a long conversation about using computer vision in historical research.

His poster is called ‘ImageTexts: Studying Images and Texts in Conjunction’ which clearly is relevant to our work in the BoneTrade. In his research, he looks at the text for ‘bursty’ changes in the composition of the text. That is, points where the content changes ‘state’ in terms of the frequency of the word distribution. The other approach is to use Generative Adversarial Networks on the images.

So what are GAN? This post is a nice introduction and uses this image to capture the idea:

Image from Dev Nag on Medium

In essence, you have two networks. One learning how to identify your source images, and the second learning how to fool the first by creating new images from scratch.

Why should we care about this sort of thing? For our purposes here, it is one way of learning just what features of our source images our identifiers are looking for (there are others of course). Remember that one of the points of our research is to understand the visual rhetoric of these images. If we can successfully trick the network, then we know what aspects of the network we should be paying attention to. Another intriguing aspect of this approach is that it allows a kind of ‘semantic arithmetic’ of the kind we’re familiar with from word vectors:

The easiest way to think about words and how they can be added and subtracted like vectors is with an example. The most famous is the following: king – man + woman = queen. In other words, adding the vectors associated with the words king and woman while subtracting man is equal to the vector associated with queen. This describes a gender relationship.

Another example is: paris – france + poland = warsaw. In this case, the vector difference between paris and france captures the concept of capital city.

I will admit that I haven’t figured out quite how to do this yet, but I’ve found various code snippets that should permit this.

Finally, as Wevers puts it, ‘The verisimilitude of the generated images is an indication of the meaningfulness of the learned subspace’. That is, if our generated images are not much good, then that’s an indication that there’s just far too much noise going on in our source data in the first place. Garbage in, garbage out. In Melvin’s poster, the GAN “was able to learn the variances in car models, styling, color, position and photographic composition seen in the adverts themselves.”

In which case, it seems that GANS are a worthwhile avenue to explore for our research.

Dominic Monn published an article and accompanying Jupyter Notebook on building a GAN trained on one of the standard databases, ‘CelebFaces Attributes data set’ which has more than 200,000 photographs of ‘celebrities’ (training dataset composition is a topic for another post). It’s probably a function of my computer but I couldn’t get this up and running correctly (setting up and using AWS computing power will be a post and tutorial in due course). It is interesting in that it does walk you through the code, which is not as forbidding as I’d initially assumed.

I had more success with Taehoon Kim’s ‘tensorflow implementation of “Deep Convolutional Generative Adversarial Networks”’, which is available on Github at https://github.com/carpedm20/DCGAN-tensorflow. I don’t have a GPU on this particular machine, so everything was running via CPU; I had to leave my machine for a day or two, and also use the caffeinate command on my Mac to keep it from going to sleep while the process ran (quick info on this here).

I had a number of false starts. Chief amongst these was the composition of my training set.

  1. You need lots of images. Reading around, 10 000 seems to be a bottom minimum for meaningful results
  2. The images need to be thematically unified somehow. You can’t just dump everything you’ve got. I went through a recent scrape of instagram via the tag skullforsale and pulled out about 2300 skull images. That was enough to get the code to run, but as you’ll see, not the best results. Of course, I was only trying to learn how to use the code and work out what the hidden gotchas were.

Gotchas 

Ah yes, the gotchas.

  • images have to be small. Resize them to 256 x 256 or 64 x 64 pixels. Use Imagemagick’s ‘mogrify’ command.
  • images have to be rgb
  • weird errors about casting into array eg https://github.com/carpedm20/DCGAN-tensorflow/issues/162: ValueError: could not broadcast input array from shape (128,128,3) into shape (128,128) means that we have to use Imagemagick’s ‘convert’ command there too.
  • greyscale images screw things up. Convert those to RGB as well
  • running the code: use the dockerized version, and put the data inside the DATA folder.
  • running the main.py script: --crop always has to be appended.

Command snippets:

convert image1.jpg -colorspace sRGB -type truecolor image1.jpg

make sure there are no grayscale images

identify -format "%i %[colorspace]\n" *.jpg | grep -v sRGB

convert images to 64×64

mogrify -resize 64x64 *.jpg

convert to sRGB

mogrify -colorspace sRGB  *.jpg

run main.py

python main.py --dataset=skulls --data_dir data --train --crop`

Results? 

I let the code run until it reached the end of its default iteration time (which is a function of the size of your images). Results were… unimpressive. With too small a dataset, the code would simply not run.

Some outputs:

after two epochs

After nearly an hour the first visualization of the results after a mere two epochs of iterations… a dreamy mist-scape as the machine creates.

first actual working results

In this mosaic, which represents the results from my first actual working run (20 epochs), you can, if you squint, see a nightmarish vision of monstrous skulls. Too few images, I thought (about a thousand, at this point). So I spent several hours collecting more images, and tried again…

results of a run

Maybe I’m only seeing what I want to see, but I see hints of the orbital bones around the eyes, the bridge of the nose, in the top left side of each test image in the mosaic.

So. I think this approach could prove productive, but I need a) more computing power b) more images c) run for much much longer.

I wonder if I can remove my decision making process in the creation of the corpus from this process. Could I construct a pipeline that feeds the mass of images we’ve created into a CNN, use the penultimate layer and some clustering to create various folders of similar images, and then pass the folders to the GAN to figure out what it’s looking at, and visualize the individual neurons?

Jupyter Notebooks for Digital Archaeology (and History too!)

Jupyter Notebooks for Digital Archaeology (and History too!)

As the fall academic term approaches, and we get closer to version 1.0 of the Open Digital Archaeology Text (ODATE), I thought I would share the plethora of Jupyter Notebooks we’ve put together to support the work.  (A video showing the whole ODATE project is over here on youtube). The text of ODATE still has some rough edges and there are parts still coming together. Indeed, it will never be finished as it is my hope that it grows and is forked and becomes the kernel for many many coursepacks and workshops and syllabi; more on that later when we’re closer to pulling back the official curtain.

As far as these notebooks go, more will come with time. Feel free to use these in your teaching – please let me know if you do and how it goes –  and please do suggest edits (either by leaving an issue on the github repo or by making edits and a pull request on github). I would be delighted to include more that other people have built, so let me know if this interests you!

These notebooks can be downloaded and run locally if you have Jupyter installed (you’ll need to pay attention to the requirements and postBuild files if you do that, in order to get all the bits and pieces installed. Use a virtual environment too!) If you click the ‘launch binder’ button, the notebooks will launch in an interactive environment hosted by Binder. (Once they’re up and running, you can also change the url where it says ‘tree’ to ‘lab’ to have these notebooks in a Jupyter Lab interface).

Note: Run each cell in the notebook in sequence from top to bottom; use shift+enter to run the cell or hit the ‘run’ button in the notebook toolbar. Have students work through the notebooks, then make changes, modify, or expand the notebook for themselves. When the notebook is running, there is an ‘export’ option under the ‘file’ tab. Export as jupyter notebook. The resulting text file (with .ipynb extension) could be submitted for course work (and run within the relevant binder, of course).

(featured image: Brandon Green, unsplash.com)

These links will launch the notebooks using Binder. It can sometimes take a few moments for the environment to launch; be patient. Click on the ‘status’ link when launching to see the environment build.


Introduction to Jupyter Notebooks

Binder Repository

Contains:

  • Welcome.ipynb
  • demo-R.ipynb

This notebook contains everything necessary to set up a Github repo that can become the basis of a Binder. Consult the repository’s Readme file to see how it can be customized for your own particular usage. Fork (make a copy) of this repo as often as is necessary! Many of the exercises in the first part of ODATE require nothing more than this.


Working with APIs

Binder Repository

Contains:

  • chronicling america api.ipynb
  • open context api.ipynb
  • Open Context Measurements.ipynb
  • mapping-with-ipyleaflet.ipynb

These notebooks demonstrate progressively more complicated ways of retrieving data via an API.


Archaeological Data into R

Binder Repository

Contains:

  • Retrieving Data from the Portable Antiquities Scheme Database.ipynb
  • archdata.ipynb

The first notebook shows how to use R to pull archaeological data from an online database. The second notebook shows how to interact with the archdata package, a collection of archaeological datasets already pulled together for usage in R.


Databases

Binder Repository

Contains:

  • intro to sql.ipynb
  • SQLite Database and R.ipynb
  • visualizing results of sql query in python.ipynb

This notebook demonstrates how to ingest a variety of csv (or other format) files into a single SQL database. It shows how to query the database, and to push the results of the query into a dataframe for further analysis or visualization.


Linked Open Data

Binder Repository

Contains:

  • sparql-intro.ipynb
  • Using R to Retrieve and Visualize Data from SPARQL.ipynb

The first notebook shows how to craft sparql queries for the British Museum, Wikidata, and Nomisma endpoints. The first notebook uses a SPARQL kernel that also allows for graphing visually the data relationships; it also has a ‘magic’ command for writing the data to json or csv. The second notebook demonstrates how to use the sparql package for R to query an endpoint and then manipulate the results to do some simple statistics and visualization.


Spatial Archaeology

Binder Repository

  • linlithgow_spatial.ipynb
  • canmore_survey_shetland.ipynb
  • 1_spatialarchaeology.ipynb
  • working with remote sensing data.ipynb

These notebooks are courtesy Dr. Rachel Opitz, of the University of Glasgow who is Lecturer in Spatial Archaeology. There are two binders which can be launched, ours and Dr. Opitz’s; consider launching Dr. Opitz’s as she updates the work for her own teaching, or use the ODATE version that is updated only periodically. Dr. Opitz’s version can be launched here: Binder

The Linlithgow notebook explores burial data, while the Canmore notebook explores the map of registered monuments in the Shetlands, recorded in Scotland’s Canmore database. The 1_spatialarchaeology.ipynb notebook explore’s data from Dr. Opitz’s team’s excavations at the ancient city of Gabii in Italy. The final notebook works with remote sensing data and explores cropmarks in hyperspectral images.


Scraping

Binder Repository

  • Extracting Data from PDFs using Tabulizer.R
  • metadigitise.R
  • Building a Scrapy Scraper.ipynb

To launch the two .R scripts, use the built-in RStudio server in this binder. This binder will take a bit of time to load up.

From the Home page for this binder, select new -> RStudio. Then open the Extracting Data from PDFs using Tabulizer.R (or the metadigitise.R) file.

Put your cursor at the first line in the script (top left window); run one line at a time.


LiDAR

Binder Repository

  • Demo using Montreal LiDAR data.ipynb
  • Avebury LiDAR.ipynb

These two notebooks show how to unzip .laz files into .las, and to visualize the data therein.

The final codeblock in both notebooks creates an animated gif from the data. That final codeblock is computationally intensive; it will take some time to run. The results will be written to a new folder called ‘export’; you can open that folder by clicking on the jupyter logo at top and then clicking on the ‘export’ folder.

You will know the code is finished when the [*] at the left of the code block changes to a number.

Start with the Montreal demo notebook. It contains some code that the Avebury notebook depends on.


Agent Based Modeling

Binder Repository

Contains:

  • Schelling Segregation Model – schelling/analysis.ipynb
  • Epstein Civil Violence Model – epstein/epstein civil violence.ipynb
  • Forest Fire Model – forest_fire/forest fire model.ipynb
  • Virus on a network – virus_on_a_network/virus.ipynb

Start with the Forest Fire model – it is one of the best known introductory models in the field. As you experiment with these models, ask yourself, ‘what would it take for this to be a model of an archaeological concept?’ The ‘Virus’ model notebook is still under development.


Agent Based Modeling with Netlogo

Binder

A notebook for running Netlogo models ‘headless’ (eg no GUI) by specifying parameters for an experiment. These parameters are passed to a bash script and run from within the notebook. Results are written to file for further analysis in the python. A variety of likely python data packages are also provided for import. (Others can be added by running !pip install <package> from within a notebook.


Computer Vision

Binder Repository

Contains:

  • Building an archaeological image classifier with tensorflow.ipynb

This notebook demonstrates how Transfer Learning can be applied to create a neural network model trained on archaeological imagery. A mobile version that uses the results of this notebook to create an image identification app may be followed here


Clustering Images with Tensorflow

Binder Repository

Contains:

  • find-similar-images.ipynb
  • Affinity Propogation.pynb

These notebooks take the second-last layer of the neural network and demonstrate how to study it for clustering visually similar images.


Sonification

Binder Repository

  • Intro to Sonification.ipynb

This notebook walks through the process of mapping time-series data to musical notation, to create mid files that can then be turned into sound.


Creativity

Binder [https://github.com/o-date/creativity/]

  • Glitching an image with prism sorting.ipynb
  • semantic_similarity_chatbot.ipynb

This binder can take quite a bit of time to pull together. Please be patient. There are steps in the chatbot notebook that can also take a bit of time; watch for the [*] beside a running code block to disappear before moving to the next one.


Creativity 2

Binder Repository

  • World Building – model demo.ipynb
  • History Generator – ahistorygenerator.ipynb

The first notebook generates a world by simulating topography and erosion, and then using an agent based model to play out its history. The second is a far more simple model of state formation, fision, and fusion but uses Tracery to generate its historical chronicle, and graphviz to visualize it.


Make a Research Compendium

Binder Repository

This repository is an experimental demonstration of how you might combine a research compendium created by rrtools with Binder, a service that creates an executable environment with RStudio in your browser.

Please read the rrtools documentation and this repository’s readme before launching this binder.

Sticking it to DCGAN

These are notes to self; a proper blog post eventually

Working with DCGAN – https://github.com/carpedm20/DCGAN-tensorflow

This is cool too, but just doesn’t work for me (final codeblock runs, no results)

->  much depends on the input data

-> more is better

-> images need to be resized; smaller than 256 x 256

conda activate env
  • convert images to 64×64
    mogrify -resize 64x64 *.jpg
  • make sure there are no grayscale images
    identify -format "%i %[colorspace]\n" *.jpg | grep -v sRGB
    
  • fix those that are:
    convert input.jpg -colorspace sRGB -type truecolor output.jpg
    
  • and fire that thing off:
    python main.py --dataset images --data_dir data --train --crop

 

Buy a damned GPU

Exploring Tensorflow for Poets, or, Building a Pottery Classifier

Exploring Tensorflow for Poets, or, Building a Pottery Classifier

reblogged from our project website at bonetrade.github.io

In our recent paper, ‘Fleshing Out the Bones’ we used the trained ‘Inception 3’ model as a way of determining clusters of images that we then studied for clues and hints: why did the machine cluster them this way? What are the common features?

Unsupervised learning: It’s not unlike reading entrails.

Diagram of the sheep's liver found near Piacenza with Etruscan inscriptions on the bronze sheep's Liver of Piacenza, Wikipedia

An alternate approach is to take an existing model, and add new training data to it. Pete Warden put together a tutorial a few years ago called Tensorflow for Poets that has since been formalized as a Google CodeLabs tutorial. Last night I tried the tutorial out using a corpus of Roman fabrics and wares. The nuts-and-bolts of doing this are over in the tutorials.

The hardest part was getting the training data organized. It needs to be in a folder where each image is in a subfolder where the name of the subfolder is the category, eg:


|
|-training-images
     |
     |-terrasig
     |-african_red_slip
     |-veranice_nera

…etc. Once that was done, it went quite smoothly. What will take some time is figuring out what the different architecture and other flags do. For instance, in the default command suggested by the tutorial, I had to determine that I needed to add the flag on validation size and set it to use the entire training set (as my training set is probably way too small).

python -m scripts.retrain \
  --bottleneck_dir=tf_files/bottlenecks \
  --how_many_training_steps=500 \
  --model_dir=tf_files/models/ \
  --summaries_dir=tf_files/training_summaries/mobilenet_0.50_224 \
  --output_graph=tf_files/retrained_graph.pb \
  --output_labels=tf_files/retrained_labels.txt \
  --architecture mobilenet_0.50_224 \
  --validation_batch_size=-1 \
  --image_dir=tf_files/gallery

“The architecture flag is where we tell the retraining script which version of MobileNet we want to use. The 1.0 corresponds to the width multiplier, and can be 1.0, 0.75, 0.50 or 0.25. The 224 corresponds to image resolution, and can be 224, 192, 160 or 128. For example, to train the smallest version, you’d use –architecture mobilenet_0.25_128.” Harvey, 2017

I’m not sure I understand exactly what this all means yet, practically speaking. Anyway, I now know what I’ll need our MA research assistants to do this fall.

  1. study our first corpus’ clustering results to come up with some training categories
  2. divide that corpus into a training dataset
  3. train a new image classifier
  4. run that classifier on our new corpus (which I’m still collecting)
  5. compare that with the clustering approach without our new classifier.
  6. compare the results of both with the posts’ text

The ambition? To be able to sort at scale the images we find automatically into sensible structure.

 

Featured Image by Adrien Ledoux on Unsplash

MA in History, Public History, Digital Humanities: 2 Positions

MA in History, Public History, Digital Humanities: 2 Positions

Damien Huffer and I are working on a project that elaborates from our ‘Insta-Dead‘ work, which data mined Instagram to explore the trade in human remains. We have an opportunity for two potential MA students to start September 2018 to work with us, at Carleton University.  At the same time, the students would pursue their own research within the ambit of this project, which revolves around the use of various AI technologies – especially, but not limited to, various kinds of neural networks. Ideally, the students’ own research projects would push the research into other domains, for instance, historical photographs; tourist photos; advertising using historical imagery, digital historical consciousness.

Interested candidates are invited to contact Dr. Shawn Graham at shawn dot graham at carleton dot ca to discuss their potential research project, to gauge their potential fit with the funding envelope and other potential supplementary funding sources. Candidates are also invited to review the MA History, MA Public History, with Collaborative Digital Humanities Program requirements –

https://carleton.ca/history/graduate/ma-program/program-requirements/m-a-with-specialization-in-digital-humanities/

https://carleton.ca/history/m-a-in-public-history/

Criteria:
– a good first degree in a relevant subject (history, archaeology, etc)
– existing ability in digital humanities methods or issues is desirable, but not critical. Much more important is an ability to think creatively about the problems or potentials of computational viewpoints.

Activities that the students might be involved in:

+ Writing code to generate datasets
+ Developing various NN
+ Analyzing results
+ Ground-truthing training datasets (making sure that training images are properly classified)
+ Curating and preparing materials for data publication in appropriate venues
+ Research and writing of tutorials
+ Research and writing connected with their own research interests as they intersect with this project
+ Communicating the results of research with relevant publics at conferences and other venues

 

featured image by Green Chamelon on Unsplash

Guest Post: Alexis Mawko, Lessons from Warhol

Guest Post: Alexis Mawko, Lessons from Warhol

HIST3814 Critical Making in Digital History has come to an end. Over the duration of the term, the students first digitized something in the physical world, and then progressively manipulated, translated, and transduced the thing into different forms and mashups. The idea was that we would study the way things break, or fail to work how we think they should, to see if we could understand what the fact of the digital does to our work as historians. The final module involved pushing the digital thing back into the real world. I asked student Alexis Mawko if she would share some of her work. What I like about Alexis’ work is the way she uses the entire process as an opportunity to think about her practice as a historian in its ethical context. Below, we crafted a post out of her various process notes and paradata. The final part is her process notes on how to make a hologram projector

The reason I’m painting this way is that I want to be a machine, and I feel that whatever I do and do machine-like is what I want to do.

‘What is Pop Art? Answers from 8 Painters’, Part 1, G. R. Swenson, in Art News 62, November 1963

I deliberately chose Andy Warhol’s “Brillo Soap Pad Boxes” in the National Art Gallery of Canada for the thing for my assignment for multiple reasons. Warhol’s work forced the viewer to contemplate the relationship between art and everyday commercial objects. By replicating commercial packaging and presenting it as an artwork, the viewers and the curators are also forced to contemplate their own definition of what constitutes art.

Maxwell notes in  Power is in the Process: The ACCORD project that “…in the end we value human creativity above machines” (Maxwell, 2107). To me, this is why Andy Warhol’s work is regarded so highly. While he uses machines, helping hands, and pre-existing designs and images, it is the way that he re-purposes these images and objects that is what makes his work creative, and thus, art. The technology at his disposal allows Warhol to “seek to introduce the value of human creativity” (Maxwell, 2107) into otherwise, banal household objects. In addition, as Maxell notes, “despite his attempts to hide behind the machine, we are always aware of the personality who created the work” (Maxwell, 2107), and it is that creative personality that gives life and meaning to the artwork.

I think the framework of ideas can also be applied to work we have been doing with 3D modeling. We are more removed from the subject and we use technology to create a copy of the artifact at hand. Simply copying an object and processing it through a program to create a 3D model seems uncreative, and the final result would not be classified as art by many. But in essence, we are doing exactly as Warhol did; we are reproducing and repurposing and object for own use, and giving it a new meaning. While Warhol wished for his audience to contemplate his work and their own culture, our 3D models function as an informative tool that allows others to discover the artifact virtually. Furthermore, there is much more involvement in the creation process on our part. I had to edit photos and fiddle with the program to get the best result, and it required a substantial amount of trial and error. If the process was completely devoid of human creativity, the program would do a perfect job generating a 3D model the first time.

While making a 3D model of Warhol’s “Brillo Soap Pad Boxes”, I also had to remove the background of the images and subsequently, the context of the sculpture, that is, the gallery and the setting. In doing so I changed the meaning and the intent that the artist originally had for his work. While a viewer can look at my model and see a 3D image of the sculpture, it may not cause them to understand the meaning behind the sculpture, or contemplate why a consumer product would be displayed in the gallery.

While trying to copy the packaging of the Brillo soap pads, Warhol also re-appropriated the meaning of the Brillo boxes themselves and changed its “aura”- that is, its essential meaning (Bruno Latour and Adam Lowe, 2010). While the boxes started out as packaging designed to promote their product as well as the company’s long history in America, they were seen as something completely different, and more sinister, when viewed in the context of the art gallery. Warhol effectively erased decades of the company’s all American history, and the Brillo Soap Boxes became known throughout the public under a different light.

Finally, the final step that the Brillo Soap Pad Boxes have undergone was its recreation as 3D image, making a facsimile out of a facsimile. When made and viewed as a 3D model, part of the history is lost once again, as the viewer cannot appreciate the context in which his sculpture was meant to be seen in (in a gallery, as mentioned previously). Its meaning becomes an appropriation once again, and the 3D model can only be fully used as a visual supplement, and certainly does not compare to the real thing. Part of the fascination that comes with any artwork or artefact is that that art is has witnessed history, or is representation of the artist himself. Without having that authentic connection and without being able to see the original artefact, part of its meaning, quality, and value is lost.

Module 4 

I had the most difficulty deciding what to do for this final module. I was not quite sure what to create nor did I really know which direction I wanted to take my topic in. The reason for my indecisions really boil down to two main causes of concern.

#1 – I was struggling with how to advance my work in a meaningful way. The point of this module was to bring our digital creations into the physical world. Yet, throughout this course and throughout my own journey with my topic, I have become increasingly conscious of the roles we play as historians and of the potential unexpected consequences we face when manipulating things from the past, whether it be a narrative or a physical object. In Module 2, I focused on the multiple narratives that the Brillo boxes convey, and throughout the Brillo box’s many transformations (from consumer item, to fine art, to a digital 3D model) these narratives have shifted or have been lost all together. Questions of ethics arose as I was aware that each transformation utilized a pre-existing work, which was manipulated for the use and intentions of the creator (myself included). Therefore, I was somewhat hesitant to create a physical copy of a digital copy of a physical copy of an already existing object. (Confused? Me too.) I feared that dragging on this process of copying and reproducing would be redundant, unethical, and meaningless.

#2 – I was also concerned about my practical skills when it came to producing a physical rendering of my object. I feel as though the modules have been getting harder and harder in this regard, and I can admit that technological troubleshooting is not my forte, with my pre-existing technological skills being limited to Microsoft Office and Adobe applications. Thus far, I have been impressed with what I have been able to accomplish, and the discussions we have been having in class about “productive failures” have really helped affirm my less than perfect work and have encouraged me to experiment and move forward. However, with this module I was very unsure of what I wanted to accomplish.

In addressing my first concern regarding the redundancy of repetition, I decided that it was best to just fully acknowledge my role as a historian, as a digital creator, and as an “artefact appropriator” and purposefully bring my digital work from Module 1 back into physical space in the most literal way possible. I therefore decided to create a moving hologram of my 3D model of the “Brillo Soap Pad Boxes” from Module 1. While I was still concerned about how I would actually be able to go about doing this (see Process Notes for this journey, below,) I figured that this option at least allowed me to do some hands on work by creating the actual hologram projector out of plastic. While I am not entirely confident with technology, I am confident in my crafting abilities. Worst case scenario, I would make a hologram out of image rather than a video (thankfully it did not come to this.)

The Brillo boxes have gone through so many changes already, I felt as though making my 3D model into a hologram would intensify the removal of its original context as a consumer product, and its later context as an art piece, making it so steeped with hidden and distorted narratives that its presence as a hologram is a statement itself. The hologram is completely removed from its original surrounding context of a kitchen or an art gallery, and so its purpose and history is completely lost to a typical viewer who may not be informed on this specific topic. Furthermore, as a 3D model, the Brillo Soap Pad Boxes are removed from their setting in a gallery, and as a hologram, the Brillo Soap Pad Boxes are removed from their interactive digital space and physically brought into the world of the viewer. The viewer is then faced with this tiny, broken looking model right in front of them, and they are forced to try to understand what they are looking at and how it can possibly be important.

This got me thinking about a lecture from a few weeks back in which it was said that producing copies and displacing context has the potential to have social and ethical implications. In my case, the ethical implications are very apparent to me. Most of this issue I have already addressed in Module 2, and so at this point, taking this historical object and displacing it further only adds to the already existing ethical implications, yet the extremity may help a confused viewer acknowledge this reality. This idea of ethical implications in regards to holograms has been rather relevant in popular culture as of recent, as there has been a fad of bringing deceased musicians “back to life” through the use of holograms on stage. Discourse surrounds this issue as some people think it is tasteless and improper to seemingly “revive” a deceased musician who cannot consent to the performance. This was discussed fairly recently when a projection of Prince was used at the latest Super Bowl half time performance because he was presented alongside Justin Timberlake, someone that Prince was known to have dislike. Therefore, certain types of holograms do have the potential to cause harm and cross ethical and societal boundries.

As with most forms of reproduction, holograms may present some issues to historians in the future. Failure to represent an object in its proper visual form, or in the proper location or context can have detrimental effects. This has been seen with the reproduction of the Triumphal Arch from Palmyra. As Kamash explains in the article ‘Postcard to Palmyra’: bringing the public into debates over post-conflict reconstruction in the Middle East, “the unfaithful reproduction of an ancient landmark that was not displayed in its home country nor with a proper, informative context proved to be emotionally detrimental to the people of the Middle East AND other viewers who realized the problematic reality of the 3D reconstruction.”

Authenticity in historical artefacts are highly valued because they are tied to the historical narratives it represents. Part of Palmyra’s history is that the ruins were destroyed, and some felt as though that reality was taken away by the attempt at a reproduction. A similar comparison can be drawn to the many reproductions of Brillo boxes. However the scope of those who may have been negatively affected is smaller and perhaps even non-existent today as the Brillo boxes remain as an icon of Andy Warhol’s work, and the Brillo Company itself still remains active and successful today. One could even argue that Warhol’s appropriation had a positive impact on Brillo as his work promoted the company and made them visible in the art and culture world. Either way, it is certain that such a simple object has made a large impact in every form that it has taken.

Process Notes – Building a Hologram Projector

Once I decided on what I actually wanted to produce for this module, I starting making the plastic hologram projector that I would need in order to create a hologram. I figured that making this first was the best course of action because it would allow me to test it out with pre-existing hologram videos on YouTube, and allow me to ensure that it works before I start making my own hologram video. I put my crafting and DIY skills to test and scavenged an old CD case to cut up and use for this project. I followed the instructions set out on this website -> https://makerbus.blog/2018/01/19/building-a-diy-smartphone-hologram-projector-is-it-as-cool-as-the-internet-makes-it-look/ . The tutorial was easy follow and the overall task is quite simple. I opted to use CD case for the plastic instead of the thick, industrial grade plastic that was used in the tutorial because the CD case was easily available to me, and I had the time to spend cutting it.

I first created a paper template of a trapezoid that measured 1cm on the top, 4.5 cm on the sides, and 6 cm along the bottom. I then taped the template onto the CD case plastic and traced around it in pen so that I had an outline to follow when cutting. I laid out the templates so that each sides were touching in order to maximize the efficiency of my cutting.

The plastic was, in no doubt, difficult to cut. I sliced along the lines multiple times with an X-acto knife, applying as much force as I could so that each slice would slowly dig further into the plastic. Once I decided that I had cut into the plastic deep enough, I lined the cutting edge along the side of the table and used pliers to carefully break plastic along the straight edge. I have never cut thick plastic or glass before, but I knew that theoretically, this was the best way to do it. Most cuts and breaks came out fairly well, although I did have some corner piece casualties. Luckily these were the top corners, and it would not affect the overall projection. I then sanded down the edges so that they were not so jagged and sharp, and I carefully tapped the pieces together to form an inverted pyramid. I was especially careful with the tape as I did not want dirty tape obscuring the view of the hologram.

I tested out the hologram projector with some videos on YouTube and it worked perfectly! It was definitely mesmerising to watch. I discovered that the best way to view the hologram is by being in a dark room and turning the phone brightness all the way up.

Creating a Hologram Video

This was the part of the project I was dreading, as I had no idea of how to go about it at first. All I knew was that I somehow needed to get a synchronized, moving video of my 3D model. I had no idea how to render my model into a video at first, and no amount of googling really helped. All of the articles that came up provided instructions on how to make a video into a 3D model…so it was not quite what I wanted. I looked to Sketchfab to see if there were any applications available through there, and there were none that I could find. I figured that my next plan would be to screen record myself manually manipulating my Sketchfab model, and using that video file.

In order to do this, I had to figure out how to screen record (something so simple and yet I had no idea how to do it.) After some googling I found out that a screen recording application comes already installed on Windows 10 devices, and works through Xbox Live. All I had to do to bring it up was hit the windows button + the “G” key at the same time. After hitting one button, I was then set to record. After stopping the recording, the video would save automatically, and was accessed through This PC > Videos > Captures. To get my 3D model video, I went onto SketchFab and made the viewer full screen, and recorded myself manually spinning my model to reveal all sides and angles. While crude and somewhat simplistic, I think it worked quite well and the cursor is only slightly visible but not overly distracting.

The second portion of this endeavour required me to reflect the video four ways and have them all play consecutively. While researching how to do this I discovered this amazing tutorial that teaches you how to do this in POWERPOINT.

Link to Tutorial —> https://nutsandboltsspeedtraining.com/powerpoint-tutorials/hologram-video-powerpoint/

This was fantastic as it allowed me to do everything I needed, in an application that I am already very familiar with, therefore I would not have to download new software and learn a new editing interface.

The tutorial is quite straightforward and easy to follow, and I only had difficulties with the step that teaches you how to sync the videos. After some fiddling around I got that hang of it. I also used a triangle shape as a guide in order to ensure that the videos are positioned the same distance away from the center point. I would align the triangle with the X cross section guide and align the bottom of the videos with the straight edge of the triangle (this can be seen in the images linked in the Object Files).

In order to save the video, I needed to export the file as an MP4 video file. I saved the video in a low quality as it was intended to be viewed on a phone and because the synced the videos did not play smoothly while on a high resolution.

Once finalized, I sent to video to myself so that I could open it on my phone and VOILA! It worked! It was rather tiny (as the boxes could not fit any more into the frame) but it worked. I did notice, however, that it was not as easy to view as the YouTube examples were. This was because the background was grey, and not completely black, because of the default Sketchfab background. I hoped that a grey background would not be a problem but a black background turned out to be necessary for optimal viewing.

I figured out how to change the background in Sketchfab by going into “3D Settings” and changing the background colour to black. After I did this, I recorded a new video and repeated the entire video making process. My final video turned out WAY better and my tiny Brillo Soap Pad Boxes can now be viewed spinning around in virtual space.

~o0o~

Kamash, Zena 2017. ‘Postcard to Palmyra’: bringing the public into debates over post-conflict reconstruction in the Middle East. World Archaeology https://doi.org/10.1080/00438243.2017.1406399

Latour, Bruno, and A. Lowe. “The Migration of the Aura – or How to Explore the Original Through Its Facsimiles”, In. T. Bartscherer and R. Coover (editors) Switching Codes. Thinking Through Digital Technology in the Humanities and the Arts, University of Chicago Press pp. 275-297, 2011.

Maxwell, M. 2017 Power is in the Process: The ACCORD project, Internet Archaeology 44. https://doi.org/10.11141/ia.44.10

small acts of disruption in archaeological publishing

small acts of disruption in archaeological publishing

Last month I presented at the Computer Applications in Archaeology Conference in Tübingen. I was in #s1 (full TAGS archive here) on ‘creative disruption’ in digital archaeology. Below, my slides and the speaking notes from my presentation.

slides: http://shawngraham.github.io/presentations/caa.html#/

1.1. first of all – see Katherine Cook’s Twitter Conference Paper because it is a much better discussion than anything I will do here this morning.

1.2. anything I say must be taken with a grain (or more) of salt. White guy on the internet – can get away with a lot that isn’t possible/permitted to folks who don’t look like me. So folks who look like me have to assume the risk so that others can flourish

1.3. A small experiment in failing gloriously in public – i want to put my publishing projects into a framework of information ethics & sensory archaeology.
– ABM: simple rules, complex results;
– small change: unpredictable results:

– complex systems teach us that small changes can lead to startling emergent effects
– i want to think about some small things we can do that disrupt
– the first small thing is to realize that ethical considerations have to be front and centre with digital archae – see the work of Meghan Dennis!

2.  – Allison Parish, poet & programmer at NYU: “a computer program is a way of projecting power. That’s the point of a computer program, to make a decision and then have it happen millions of times. That’s the real ethical dimension of this for me.

3. decisions taken in a digital medium, given the nature of computation (whose fundamental action is to copy), get multiplied in their effects. Hence, the choices, when there is a choice to be made (as there always is), are a force multiplier for what we think is important.

4. start from first principles:

  • fundamental action of computer: to copy
  • fundamental result of copying: connection
  • fundamental consequence of connection: extended sensorium
  • digital archaeology is an extended kind of digital kinaesthetia, we go intothe flow

5. let’s talk about the things of digital:

• Luciano Floridi: treats everything that exists as informational objects or processes (including bio and other entities, right into databases, agents, etc)
• everything that exists, exists in relation to everything else, with at least some minimum worth. Thus anything that destroys or diminishes data is entropy or morally evil
• ‘Information ethics describes a moral universe [an infosphere] in which not only is no being alone, but every being is indeed morally related to other beings, because in their well-being is connected the welfare of the whole system. [journals] are systems that affect larger systems with their actions, affecting themselves as well, since other systems are procedurally and informationally related to them… Information ethics considers moral actions an information process’. (Sicart discussing Floridi, video game ethics 130). He said ‘agents’; I said ‘journals’
• consider: a paywall is an immoral act because it promotes entropy, it diminishes informational entities
• journals, as we know and love them today fundamentally prevent connection; connection is a kind of sensation (especially digitally)

6. hamilakis 2013 – 415 – argues that aesthetics + politics share same ontological ground: the distribution of the sensible – what is allowed to be sensed + experienced + what is not, what is deemed appropriate or permissible to be sensorially appreciated + embodied and by whom – consensus that is established (imposed or tacitly accepted) sensorial order dissensus, the challenge to that order by pushing new + heterodox sensorial regime

7. to stop entropy, we need to restore sensation, that digital archaeological kinaesthesia of distant knowing

hamilakis talks not of senses but of a sensorial field that returns affectivity to our work – “sensoriality + affectivity also enable + invite a radically different approach to the presentation of the archaeological work, be it in scholarly publications, popular authors, or museum displays, thus creating affective instances + environments for diverse publics” h book 20

this is where my projects come into it. I think. You’ll tell me if I’m wrong, eh? 😉

8. ‘epoiesen’ – made – implies sensuous engagement with the past. ‘epoiesen’ on vases: what games were these people playing/ what did ‘epoiesen’ imply for them? about the human body, about innovations of depiction of human form on a medium that traveled – a ceramic social network

9. the first small act of disruption: a focus on the affectivity of digital or other creative work. a focus on process, and design, and valuing subjectivity

10. another small act: …which also ties to video game ethics: games, as the native art form to the digital age, are only ethical if the choices within are meaningful, consequential… thus publishing in Epoiesen also has to give the author a meaningful choice. here, in terms of licensing. author led. form led (text, photos, art, interactives). yes this is harder for me, but so what?

another small act: futureproofing. responsible to the digital entity, don’t lock in scholarship in proprietary formats. reproducibility, replicability guiding poles

11. collaborative reading – hypothesis

12. another small act: reframing peer review. not about quality assurance. not about guarding the borders. but rather about creating new webs of relationships. new conservations. publishing as a starting point, not a finish line. own names. DOIS to recognize the value of the labour, for to fit in the other games.

13. ODATE – some more small acts. Now, Hamilakis points out H book 9 – archaeology a device of modernity that relies on sense of autonomous and disembodied vision – on other hand, that attitude undermined by intensely physical, embodied interaction with things and environments. This is the same idea that Caraher points to in his ‘slow’ archaeology. digital archaeology is slow. (at least, the way I do it)

14. ODATE is a digital archaeology textbook environment that sits in the same sensuous framework as epoiesen. It comes with its own linux-based computer (dhbox.org). Digital archaeology – to learn it, to challenge it, to dispel the magic of Apple’s training us to expect ‘it just works’ – needs us to open the hood. no disembodied distance from the work of the machine. There is a sense of flow that comes working with data and computation that is every bit as sensuous and embodied as ‘dirt’ archaeology.

15. ODATE: digital archaeology is slow. It is organic. Built on github, language of forks and branches is a biological one. ODATE is always going to be wrong and out of date. That is a strength: with github, replicability and reproducibility and cutting and pasting of the bits that work for you . It will grow, there will be multiple copies. There will never be one canonical version of ODATE. That’s a helluva disruption, right there.

16. conclusion – small acts of disruption in archaeological publishing are actually large acts of disruption in how we think about, with, and through digital archaeology. if we think of archaeological publishing in terms of information ethics and archaeological senses, I think there’s one final small act of disruption that flows from that, and it’s this: we all can do this, already.

Tropy – OCR – Notes Workflow?

Tropy – OCR – Notes Workflow?

Here’s the ideal:

  • I take photos of (printed) documents I want with camera phone
  • photos save to google drive
  • Tropy project reads those photos from Google Drive
  • I use Tesseract to OCR those documents
  • The result is added as a note to each document in Tropy

Ideally, that’d all happen automatically. So far, here’s what I can do

  • take photos with the camera
  • find the photos on the camera, upload them to Google Drive
  • in Tropy, I import the photos from that folder
  • in R Studio, I run a batch OCR script that uses Tesseract
  • I manually add the resulting text into the notes field in Tropy

For reference, here’s my batch ocr script:

library("tesseract")
library("magick")
library("magrittr")

# load 'em up
dest <- "/path/to/images"
myfiles <- list.files(path = dest, pattern = "jpg", full.names = TRUE)

# improve the images
# ocr 'em
# write the output to text file

lapply(myfiles, function(i){
text <- image_read(i) %>%
image_resize("3000x") %>%
image_convert(type = 'Grayscale') %>%
image_trim(fuzz = 40) %>%
image_write(format = 'png', density = '300x300') %>%
tesseract::ocr()

outfile <- paste(i,"-ocr.txt",sep="")
cat(text, file=outfile, sep="\n")

})