Home » making (Page 2)

Category Archives: making

Digital Humanist Interview

I was interviewed recently by a student in Leslie Madsen-Brooks graduate seminar in digital history, HannaLore Hein. She posts her impression of the interview on the course website here. It’s always interesting to see what you wrote come through someone else’s filters. Given a recent conversation on twitter, where Mike Widner and others have been discussing the results of text analysis/topic modeling on all of the posted interviews, I thought I’d post here the ur-text from our interview.

1. Did you begin your academic career wanting to be an archeologist? How did your studies as and undergraduate and graduate student lead you to your current career?

I grew up in a family with a very strong interest in history. My brothers and I all teach at various levels in the system, and various aunts & other family members all taught too. It was rather a given… as for archaeology, I was attracted by the materiality of it. I love historical landscapes. Archaeology forces you to confront that history happens in space and place, with and through objects. I like stuff. It was a good fit!

But it all comes down to an opportunity I had a at junior college in Quebec (a CEGEP, as they’re called). I had the opportunity to go to Greece on a study tour, and then to return the following year on an excavation. We worked on a medieval Cistercian abbey, in which was buried a mutilated skeleton. Its treatment was consistent with traditions surrounding vampires, so… it rather hooks you in, an experience like that!

I studied classical archaeology at Wilfrid Laurier University in Waterloo Ontario. I wasn’t very tech minded in those days, though I had had a C-64 growing up, and had programmed my own games in BASIC. I had an exercise in one class in 1995 where we were asked to go onto this “World Wide Web” and create an annotated webography of sites related to the Etruscans. Less than impressed with what I found, I wrote an essay entitled, ‘Why the World Wide Web Will Never Be Useful For Academics’.

My ability to predict the future is thus suspect.

2. Did you always have a knack for technology? Was it something that came easily to you, or something you really had to work at to understand?

I’ve been breaking things since I was 3. I took our family piano apart when I was ten, dropping all of the hammers and rendering a B-Flat completely useless ever since. In the sense that I’ve never been afraid to tinker, to try to understand how things work, then yes, you could say I have a knack for technology. With our C-64, I use to buy magazines that printed out all of the code for games, utilities, and so on. I did a lot of that sort of thing, down in the basement… but I’m always working hard to figure out how things work, and what I might use them for. I get a kick out of helping other people too. I believe in failing gloriously and failing often. It’s only through that cycle – and being willing to share what happened – that we move forward. Recently a project website of mine was hacked. I was gutted – I lost a summer’s worth of work. But on the flip side, it was a great moment to share with the wider community so that it wouldn’t happen to them. I posted about it here: http://electricarchaeology.ca/2012/05/18/how-i-lost-the-crowd-a-tale-of-sorrow-and-hope/ and was really heartened to see the comments of support (and tweets) about what went on.

Too often we only talk about things that worked just like we thought they would. We need to have a discourse about things we try that didn’t – and why.

3. What jobs have you held previously? Were there any skills that you acquired at those positions that you still use today?

My very first job was as a janitor, responsible for the washrooms at a summer resort. Being a janitor taught patience and fortitude in the face of really annoying ….stuff….. More to your question though, I’ve taught at all levels from High School through to Continuing Ed. Until I joined the faculty at Carleton, I worked in the world of for-profit online education. I learned a lot about teaching and tech in those positions. I was a free lance heritage consultant at one point, with a couple of government contracts, where mission creep is a very real issue. Learn to say no, learn to draw the line. I also have a business with my family in what could be considered the heritage agritourism field.  Again though I consider that a form of teaching – understanding customers, understanding students, can be very similar. That’s not to say that students are customers, mind you. Paying for tuition is like paying for ice time- it gets you on the ice, I’ll coach you, but you don’t necessarily get to hoist the Stanley Cup.

4. How advanced is your knowledge of computer science and programing? Is that a major component of your job?

I’m always reading, always learning. Talk to the comp.sci folks. Keeping up with what’s going on, and trying to identify which skills are the ones I need. There’s a lot to recommend just playing and tinkering though, in terms of teaching. When you are formally taught something, you tend to internalize that particular mode of doing whatever it is. I’m sure there are probably more effective ways of learning the skills I need, but this is what seems to work for me. I’ve heard of people getting credit towards tenure for ‘learning python’ or what have you, so that’s encouraging. Works like The Programming Historian are a fantastic resource, and I’m continually astounded by what other folks can do. I’m really a bit of a fraud. First day in the department, I couldn’t find the on switch for the Macs…. (I’m a pc guy).

5. What is your favorite form of digital communication? (Blogs, Twitter, etc.) What form do you think is most respected in the field? What form is the most “academically accepted?”

I have worked hard on my blog, from 2006 onwards, to make it a useful form of academic output for me. I thank Alan Liu and other participants at the 1st Nebraska Digital Humanities Workshop (were I’d been invited to present) for pushing me to blog. Once I started giving it away on my blog, I started getting traction in academia (that I wasn’t getting as a Romanist). A careful, thoughtful blog is a sinequanon for the digital humanist, as is a twitter account. I don’t care much for Facebook or Google +. In terms of ‘academically accepted’, I can show you structural reasons why blogs matter in terms of speaking beyond and to the academy. Someone has to generate the content on the internet, right? Experiments like the Journal of Digital Humanities and things like the LSE Impact Blog are slowly securing the short-form quick-publish genre as an accepted format of scholarly output. Blogging is platform, not genre. We shouldn’t confuse the two. In some senses, the journal article or monography is the last stage of the process, an archive rather than a picture of developing scholarly output. That’s going to be the biggest change.

