Category Archives: Creative Communication

Two Different Time Lapse Experiments

Time Lapse Trip from Richmond VA to Tampa FL from Tom Woodward on Vimeo.

This is my first attempt with the GoPro. I think it’s set to one shot every 30 seconds. You can see me fiddling with the settings a few different times if you’re masochistic enough to watch it through. The battery ran out early in the trip and resulted in me using it without the stand. That helps explain the repeated drifting as the USB cord1 pulls it slowly towards the driver’s side. It is interesting to see a 12.5 hr trip condensed down to 4 minutes or so. I may do it on the way back but pointed mostly towards the sky or maybe at the kids.

Knowing where the stops were makes me wonder if something similar would make for a interesting take on Dan Meyer’s original graphing stories.


On the other end of the time lapse spectrum is this attempt to condense one my attempts to fix a photo from the reddit pic request group. This one is kind of amusing to me in that you can see me googling some stuff for a sick child in the middle and finishing up with some posts to reddit and flickr. There is no sound but it’d be pretty easy to narrate if you wanted to make it more instructional.

The screenshots were generated based on this post. It is a copy/paste terminal command that will take a full desktop screenshot every X seconds.

i=1;while [ 1 ];do screencapture -t jpg -x ~/Desktop/screencapture/$i.jpg; let i++;sleep 4; done

Semi Tutorial

In either of the cases above you end up with a fist full of images. It used to be that you could set default input length for still images in FinalCut. I can’t figure out how to do that in FCP X. There are lots of people claiming (and even showing) other ways to bulk change the length of static images once they are in FCP. Several ways didn’t work for me. What did work is …. drag/drop the images into the timeline then . . .


cc licensed ( BY SA ) flickr photo shared by Tom Woodward

Just click yes or change the settings to your preferred set up.


cc licensed ( BY SA ) flickr photo shared by Tom Woodward
Once things have calmed down a bit, select all the images then ctrl click/right click. You’ll select “Create a compound clip“.


cc licensed ( BY SA ) flickr photo shared by Tom Woodward

Then it’s Modify>Retime>Fast and your choice of speeds. You can also go back and enter a custom speed to get things to around the duration you want.


1 How strange to be able to easily charge USB devices in the car and even stranger to have the need to do so.

Markov Seeds

I started to comment on Alan’s recent post but realized I needed to document this a bit better than a comment.

Every so often I kick over the #ds106 Markov generator and see what comes out. Sometimes I push it on to Twitter to share with the world.

This one amused me so I did.

Talking Tina replied, justifiably confused. I explain. (There’s some additional side chatter you can see here but the more interesting stuff is below.)

It could have died there but instead it went into a realm I could not have predicted- probabilistic programming in quantitative finance.

Bill Smith chimes in with n-dimensional Hilbert space.

All this from the random ramblings of a robot algorithm.

An Aside

Because asides are what this post is about after all), you may recall some attempts I was making to use an IFTTT recipe to pull my Tweets into a Google spreadsheet to mess with them a bit more.
I decided to see how often I’d get close to the full 140 characters. In playing around with the chart types I decided to visualize it with the radar chart. I was just curious what it would look like. No real reason. Strangely it has completely frozen the chart. I can’t remove it or interact with it in any way. It looks like the first image on my end and gives the second humorous (to me) error message on the published view.

It’s always interesting when you break something. Usually it’s best if it’s fixable but I don’t mind too much in this case. there’s something fairly attractive about breaking a web service in this way.

This chart broke the google spreadsheet

Screen Shot 2013-12-06 at 9.46.45 PM

Video Game Equation?

It’s supposed to represent the role of mind/emotion in creating engagement but the very fact that I feel compelled to explain that probably means I’m not doing a great job and I wonder about the degree to which I’m joking. There are elements here I may end up making work though. I can parse a few out for a #ds106 assignment as well . . .

Markov Tweet Generator Code, Path, & Potential

DS106 Markov Tweet Generator

The following is how I adapted the Markov chain generator from Hay Kranen. Thanks to the comments1 I found below Hay’s post2 this Markov + Shakespeare version inspired me to figure out the “post-to-Twitter” option.3

