31 Posts Tagged "building106"

ds106 Class Notes and Stuff

Tinkering Under the ds106 Hood

cc licensed ( BY NC ) flickr photo shared by Thomas Hawk

Last week I wrote about the ideas and content changes I had in mind for the next semester of ds106. The car polish is looking shiny. Over the last few weeks I had out my WordPress wrenches, calipers and engine pulls to do some work under the hood. The current site is coming up on two years old, and has been a great example of growth by accretion, experimenting, adding things on. That is all part of running experiments.

But it also got a bit wobbly last semester; no one likes their web site going down, but we were sure ringing the buzzer frequently at our hosts Castiron Coding for server restarts. It wasn’t clear if it was the database, the demands on the server processes, but I took it as a mission to keep happy the unicorns that run the server room

server room unicorns

First of all, our site is a WordPress multi site that not only servers up ds106 covering numerous sections taught over the last 2 years, but also the Assignment bank, the Daily Create, the Assignment Remix Machine, in[SPIRE], plus the archive of Camp Magic Macguffin, and (just unearthed) the May 2011 class taught by Martha Burtis. We also run a MediWki install as a content engine for our documentation (using the Wiki Embed plugin).

The database was and is over 600 Mb. More on that later. There was a long list of plugins, active and inactive, quite a few were not in use.

I’ve done quite a bit and hope I can remember it all! An off the cuff summary…


Building the ETMOOC Blog Hub (part 2)

cc licensed ( BY NC SD ) flickr photo shared by epc

In my last post, I quickly overviewed the wordpress customizations I did to set up the ETMOOC Blog Hub. Using the Feedwordpress plugin for a few feeds is easy to do, and it does a rather slick job of finding feeds from a blog URL.

The messy part is dealing with a lot of blog feeds. Getting this part right is more than just tossing URLs into a magic box, you have to have a good grasp of how RSS feeds work in different blogs.

It’s messy.

Because of those pesky humans.

Over at ds106 we have a rather elegant blog registration system that Martha Burtis designed, that actually does a web registration and automatically enters someone’s new blog into Feedwordpress.

The thing is there is a bit of variability to deal with when allowing people to bring in any blog platform (that is what we want), because it can eb confusing to the individual, especially if they are new to blogging, what we ask of them.

The thing is, it’s most easy if someone says, “I am going to do this ETMOOC thing, so I am going to make a new blog just for that stuff” – all we need is the blog URL and Feedwordpress can figure out the right TSS feed to use.

It gets more complicated when someone has an existing blog they want to use to do ETMOOC writing. There is nothing wrong with this approach (especially since it is mine!) but we don’t want to subscribe to everything the blog publishes- we just want posts that are related to ETMOOC. So the person with the blog has to decide (and understand how) to use tags/categories in their posts to mark things they want to syndicate.

This is quite a powerful concept that is easy to overlook – it means I can do things like use a single blog to selectively push content to different places through an understanding of the flow.

This is compounded by the different ways blog platforms are st up for this kind of syndication.



Building the ETMOOC Blog Hub (part 1)

cc licensed ( BY ) flickr photo shared by agiledogs

I’m really getting the hang of setting up these FeedWordPress powered syndication sites- I wrote a few days ago about using this approach to create a twitter archive site for the ETMOOC site. At the same time, and more over the last few days, I have been tweaking the edges and putting into motion what should be a core of the site, the aggregation site for participants in the MOOC which starts next week.

Alec Couros has that draw power! I heard well over 1000 people signed up; the ETMOOC Google+ Community is brimming with intros of educators from all levels and corners of the world.