6. How do you balance your career/projects between the digital and traditional academic worlds?

Happily, I’m one of the first people in Canada to have ‘Digital Humanities’ as my job title, so I’m making it up as I go along.

7. I noticed on your blog that you cite extensively. Is that common practice among digital humanists?

Blogging as a platform has nothing to say about citations. I cite, because I want to give credit and to show where my original thought begins. It’s pretty common on academic blogs. Linking is a form of citation too.

If there is any other information that you think is pertinent to the field of digital humanities, especially in relation to public history, that I did not touch upon in my questions, I would love to hear your thoughts.

All digital history is public history, far as I’m concerned. Working online allows an interested public to become part of the project. Precious few have read my book; about a hundred people a day take a look at my blog.

123D Catch iPhone app

I’ve just been playing with the 123D catch iphone app. Aside from some annoying login business, it’s actually quite a nice little app for creating 3d volumetric models. I have a little toy car in my office. I opened the app, took 15 pictures of the car sitting on my desk, and sent it off for processing. The resulting model is viewable here. Not too bad for 5 minutes of futzing about with the iphone.

Since I’m interested in 3d models as fodder for augmented reality, this is a great workflow. No fooling around trying to reduce model & mesh size to fit into the AR pipeline. By making the model with the iphone’s camera in the first place, the resulting model files are sufficiently small enough (more or less; more complicated objects will probably need a bit of massaging) to swap into my Junaio xml and pumped out to my channel with little difficulty.

 

Stranger in These Parts – An Interactive Fiction for Teaching

One of the things I want my students to engage with in my ‘cities and countryside in antiquity’ class is the idea that in antiquity, one navigates space not with a two dimensional top-down mental map, but rather as a series of what-comes-next. That navigating required socializing, asking directions, paying attention to landmarks.  I’m in part inspired by R. Ling’s 1990 article, Stranger in Town, and in part by Elijah Meek’s and Walter Scheidel’s ORBIS project. Elijah and I have in fact been talking about marrying a text-based interface for Orbis for this very reason.

But I’m also interested in gaming, simulation and storytelling for their own merits, so I’m trying my hand at an interactive fiction written using Inform 7  along the same lines. Instead of interfacing directly with the model represented in Orbis, I’ve queried Orbis for travel data, and have begun to write a bit of a narrative around it. (One could’ve composed this in Latin, in which case you’d get not just the spatial ideas, but also the language learning too!).

Anyway, I present to you version 0.1, a beta (perhaps ‘alpha’ is more appropriate) for ‘Stranger in These Parts‘, by Shawn Graham. I’m using Playfic to host it. I’d be happy to hear your thoughts. (And a hint to get going: check to see what you’ve got on you, and ‘ask Eros’ about things…)

Obviously, some things are lacking at the moment. I’ll want the player to be able to select different modes of transport sometimes (and thus to skip settings). There’s a point system, but it’s meant more to signal to the students that there is more to find. Depending on which NPCs a student talks with, different kinds of routes should become available. Time passes within the IF, and so night time matters – no travel then.  As far as I know, there’s no such thing as multi-player IF or head-to-head IF, but that’d be fun if it were possible: can you get to Pompeii before your classmates?

In terms of the learning exercise, the students will play through this, and then explore the same territory in Orbis. In the light of their readings and experiences, I’ll be asking them to reflect on the Roman experience of space. Once we’ve done that, now being suitably disabused of 21st century views of how to navigate space, we’ll start looking at the landscape archaeology of other ancient cultures.

That’s the plan, at any rate.

 

How to make an augmented reality pop-up book

We made an augmented reality pop-up book in my first year seminar last spring. Perhaps you’d like to make your own?

1. Go to Junaio and register as a developer.

2. Get some server space that meets Junaio’s requirements.

3. On the right hand side of the screen, when you’re logged into Junaio, you can find out what your API key is by clicking on ‘show my api’. You’ll need this info.

4. Create a channel (which you do once you’re logged in over at Junaio; click on ‘new channel’ on the right hand side of the screen). You will need to fill in some information. For the purposes of creating a pop-up book, you select a ‘GLUE channel’. The ‘callback’ is the URL of the folder on your server where you’re going to put all of your assets. Make this ‘YOURDOMAIN/html/index.php. Don’t worry that the folder ‘html’ or the file ‘index.php’ doesn’t exist yet. You’ll create those in step 6.

Now the fun begins. I’m going to assume for the moment that you’ve got some 3d models available that you’ll be using to augment the printed page. These need to be in .obj format, and they need to be smaller than >750 kb. I’ve used 123D Catch to make my models, and then Meshlab to reduce the size of the models (Quadratic Edge Collapse is the filter I use for that). Make sure you keep a copy of the original texture somewhere so that it doesn’t get reduced when you reduce polygons.