Anyway, the much cleaner version is up and running. It now allows you to push the results to Twitter although I’m still adjusting this a bit. The code for the page I modified is below. It’s still slower than I’d like but it’ll do for now.

The fact that I can go from a conversation one day to a fairly finished product the next is the piece that amazes me about computers and the Internet. I cannot stress enough that I don’t know how to write PHP. I feel that’s a statement of empowerment. This project took about three hours of work. 95% of that was searching/research and breaking it and then fixing it.4 Someone who knew what they were doing could probably knock it out in ten minutes.

Now how is this more than just random #ds106 amusement? I think the generator works a little like this example about machine imagined artworks5. So there’s a chunk of human constructed meaning from machine assembled pieces. It doesn’t always work but that’s part of why I like having a human layer between generation and Twitter publishing (although I may still automate it when that makes sense time wise). This does generate interesting assignments and juxtaposes them in ways that are similar to the remix assignments idea but with an additional dose of randomness that I like. It also brings older conversations, student products, and links back into the conversation that’s occurring now.

The possibility of the built in @ convention of Twitter has a lot of possibility as well. That element of personalization and specificity could bring people back into the game/course/conversation in ways that reenergize both the participant and the community. There are lots of ways this might be attractive even absent the Markov element. I think there’s value in trying to pull people back into public conversations via methods like this. If participants in a class (MOOC-ish or otherwise) opted in, you could randomly (and judiciously) @ them to engage in conversations around different concepts, posts, products etc. It’d be a balance to avoid being boring and/or spammy but it might be the prompt needed to have a longer term engagement with a course/community.6