As a little bit of architecture, the main ETMOOC site (http://etmooc.org/) is running WordPress multisite, using URLs for subsites, and I have rolled out the two extra sites, the Twitter Archive (http://etmooc.org/tweets/) and the Blog Hub (http://etmooc.org/hub).

As of tonight, we are syndicating in 65 blogs and everything is humming nicely with 165 posts brought in:

blog hub

Check it out now at http://etmooc.org/hub. This post is more a run down of the WordPress mods to organize the site; in a next post I will go over the process for getting blogs into the mix.


Building ETMOOC Twitter Syndication/Archive

UPDATE June 19, 2013 Since twitter has killed their version 1 API, there is no longer a public RSS feed provided for twitter activity. Expect new solutions to emerge, one that is usable now is this method from labnol to convert the new JSON feeds to RSS using a Google Script. This method works in FeedWordpress.

I’m growing more and more and more and more (more?) interested in building out more syndication architectures like we have done in ds106, at a range of scales from te 600 feeds we crunch for ds106 to the 40 or so we did for the Project Community Class down to the 2 I do for my own self syndication.

Leaning towards the bigger end, I have been working to set this up for the ETMOOC thing Alec Couros (and about 90 other people it seems) are launching soon. It’s been a great chance to stretch some WordPress chops with FeedWordPress in place for the syndication engine.

Below I outline how I created the site that is archiving the #etmooc tweets – http://etmooc.org/tweets


Hubs of Syndication

cc licensed ( BY NC ) flickr photo shared by Thomas Hawk We are big on hubs here at the hub of CogDogBlog. In fact, well, let’s say I am writing something profound about networks and syndication, mainly because I am setting up and testing some blog syndication for Alec Couros’s ETMOOC due to blast […]

Blog Pile

The Little Wiki Engine That Can

cc licensed ( BY ) flickr photo shared by wsilver Last June, before the Northern Voice conference, I spent some extra time in Vancouver at UBC to get insight into their success with UBC Wiki as a community platform as well as a publishing engine (w.g. wiki content being pushed to WordPress). Part of it […]


Building WordPress Admin Tool for Building Daily Creates

Last January, Tim Owens did a masterful job of assembling the Daily Create site out of a premium theme (Salutation), a mix of plugins (including Awesome Flickr Gallery, Tubepress, and Gravity Forms), etc– and no custom code.

When I arrived at UMW in February, I offered to take over the creation of the challenges. It is a mix of ones submitted by our site users, borrowed ones from the Daily Shoot, b3ta Challenges, the Vancouver Draw Down, and the 30 Day Drawing Challenge, plus about a good 30% we just dreamed up.

Creating them turned out to be a bit tedious as there was at least 7 different things to set on the interface. We had to have them, scheduled in advance, each to be published at 10:00 am EST.

All thee steps for editing a Daily Create

(click for full size image)

(1) The title would be present if it was submitted via a form; for one from scratch it is entered/pasted.
(2) The post name was manually entered, based on the tag for the day
(3) Depending on the type of Daily Create, we had a format for the post that would use a set of links to flickr, you tube tags to set up the instructions, and for the embedding of media, a Tubepress shortcode, flickr gallery ID, or a SoundCLoud embed code. For these, the tag had to be manually entered in at least two spots. For the flickr ones, we would have to create an Awesome flickr gallery (another admin page), and manually copy/paste the shortcode. I started by copying from old posts (and managing a few times to edit the wrong one) and later kept a generalized version in a text doc for cutting/pasting
(4) The future date for publishing was manually set (10:00am EST)
(5) Two categories assigned for the type, and an overall category we use to group all assignments.
(6) The tag is entered here
(7) The theme required a selection menu to match it to the type of assignment (each type has its own graphic which is displayed in the single post view.

I did this for about two months before rolling up my elbows to see if this could be streamlined.

Each of the four types (Audio, Video, Photography, Drawing) have a different content structure which is what embeds the creative works in a post. When I looked it at, once the type was set and the tag as known (the tag tdc123 is also the slug for the post), it was potentially template-able.

I looked to see if there were any plugins for setting up at least the templates for the content, but did not find any that allowed for multiple templates.

But ti was looking at the admin interface for this very theme (the theme options down the right sidebar) that it dawned on me that I could possibly create my own box with a drop down menu to select a type, and when saved, the post would automagically fill in the right content and check the right boxes, etc.

So after completing the Daily Creates for 6 months in advance, doing this seriously paid off. I was typically able to knock off a months worth in about 90 minutes, and more of that was having to look around or make up assignments.

The way is works now is for a new post or if I edit something that is a draft, the TDC Settings meta box is activated.

(click for full size image)

(Gulp, note in this fake example, it should be a Drawing type, not photography, this assignment is not reallly in the mix… yet)

The only thing it needs is (1) the title, (the code automatically creates the next tag it should use based on the last one created) and (2) I just select the type from the drop down menu, and click Save Draft.

When saved, everything else is done for me!

(click for full size image)

(1) Tag is used for the url
(2) The basic content is created according to the kind of assignment, and the tag is inserted where it is needed. The * is because the automation is not 100% complete; I still have to generate the flickr gallery shortcode for Photography and Drawing types (I did experiment with calling the code directly; it was close but not quite correct). Also, the embed codes for SoundCloud are random IDs, not related to the group name, so that code is also manual.
(3) The future publication date is automatically set! This saves a ton of time. It simply looks for the last one created, and then sets the publication date for 24 hours later.
(4) Categories automatically checked
(5) (6) The tags and the header setting for the template are auto selected.

This is all done by some custom code to intercept the hook when a draft is saved, and then updating the post data (and some post metadata).

Below is the semi hairy code… broken into parts for explanation. This all lives in the functions.php part of the theme template (which truly should be done as a child theme). If I were more clever, I would have made it a plugin, but the code would be the same (One day I want to be 0.01% as code clever as Boone Gorges).

Here we go… code below the fold…