5. Create your tracking images. You use Junaio’s tool to do this. At the bottom of that page, where it says, ‘how many patterns do you want to generate?’, select however many images you’re going to augment. PNGs should work; make sure that they are around 100 kb or smaller. If your images don’t load into the tool – if it seems to get stuck in a neverending loading cycle – your images may be too large or in the wrong format.  Once this process is done, you’ll download a file called ‘tracking.xml_enc. Keep this.

6. Now, at this point, things are a bit different than they were in May, as Junaio changed their API somewhat. The old code still works, and that’s what I’m working with here. Here’s the original tutorial from Junaio. Download the ‘Getting Started’ php package. Unzip it, and put its contents into your server space.

7. navigate to config/config.php, open that, and put your Junaio Developer key in there.

8. I created a folder called ‘resources’; this is where you’re going to put your assets. Put the tracking_xml.enc in there.

9. Navigate to src/search.php. Open this. This is the file that does all the magic, that ties your tracking images to your resources. Here’s mine, for our book. Note how there’s a mixture of movies and models in there:

<?php /**/ ?><?php

/**
* @copyright  Copyright 2010 metaio GmbH. All rights reserved.
* @link       http://www.metaio.com
* @author     Frank Angermann
**/

require_once ‘../library/poibuilder.class.php’;

/**
* When the channel is being viewed, a poi request will be sent
* $_GET['l']…(optional) Position of the user when requesting poi search information
* $_GET['o']…(optional) Orientation of the user when requesting poi search information
* $_GET['p']…(optional) perimeter of the data requested in meters.
* $_GET['uid']… Unique user identifier
* $_GET['m']… (optional) limit of to be returned values
* $_GET['page']…page number of result. e.g. m = 10: page 1: 1-10; page 2: 11-20, e.g.
**/

//use the poiBuilder class   — this might not be right, for
$jPoiBuilder = new JunaioBuilder();

//create the xml start
$jPoiBuilder->start(“http:YOURDOMAIN/resources/tracking.xml_enc”);

//bookcover-trackingimage1
$poi = new SinglePOI();
$poi = $jPoiBuilder->createBasicGluePOI(
“Movie Texture”,    //name
“0,0,0″, //position
http://dev.junaio.com/publisherDownload/tutorial/movieplane3_2.md2_enc&#8221;, //model
http://YOURDOMAIN/resources/movie-reel.mp4&#8243;, //texture
95, //scale
1, //cosID
“Universal Newspaper Newsreel November 6, 1933, uploaded to youtube by publicdomain101″, //description
“”, //thumbnail
“movie1″, //id
“1.57,1.57,3.14″, //orientation
array(), //animation specification
“click”

);

//deliver the POI
$jPoiBuilder->outputPOI($poi);