[code]]czozMDE4OlwiDQoNCjw/cGhwDQovKg0KICAgIFBIUCBNYXJrb3YgQ2hhaW4gdGV4dCBnZW5lcmF0b3IgMS4wLjENCiAgICBDb3B5cml7WyYqJl19Z2h0IChjKSAyMDA4LCBIYXkgS3JhbmVuIDxodHRwOi8vd3d3LmhheWtyYW5lbi5ubC9wcm9qZWN0cy9tYXJrb3YvPg0KDQogICAgTHtbJiomXX1pY2Vuc2UgKE1JVCAvIFgxMSBsaWNlbnNlKQ0KDQogICAgUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFye1smKiZdfWdlLCB0byBhbnkgcGVyc29uDQogICAgb2J0YWluaW5nIGEgY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3V7WyYqJl19bWVudGF0aW9uDQogICAgZmlsZXMgKHRoZSBcIlNvZnR3YXJlXCIpLCB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0DQogICAge1smKiZdfXJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8gdXNlLA0KICAgIGNvcHksIG1vZGl7WyYqJl19ZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbA0KICAgIGNvcGllcyBvZiB0aGUgU3tbJiomXX1vZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUNCiAgICBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8ge1smKiZdfXNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcNCiAgICBjb25kaXRpb25zOg0KDQogICAgVGhlIGFib3ZlIGNvcHlyaWdodCBub3R7WyYqJl19aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlDQogICAgaW5jbHVkZWQgaW4gYWxsIGNvcGllcyBvciBzdWJzdHtbJiomXX1hbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLg0KDQogICAgVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiwgV0l7WyYqJl19VEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsDQogICAgRVhQUkVTUyBPUiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVHtbJiomXX1FRCBUTyBUSEUgV0FSUkFOVElFUw0KICAgIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPe1smKiZdfVNFIEFORA0KICAgIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hUDQogICB7WyYqJl19IEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLA0KICAgIFdIRVRIRVIgSXtbJiomXX1OIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcNCiAgICBGUk9NLCBPVVQgT0YgT1IgSU4ge1smKiZdfUNPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUg0KICAgIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0F7WyYqJl19UkUuDQoqLw0KcmVxdWlyZSBcJ21hcmtvdi5waHBcJzsNCg0KLyoNCk9yZGVyIHNlZW1zIHRvIGJlIHRoZSBsZXZlbCBvZiBjaGFvdGlje1smKiZdfSBtYWduaXR1ZGUgaW4gdGhlIGNvbWJpbmF0aW9uIGZyb20gdGhlIHNvdXJjZS4gSGlnaGVyIG51bWJlcnMgc2VlbSB0byBiZSBsZXN7WyYqJl19cyBkaXNvcmRlci4NCkxlbmd0aCBpcyB0aGUgbnVtYmVyIG9mIGNoYXJhY3RlcnMgaW4gdGhlIHJldHVybmVkIHN0cmluZy4NClRleHtbJiomXX10IGlzIHRoZSBwYXRoIHRvIHRoZSB0ZXh0IGZpbGUgY29udGFpbmluZyB5b3VyIHNvdXJjZSBkYXRhLiBJIGRpZCB1c2UgY3VybCBwe1smKiZdfXJldmlvdXNseSB0byBwdWxsIGRpcmVjdGx5IGZyb20gYSB3ZWJzaXRlIGJ1dCBmb3VuZCBwYXJzaW5nIG91dCB0aGUgaHRtbCB0byB7WyYqJl19YmUgcHJvYmxlbWF0aWMuIA0KDQoqLw0KICAgICRvcmRlciAgPSA2Ow0KICAgICRsZW5ndGggPSAxMjA7DQogICAgJHRleHQgPSBmaXtbJiomXX1sZV9nZXRfY29udGVudHMoXCJkczEwNnR3ZWV0cy50eHRcIik7DQogICAgJG1hcmtvdl90YWJsZSA9IGdlbmVyYXRlX21hcmtvdl90YWJ7WyYqJl19bGUoJHRleHQsICRvcmRlcik7DQogICAgJG1hcmtvdiA9IGdlbmVyYXRlX21hcmtvdl90ZXh0KCRsZW5ndGgsICRtYXJrb3ZfdGFibHtbJiomXX1lLCAkb3JkZXIpOw0KCQ0KICAgICAgICBpZiAoZ2V0X21hZ2ljX3F1b3Rlc19ncGMoKSkgJG1hcmtvdiA9IHN0cmlwc2xhc2hlcygke1smKiZdfW1hcmtvdik7DQoNCj8+DQo8IWRvY3R5cGUgaHRtbD4NCjxodG1sPg0KPGhlYWQ+DQogICAgPG1ldGEgaHR0cC1lcXVpdj1cIkNvbnRle1smKiZdfW50LVR5cGVcIiBjb250ZW50PVwidGV4dC9odG1sO2NoYXJzZXQ9dXRmLThcIi8+DQogICAgPHRpdGxlPlBIUCBNYXJrb3YgY2hhaW4gRFN7WyYqJl19MTA2IHR3aXR0ZXIgdGV4dCBnZW5lcmF0b3IgY3JlYXRlZCBieSBIYXkgS3JhbmVuIGFuZCBidXRjaGVyZWQgYnkgbWU8L3RpdGxlPntbJiomXX0NCiAgICA8bGluayByZWw9XCJzdHlsZXNoZWV0XCIgdHlwZT1cInRleHQvY3NzXCIgaHJlZj1cIm1hcmtvdi5jc3NcIiAvPiAgICANCjwvaGVhe1smKiZdfWQ+DQo8Ym9keT4NCiAgPGgyPk1hcmtvdiBDaGFpbiBEUzEwNiBUd2VldCBUZXh0IEdlbmVyYXRvcjwvaDI+DQoNCjxkaXYgaWQ9XCJne1smKiZdfW9vZGhhbmRzXCI+PC9kaXY+DQo8IS0tIFRoaXMgaXMgd2hlcmUgdGhlIHJlbWl4ZWQgY29udGVudCBnZXRzIHByaW50ZWQuIC0tPg0Ke1smKiZdfSAgICAgICAgPGRpdiBpZD1cInF1b3RlXCI+PD9waHAgZWNobyAkbWFya292OyA/Pg0KICAgIDwvZGl2Pg0KPCEtLSBUaGlzIGlzIHdoZXtbJiomXX1yZSB0aGUgY29udGVudCBpcyBwYXNzZWQgdG8gY3JlYXRlIHRoZSB0d2l0dGVyIFVSTC4gVGhlIHR3ZWV0IHZhcmlhYmxlIHVzZXMge1smKiZdfXVybGVuY29kZSB0byBrZWVwIHRoZSB3ZWlyZCBjaGFyYWN0ZXJzIGZyb20gbWVzc2luZyBldmVyeXRoaW5nIHVwLiAtLT4NCiAgICB7WyYqJl19DQogICAgPGRpdiBpZD1cInR3ZWV0XCI+DQogICAgIDw/cGhwIA0KICAgICR0d2VldCA9IHVybGVuY29kZSgkbWFya292KTsNCiAgICAke1smKiZdfW9uZXR3aXR0ZXIgPSBcIjxhIGhyZWY9XFxcImh0dHA6Ly90d2l0dGVyLmNvbS9zaGFyZT91cmw9aHR0cCUzQSUyRiUyRnRpbnl1cmwuY297WyYqJl19bS9tN2xwY3J6JnRleHQ9XCI7DQogICAgJGVuZGVyID0gXCJcXFwiPlwiOw0KICAgIGVjaG8gJG9uZXR3aXR0ZXIgLiAkdHdlZXQgLiAkZW5ke1smKiZdfWVyOw0KDQogPz5Ud2VldDwvYT4NCiAgICA8YSBocmVmPVwiaHR0cDovL2Jpb25pY3RlYWNoaW5nLmNvbS90cmlhbHMvbWFya292L2lue1smKiZdfWRleC5waHBcIj5SZWZyZXNoPC9hPjxicj4NCiAgICA8L2Rpdj4NCiAgICANCjwvYm9keT4NCjwvaHRtbD4NClwiO3tbJiomXX0=[[/code]


1 Comments matter and help stitch together the Internet.

2 which is from 2008 I might add- long tail etc. etc.

3 Note to self and other clueless people, urlencode is just a bit easier way to clean up the text than trying to think through a str_replace. That’s a fairly awesome example of the fact that I have no idea what I’m doing. I only happened across that function (?) by chance on some random StackOverflow post and it was as if the world just fell into place.

4 I consider that testing.

5 Serendipitously posted on the same day I had the conversation that inspired this and which I read last night (h/t Boing Boing).

6 You could get all meta-data and create profiles of interest to help algorithmically connect people with posts they might like etc. etc. but that starts to feel a bit different to me.

Markov Chains, Horse e-Books and Margins

In discussing trajectories, elements of engineered serendipity, “thought vectors in concept space” with Gardner and Jon yesterday the following occurred.

Gardner shared this video (which is well worth watching and I rarely have the patience for videos).

That led to a discussion about creating and using a MOOC/hashtag specific Twitterbot (like horse e-books but real1) using Markov Chains2 to create algorithmically driven conversations/connections that occur in the margins of intention and result.3

So I began messing with the idea last night. Given I have a completely illusionary knowledge of programming I looked for people to tell me how to do this. I found the metaphor a minute tutorial which will help me out with the Twitterbot end of things in the near future. I also found this PHP based Markov generator which does very nearly what I want absent the Twitter-ing part.

I did want to automate the connection to a particular Twitter hashtag rather than adding the content manually so I started wandering around looking for ways to do that. Step one was trying to use curl. I eventually semi-melded some curl examples with the Markov generator. I was using the Twitter search for #ds106 as the source initially. With curl you are pulling the html so I got some interesting pieces but a fair amount of code fragments as well. Stuff like . . .

I liked the code to some degree but figure a larger audience would probably ignore it. So I harassed Alan, Jim and Martin early this morning and got access to the #ds106 Twitter spreadsheet archive. I pulled it down as a txt file and used it for the source material. That started to get cleaner results like . . .

You can mess around with the semi-working (just refresh page and hit resubmit form- I did say semi-working) manual/random #ds106 tweet generator over here.


1 Really fake, I mean. I guess.

2 I’m not really sure if that should be pluralized or not.

3 There’s a whole additional piece where you think about larger scale curricular design which incorporates random elements and assignments that use algorithms to push people in new directions. That starts to get really interesting. I am considering how the assignment and maybe a browser plugin could create contextual variables based on what site you were on at the moment that would then be incorporated into the larger assignment- kind of a #ds106 remix on contextual steroids.