//trackingimage2 pg 9 xxi-a:55 -
$poi = new SinglePOI();
$poi = $jPoiBuilder->createBasicGluePOI(
“Movie Texture”,    //name
“0,0,0″, //position
http://dev.junaio.com/publisherDownload/tutorial/movieplane3_2.md2_enc&#8221;, //model
http://YOURDOMAIN/resources/edited-museum-1.mp4&#8243;, //texture
90, //scale
2, //cosID
“Faces of Mexico – Museo Nacional de Antropologia”, //description
“”, //thumbnail
“movie2″, //id
“1.57,1.57,3.14″, //orientation
array(), //animation specification
“click”

);
$cust = new Customization();
$cust->setName(“Website”);
$cust->setNodeID(“click”);
$cust->setType(“url”);
$cust->setValue(“http://www.youtube.com/watch?v=Dfc257xI0eA&#8221;);

$poi->addCustomization($cust);
//deliver the POI
$jPoiBuilder->outputPOI($poi);

//trackingimage3 pg 11 xxi-a:347 bighead -3d model
$poi = new SinglePOI();
$poi = $jPoiBuilder->createBasicGluePOI (
“Effigy”, //name
“0,0,0″,  //translation
http://YOURDOMAIN/resources/id3-big-head.zip&#8221;, //mainresource (model)
http://YOURDOMAIN/resources/big-head-statue_tex_0.jpg&#8221;, //resource (texture)
5, //scale
3, //cos ID -> which reference the POI is assigned to
“XXI-A:51″, //description
“”, //thumbnail
“Zapotec Effigy”, //id
“0,3.14,1.57″ //orientation
);

//deliver the POI
$jPoiBuilder->outputPOI($poi);

//trackingimage4 pg13 xxi-a:51 from shaft tomb, model
$poi = new SinglePOI();
$poi = $jPoiBuilder->createBasicGluePOI (
“Shaft Tomb Figurine”, //name
“0,0,0″,  //translation
http://YOURDOMAIN/resources/id4-shaft-grave.zip&#8221;, //mainresource (model)
http://YOURDOMAIN/resources/april25-statue.jpg&#8221;, //resource (texture)
5, //scale
4, //cos ID -> which reference the POI is assigned to
“XXI-A:51″, //description
“”, //thumbnail
“Shaft Tomb Figurine”, //id
“0,0,3.14″ //orientation
);
//echo the POI
$jPoiBuilder->outputPOI($poi);

//trackingimage5 pg15 xxi-a:28
$poi = new SinglePOI();
$poi = $jPoiBuilder->createBasicGluePOI(
“Movie Texture”,    //name
“0,0,0″, //position
http://dev.junaio.com/publisherDownload/tutorial/movieplane4_3.md2_enc&#8221;, //model
http://YOURDOMAIN/resources/pg15-movie.mp4&#8243;, //texture
90, //scale
5, //cosID
“Showing the finished model in Meshlab”, //description
“”, //thumbnail
“movie3″, //id
“1.57,1.57,3.14″, //orientation
array(), //animation specification
“click”

);

//deliver the POI
$jPoiBuilder->outputPOI($poi);

//trackingimage6 pg17 xxi-a:139 man with club movie
$poi = new SinglePOI();
$poi = $jPoiBuilder->createBasicGluePOI(
“Movie Texture”,    //name
“0,0,0″, //position
http://dev.junaio.com/publisherDownload/tutorial/movieplane4_3.md2_enc&#8221;, //model
http://YOURDOMAIN/resources/archaeologicalsites-1.mp4&#8243;, //texture
90, //scale
6, //cosID
“”, //description
“”, //thumbnail
“movie4″, //id
“1.57,1.57,3.14″, //orientation
array(), //animation specification
“click”

);

//deliver the POI
$jPoiBuilder->outputPOI($poi);

//trackingimage7 pg19 xxi-a:27 fat dog model
$poi = new SinglePOI();
$poi = $jPoiBuilder->createBasicGluePOI (
“Fat Dog”, //name
“0,0,0″,  //translation
http://YOURDOMAIN/resources/id5-dog-model.zip&#8221;, //mainresource (model)
http://YOURDOMAIN/resources/april25-dog_tex_0-small.png&#8221;, //resource (texture)
5, //scale
7, //cos ID -> which reference the POI is assigned to
“XXI-A:27, Created using 123D Catch”, //description
“”, //thumbnail
“Fat Dog”, //id
“0,0,3.14″ //orientation
);

//deliver the POI
$jPoiBuilder->outputPOI($poi);

//trackingimage8 pg21 xxi-a:373 ring of people – model
$poi = new SinglePOI();
$poi = $jPoiBuilder->createBasicGluePOI (
“Ring of People”, //name
“0,0,0″,  //translation
http://YOURDOMAIN/resources/ring.zip&#8221;, //mainresource (model)
http://YOURDOMAIN/resources/ring-2_tex_0.jpg&#8221;, //resource (texture)
5, //scale
8, //cos ID -> which reference the POI is assigned to
“XXI-A:29, Old woman seated with head on knee. Created using 123D Catch”, //description
“”, //thumbnail
“Ring of People”, //id
“1.57,0,3.14″ //orientation
);

//deliver the POI
$jPoiBuilder->outputPOI($poi);

//trackingimage 9 pg 23 xxi-a:29 old woman with head on knee.
$poi = new SinglePOI();
$poi = $jPoiBuilder->createBasicGluePOI (
“Old Woman”, //name
“0,0,0″,  //translation
http://YOURDOMAIN/resources/statue2.zip&#8221;, //mainresource (model)
http://YOURDOMAIN/resources/Statue_try_1_tex_0.png&#8221;, //resource (texture)
5, //scale
9, //cos ID -> which reference the POI is assigned to
“XXI-A:29, Old woman seated with head on knee. Created using 123D Catch”, //description
“”, //thumbnail
“Old Woman”, //id
“0,3.14,3.14″ //orientation
);

//deliver the POI
$jPoiBuilder->outputPOI($poi);

//trackingimage 10 pg29 Anything but textbook movie
$poi = new SinglePOI();
$poi = $jPoiBuilder->createBasicGluePOI(
“Movie Texture”,    //name
“0,0,0″, //position
http://dev.junaio.com/publisherDownload/tutorial/movieplane3_2.md2_enc&#8221;, //model
http://YOURDOMAIN/resources/carleton-promo.mp4&#8243;, //texture
100, //scale
10, //cosID
“Carleton University – Anything but textbook!”, //description
“”, //thumbnail
“movie5″, //id
“1.57,1.57,3.14″, //orientation
array(), //animation specification
“click”

);
$cust = new Customization();
$cust->setName(“Website”);
$cust->setNodeID(“click”);
$cust->setType(“url”);
$cust->setValue(“http://carleton.ca&#8221;);

$poi->addCustomization($cust);

//deliver the POI
$jPoiBuilder->outputPOI($poi);

///end of tracking images
$jPoiBuilder->end();

exit;

And that does it, basically. Each element, each augment, is called after ‘//deliver the POI’. After ‘createBasicGluePOI’ you get the parameters. You provide the direct URL to your ‘mainresource’ when it’s a 3d model. In the next line, the direct URL to the texture. You can make it bigger or smaller by adjusting ‘Scale’; cos ID is next. Make sure that these correspond with the images you uploaded when you created the tracking file. Otherwise you can get the wrong model or movie playing in the wrong spot. The ‘description’ is what will appear on the smartphone if somebody touches the screen at this point. ‘Orientation’ is a bugger to sort out, as it is in radians. So take your compass, and divide by 3.14 to figure it out. I believe that 0,0,0 would put your model flat against your tracking image, but I could be wrong.

(If you’ll notice, some of the POIS are movies. To display these, you map a ‘movie plane’ over your tracking image, and then play the movie on top of this. Use Junaio’s movie plane – the URL is http://dev.junaio.com/publisherDownload/tutorial/movieplane3_2.md2_enc and put that in the line after ‘translation’. The next line will be the direct URL to your movie. These need to be packaged a bit for iphone/android delivery. I used Handbrake to do this, with its presets. Load movie, export for iphone, and voila.)

Regarding packaging your models- you have to zip together the texture, the obj file, and the .mtl file that meshlab creates.  An MTL file looks like this inside:

#
# Wavefront material file
# Converted by Meshlab Group
#

newmtl material_0
Ka 0.200000 0.200000 0.200000
Kd 1.000000 1.000000 1.000000
Ks 1.000000 1.000000 1.000000
Tr 1.000000
illum 2
Ns 0.000000
map_Kd big-head-statue_tex_0.jpg

newmtl material_1
Ka 0.200000 0.200000 0.200000
Kd 0.501961 0.501961 0.501961
Ks 1.000000 1.000000 1.000000
Tr 1.000000
illum 2
Ns 0.000000

Make sure the named  texture file (here, ‘big-head-statue-tex_0.jpg’) in this file is the same as the one in the zip file, and the same as the one called in the search.php. I confess a big of ignorance here: I found that I also had to have the texture file in the main resource folder, unzipped. This is the one the search.php points to; but if you don’t also have it in the zipped file, you get a 3d object without texture. I do not know why this is.

10. Go back to ‘my channels’ on Junaio. Click ‘validate’ beside your channel. This will tell you if everything is ok. Note – sometimes things come back as an error when they aren’t really a problem. The only way to know the difference is to click on ‘get QR code’ and then go to step 11:

11. With your smartphone, having already downloaded the Juanio app, click ‘scan’ and scan the QR code for your channel. Your content – if all is well – will load. Aim your phone at one of your tracking images, and your augmentation should appear. Voila!

So that should do it. Good luck, and enjoy. Keep in mind that with Junaio’s new api, a lot of this has been streamlined. I’ll get around to learning that, soon.

How I Lost the Crowd: A Tale of Sorrow and Hope

Yesterday, my HeritageCrowd project website was annihilated. Gone. Kaput. Destroyed. Joined the choir.

It is a dead parrot.

This is what I think happened, what I now know and need to learn, and what I think the wider digital humanities community needs to think about/teach each other.

HeritageCrowd was (may be again, if I can salvage from the wreckage) a project that tried to encourage the crowdsourcing of local cultural heritage knowledge for a community that does not have particularly good internet access or penetration. It was built on the Ushahidi platform, which allows folks to participate via cell phone text messages. We even had it set up so that a person could leave a voice message and software would automatically transcribe the message and submit it via email. It worked fairly well, and we wrote it up for Writing History in the Digital Age. I was looking forward to working more on it this summer.

Problem #1: Poor record keeping of the process of getting things intalled, and the decisions taken.

Now, originally, we were using the Crowdmap hosted version of Ushahidi, so we wouldn’t have to worry about things like security, updates, servers, that sort of thing. But… I wanted to customize the look, move the blocks around, and make some other cosmetic changes so that Ushahidi’s genesis in crisis-mapping wouldn’t be quite as evident. When you repurpose software meant for one domain to another, it’s the sort of thing you do. So, I set up a new domain, got some server space, downloaded Ushahidi and installed it. The installation tested my server skills. Unlike setting up WordPress or Omeka (which I’ve done several times), Ushahidi requires the concommitant set up of ‘Kohana‘. This was not easy. There are many levels of tacit knowledge in computing and especially in web-based applications that I, as an outsider, have not yet learned. It takes a lot of trial and error, and sometimes, just dumb luck. I kept poor records of this period – I was working to a tight deadline, and I wanted to just get the damned thing working. Today, I have no idea what I actually did to get Kohana and Ushahidi playing nice with one another. I think it actually boiled down to file structure.

(It’s funny to think of myself as an outsider, when it comes to all this digital work. I am after all an official, card-carrying ‘digital humanist’. It’s worth remembering what that label actually means. At least one part of it is ‘humanist’. I spent well over a decade learning how to do that part. I’ve only been at the ‘digital’ part since about 2005… and my experience of ‘digital’, at least initially, is in social networks and simulation – things that don’t actually require me to mount materials on the internet. We forget sometimes that there’s more to the digital humanities than building flashy internet-based digital tools. Archaeologists have been using digital methods in their research since the 1960s; Classicists at least that long – and of course Father Busa).

Problem #2: Computers talk to other computers, and persuade them to do things.

I forget where I read it now (it was probably Stephen Ramsay or Geoffrey Rockwell), but digital humanists need to consider artificial intelligence. We do a humanities not just of other humans, but of humans’ creations that engage in their own goal-directed behaviours. As some one who has built a number of agent based models and simulations, I suppose I shouldn’t have forgotten this. But on the internet, there is a whole netherworld of computers corrupting and enslaving each other, for all sorts of purposes.

HeritageCrowd was destroyed so that one computer could persuade another computer to send spam to gullible humans with erectile dsyfunction.

It seems that Ushahidi was vulnerable to ‘Cross-site Request Forgery‘ and ‘Cross-site Scripting‘ attacks. I think what happened to HeritageCrowd was an instance of persistent XSS:

The persistent (or stored) XSS vulnerability is a more devastating variant of a cross-site scripting flaw: it occurs when the data provided by the attacker is saved by the server, and then permanently displayed on “normal” pages returned to other users in the course of regular browsing, without proper HTML escaping.

When I examine every php file on the site, there are all sorts of injected base64 code. So this is what killed my site. Once my site started flooding spam all over the place, the internet’s immune systems (my host’s own, and others), shut it all down. Now, I could just clean everything out, and reinstall, but the more devastating issue: it appears my sql database is gone. Destroyed. Erased. No longer present. I’ve asked my host to help confirm that, because at this point, I’m way out of my league. Hey all you lone digital humanists: how often does your computing services department help you out in this regard? Find someone at your institution who can handle this kind of thing. We can’t wear every hat. I’ve been a one-man band for so long, I’m a bit like the guy in Shawshank Redemption who asks his boss at the supermarket for permission to go to the bathroom. Old habits are hard to break.

Problem #3: Security Warnings

There are many Ushahidi installations all over the world, and they deal with some pretty sensitive stuff. Security is therefore something Ushahidi takes seriously. I should’ve too. I was not subscribed to the Ushahidi Security Advisories. The hardest pill to swallow is when you know it’s your own damned fault. The warning was there; heed the warnings! Schedule time into every week to keep on top of security. If you’ve got a team, task someone to look after this. I have lots of excuses – it was end of term, things were due, meetings to be held, grades to get in – but it was my responsibility. And I dropped the ball.

Problem #4: Backups

This is the most embarrasing to admit. I did not back things up regularly. I am not ever making that mistake again. Over on Looted Heritage, I have an IFTTT recipe set up that sends every new report to BufferApp, which then tweets it. I’ve also got one that sends every report to Evernote. There are probably more elegant ways to do this. But the worst would be to remind myself to manually download things. That didn’t work the first time. It ain’t gonna work the next.

So what do I do now?

If I can get my database back, I’ll clean everything out and reinstall, and then progress onwards wiser for the experience. If I can’t… well, perhaps that’s the end of HeritageCrowd. It was always an experiment, and as Scott Weingart reminds us,

The best we can do is not as much as we can, but as much as we need. There is a point of diminishing return for data collection; that point at which you can’t measure the coastline fast enough before the tides change it. We as humanists have to become comfortable with incompleteness and imperfection, and trust that in aggregate those data can still tell us something, even if they can’t reveal everything.

The HeritageCrowd project taught me quite a lot about crowdsourcing cultural heritage, about building communities, about the problems, potentials, and perils of data management. Even in its (quite probable) death, I’ve learned some hard lessons. I share them here so that you don’t have to make the same mistakes. Make new ones! Share them! The next time I go to THATCamp, I know what I’ll be proposing. I want a session on the Black Hats, and the dark side of the force. I want to know what the resources are for learning how they work, what I can do to protect myself, and frankly, more about the social and cultural anthropology of their world. Perhaps there is space in the Digital Humanities for that.

PS.

When I discovered what had happened, I tweeted about it. Thank you everyone who responded with help and advice. That’s the final lesson I think, about this episode. Don’t be afraid to share your failures, and ask for help. As Bethany wrote some time ago, we’re at that point where we’re building the new ways of knowing for the future, just like the Lunaticks in the 18th century. Embrace your inner Lunatick:

Those 18th-century Lunaticks weren’t about the really big theories and breakthroughs – instead, their heroic work was to codify knowledge, found professional societies and journals, and build all the enabling infrastructure that benefited a succeeding generation of scholars and scientists.

[...]

if you agree with me that there’s something remarkable about a generation of trained scholars ready to subsume themselves in collaborative endeavors, to do the grunt work, and to step back from the podium into roles only they can play – that is, to become systems-builders for the humanities — then we might also just pause to appreciate and celebrate, and to use “#alt-ac” as a safe place for people to say, “I’m a Lunatick, too.”

Perhaps my role is to fail gloriously & often, so you don’t have to. I’m ok with that.

Mesoamerica in Gatineau: Augmented Reality Museum Catalogue Pop-Up Book

Would you like to take a look at the term project of my first year seminar course in digital antiquity at Carleton University? Now’s your chance!

Last winter, Terence Clark and Matt Betts, curators at the Museum of Civilization in Gatineau Quebec, saw on this blog that we were experimenting with 123D Catch (then called ‘Photofly’) to make volumetric models of objects from digital photographs. Terence and Matt were also experimenting with the same software. They invited us to the museum to select objects from the collection. The students were enchanted with materials from mesoamerica, and our term project was born: what if we used augmented reality to create a pop-up museum catalogue? The students researched the artefacts, designed and produced a catalogue, photographed artefacts, used 123D Catch to turn them into 3d models, Meshlab to clean the models up, and Junaio to do the augmentation. (I helped a bit on the augmentation. But now that I know, roughly, what I’m doing, I think I can teach the next round of students how to do this step for themselves, too).The hardest part was reducing the models to less than 750kb (per the Junaio specs) while retaining something of their visual complexity.

The results were stunning. We owe an enormous debt of gratitude to Drs. Clark and Betts, and the Museum of Civilization for this opportunity. Also, the folks at Junaio were always very quick to respond to cries for help, and we thank them for their patience!

Below, you’ll find the QR code to scan with Junaio, to load the augmentations into your phone. Then, scan the images to reveal the augmentation (you can just point your phone at the screen). Try to focus on a single image at a time.

Also, you may download the pdf of the book, and try it out. (Warning: large download).

Artefact images taken by Jenna & Tessa; courtesy of the Canadian Museum of Civilization

Simple Omeka to Wikitude Hack

I’m working on some projects at the moment, aiming to make augmented reality and cultural heritage discovery easier and gentler for the small scale historical society, student groups, etc: folks with a basic level of web literacy, but no real great level of programming skills.

To that end, here’s something one can do with Omeka, to push items from its database into the Wikitude augmented reality platform.

  1. In Omeka, have the Geolocation plugin installed and working.
  2. Navigate to http://[your omeka site.com]/geolocation/map.kml
  3. You should see the xml structure of your geolocated items.
  4. In a new tab, go to wikitude.me, and sign up for a developer account (it’s free).
  5. Click ‘add new world’.
  6. Click ‘upload KML file’.
  7. Fill in all required fields (you’ll have to create a 32 by 32 pixel icon to serve as a dot-on-the-map, and upload that too).
  8. Under ‘KML/KMZ’ file, click on ‘Enter KML URL’. This will give you a box into which you may paste the URL from #2.
  9. Hit save.

If you’re successful, the next screen will tell you how many points have been uploaded. If, at some later point you’ve added many more items to Omeka, you’ll have to go back to your World in Wikitude and hit save again, to upload the most recent stuff.

Now, with Wikitude on your phone, you might not be able to find your world right away. There’s a solution. If you log back into the Wikitude developer zone, and click on the world you just created, you’ll find a string of letters under ‘developer key’. On your Iphone, go to ‘settings’ , select ‘Wikitude’. Under ‘Developer Settings’, there’s a box for the developer key. Enter that developer key there. Start Wikitude up, refresh the display, and your items from Omeka will be under ‘Around Me’.

…And there you have it. Right now, this just does the basic text descriptions, and the location. By fiddling with the Geolocation plugin code, one might be able to add the other information that Wikitude can display, like images, video, audio, etc.

For a similar approach, but directly from Google Maps, see this video by drmonkeyjcg:

Fantastic PhotoFly: 3d Scanning for the Rest of Us

I’ve been amazed for some time by what can be achieved with LIDAR, a game engine, and a bit of processing power. A few years ago, Digital Urban posted a series of tutorials for getting architectural models from Sketchup or 3d Max into the Oblivion game engine, as a way for exploring built space. I was always blown away by that. The issue I had was in getting the 3d model created in the first place.

Enter PhotoFly, from Autodesk. PhotoFly is currently free, and it works magic. It transforms your computer and digital camera into a 3d scanner. You take a series of overlapping photographs, upload them to the program, and the program sends them to Autodesk for processing. The system works out from the photographs three dimensional points, and uses these to stitch your images into a wire mesh model (with your photos as the overlay). The results are impressive – once you figure out the trick of taking sufficiently redundant photographs to provide the necessary information.

I used a Kodak EasyShare camera, Z612, and tried four different scenes before I finally started to get the hang of it. My first was a ceramic coffee mug with a glossy white finish. The shininess of the mug confused the processor. I then tried a Campbell’s Soup Can (my nod to Mr. Warhol). I put it on a lazy susan, set my camera up, and rotated the lazy susan through 5 degree increments, thinking I would get good coverage. This did not work (which I would’ve known had I watched the tutorial videos, but really, who has time for that?). The reason it did not work is that the algorithms that stitch everything together count on differences in perspective, focal depth, and so on to work out the relative placement of the camera for each shot, and hence the distance between the focus point and overlapping points that can be identified in the shots. At least, I believe that’s the reason. I tried again, moving around the soup can, but this time I didn’t get enough overlap.

My next attempt was to do my office (imagine, scanning an interior space!). I had more success this time, but again my overlap and the sheer clutter in here defeated me. Finally, I put a small toy car (about 5 inches long by 2 inches wide) on a chair, and proceeded to take about 20 photographs of it from every angle, varying the depth and distance. By this point, I was starting to get the hang of it, and it uploaded quite well. The ‘draft’ model came back more or less complete, and I saved it and sent it to youtube:

In the ‘draft’ mode, you can select triangles to clip, provide real-world coordinates and measurements (useful for creating scans of buildings and interior spaces especially) and basically do enough pre-processing that the model looks just about complete. One then changes to either ‘mobile’, ‘standard’, or ‘high’ quality and the model is sent back to Autodesk for more processing. At this point, the model can be exported in a variety of formats, especially CAD formats like DWG. This is where I get very excited. Sketchup Pro for instance can import DWG. And Sketchup can be used to create AR. I could imagine scanning an interior space, sending the resultant model to Sketchup and then into AR, tying the model to a QR code. Since my model can be sized 1:1, it should be possible for instance to scan say a cave-shelter, and then step into it somewhere else (the middle of a playing field, for example). I’m very excited about the possibilities; more on these as I explore.

My final model of the toy car is below. All in all, it took approximately 30 minutes to get to this stage. Obviously, my model has some flaws in it, but for 30 minutes work… not bad.

Problems with the Software

From time to time, the software just mysteriously died during the upload process. Save early, and save often. Also, exporting to youtube was often fraught. One enters the mysterious world of picking the right quality and codec to make it work. Once I selected ‘mobile’ for everything, things seemed to work better.

9/10 stars from the electric archaeologist. This is the most exciting piece of software I’ve played with in ages.

Animoto & teaching

I’m thinking of creating short video clips to introduce different modules & segments for my courses next fall. Animoto’s free offerings would seem to do the trick. I built the following, from odds and sods lying around my computer, as a trailer for one class, just to see how animoto works:

Pretty simple. Select your background. Upload your images. Select some music. Hey presto, you’re done.

Most of those images are public domain, though I can’t for the life of my find the source for the ‘Dark Morris‘ dancers (see the work of Terry Pratchett; I reference Discworld often in my lectures. Just can’t stop myself.) If it’s your image or you know where it comes from, I’d love to give proper attribution for it.

Of Hockey, Sympathetic Magic, and Digital Dirt

We won tickets to see the Ottawa – Tampa Bay game on Saturday night. 100 level. Row B. This is a big deal for a hockey fan, since those are the kind of tickets that are normally not within your average budget. More to the point of this post, it put us right down at ice level, against the glass.

Against the glass!!!

Normally we watch a hockey game on TV, or from up in the nose-bleeds. From way up there, you can see the play develop, the guy out in the open (“pass! pass! pleeeease pass the puck!” we all shout, from our aerie abode), same way as you see it on the tv.

But down at the glass…. ah. It’s a different scene entirely. There is a tangle of legs, bodies, sticks. It is hectic, confusing. It’s fast! From above, everything unfolds slowly… but at the ice surface you really begin to appreciate how fast these guys move. Two men, skating as fast as they can, each one weighing around 200 pounds, slamming into the boards in the race to get the puck. For the entire first period, I’d duck every time they came close. I’d jump in my chair, sympathetic magic at work as I willed the hit, made the pass, launched the puck.

For three wonderful periods, I was on the ice. I was in the game. I was there.

So…. what does this have to do with Play the Past? It has to do with immersion, and the various kinds that may exist or that games might permit. Like sitting at the glass at the hockey game, an immersive world (whether Azeroth or somewhere else) doesn’t have to put me in the game itself; it’s enough to put me in close proximity, and let that sympathetic magic take over. Cloud my senses; remove the omniscient point of view, and let me feel it viscerally. Make me care, and I’ll be quite happy that I don’t actually have my skates on.

Good enough virtuality is what Ed Castronova called it a few years back, when Second Life was at the top of its hype cycle.But we never even began to approach what that might mean. I think perhaps it is time to revisit those worlds, as the ‘productivity plateau’ may be in site.

In an earlier post, Ethan asked, where are the serious games in archaeology? My response is, ‘working on it, boss’.  A few years ago, I was very much enamored of the possibilities that Second Life (and other similar worlds/platforms) could offer for public archaeology. I began working on a virtual excavation, where the metaphors of archaeology could be made real, where the participant could remove contexts, measure features, record the data for him or herself (I drew data in from Open Context; I was using Nabonidus for an in-world recording system).  But I switched institutions, the plug was pulled, and it all vanished into the aether (digital curation of digital artefacts is a very real and pressing concern, though not as discussed as it ought to be). I’m now working on reviving those experiments and implementing them in the Web.Alive environment. It’s part of our Virtual Carleton campus, a platform for distance education and other training situations.

My ur-dig for the digital doppleganger comes from a field experience program at a local high school that I helped direct.  I’m taking the context sheets, the plans, the photographs, and working on the problems of digital representation in the 3d environment. We’ve created contexts and layers that can be removed, measured, and planned. Ideally, we hope to learn from this experience the ways in which we can make immersion work. Can we re-excavate? Can we represent how archaeological knowledge is created? What will participants take away from the experience? If all those questions are answered positively, then what kinds of standards would we need to develop, if we turned this into a platform where we could take *any* excavation and procedurally represent it?  I’m releasing students into it towards the start of next month. We’ve only got a prototype up at the moment, so things are still quite rough.

The other part of immersion that sometimes gets forgotten is the part about, what do people do when they’re there? That’s the sympathetic magic, and maybe it’s the missing ingredient from the earlier hype about Second Life. There was nothing to do. In a world where ‘anything is possible‘, you need rules, boundaries, purpose. We sometimes call it gamification, meaningfication, crowdscaffolding, and roleplaying.  Mix it all together, and I don’t think there’s any reason for a virtual world to not be as exciting, as meaningful, as being there with your nose at the glass when Spezza scores.

Or when you uncover something wonderful in the digital dirt. But that’s a post for the future, when my students return from their virtual field season.

(cross-posted at Play the Past)

Follow

Get every new post delivered to your Inbox.

Join 135 other followers