Kyle Mathews' Blog

Looking for Alpha Testers for Eduglu, a new Drupal Install Profile for Higher Education

Posted in | »

I've been working on a social learning site based on Drupal for the past two years as a student at Brigham Young University and am now working towards readying it for its maiden release into the world as a full-fledged Drupal install profile.

My goal with Eduglu is to:
a) Provide a superb out-of-the-box social learning engine to help departments, clubs, classrooms, and other campus groups communicate, collaborate, and learn with one another.
b) Support a social learning platform which individual universities and Drupal shops can integrate with existing tools and services and use to build custom tools supporting specific learning practices.

Or in simpler terms, Eduglu = robust social learning engine + pluggable educational tools.

For Drupalers, Eduglu is built on the same stack of modules as Open Atrium; Organic Groups, Spaces, Context, and Features.

I'm also working to start a company to provide commercial support and hosting for Eduglu.

But we're not there yet. My plan is to make the first beta release by Drupalcon where I'll be presenting more about Eduglu. But to be ready by then, I need alpha testers. If you're interested in becoming an alpha tester, please contact me. I'll be preparing an initial release over the next couple of weeks.

Also, if you do Drupal consulting in higher education, I'd love to work with you. Please contact me and let's discuss how we can work together.

Lastly, if you're an educator working in higher ed, I'd love to talk to you as well. Especially people working at online or virtual colleges and community colleges. If there's an educational tool you've dreamed of having -- or tried building and failed -- contact me and tell me about it and I might just build it for you.

And if you're not in one of the above three groups but know someone who is -- please connect me with those people.

I'll be doing a bit of travel in a couple of weeks. I'll be in Boston February 17th-20th, New York February 22-23 and Washington DC on the 24th-25th. If you're in one of those cities and want to meet and talk Drupal/higher education, let's get in touch!

Thanks all! It's going to be an exciting ride and I'm looking forward to it.

Submitted by Kyle Mathews on Fri, 02/05/2010 - 18:47

An Education Syllogism

Posted in | »

  1. Schools exist to prepare students to thrive in the environment where they live.
  2. The environment we live in has changed significantly in the past fifty years from a mechanistic to an electronic world.
  3. Therefore, schools must change their methods for how they prepare students from mechanistic preparation (fixed length/content courses, categorized knowledge) to electronic preparation (pattern recognition, rhizomic learning).
Submitted by Kyle Mathews on Tue, 02/02/2010 - 22:24

McLuhan predicts newspaper's demise in 1965.

Posted in | »

Reading through "Understanding Media: The Extensions of Man" by Marshall McLuhan, I came across this gem of a quote:

The classified ads (and stock-market quotations) are the bedrock of the press. Should an alternative source of easy access to such diverse daily information be found, the press will fold.

And I think we all know how that's turned out.

Submitted by Kyle Mathews on Sat, 12/19/2009 - 20:29

Three adoption patterns for educational social software

Posted in | »

I've been reading and thinking a lot lately about how to drive more adoption of the social learning platform I'm building here at BYU, https://island.byu.edu, and wanted to summarize some of the highlights of what I've learned. All of the patterns come directly from Ross Mayfield and Michael Idinopulos's writings so a big shout out to the great work they're doing at Socialtext.

Pattern 1: Launch Broad then Deep

I wrote extensively about this pattern about a month ago in my post Deploying Social Software in Universities: Go Broad then Deep. The crux of the argument is that when deploying social software, you should first aim to get wide adoption, sign up as many people as possible, before trying to facilitate deeper, more complex engagement between your users. Social software without people is useless or as Michael Idinopulos puts it, "Scale is the oxygen that feeds collaboration." In the competitive web2.0 world, the simplest tool almost always will win.

Once you've achieved broad adoption, the next step is to go deep. To quote Michael again, "[after achieving scale] deliver deep value by following up with local champions [deans, teachers, students] who want to invest time and effort in more robust, group-specific forms of collaboration."

So launch simply and broadly. Let students and teachers adjust to having a web-enabled learning environment. Then go deep by building into the social learning platform higher-value tools such as blogs, wikis, and other collaborative learning tools and workflows.

Pattern 2: Help Learners Climb the Participation Curve

Ross Mayfield came up with a beautiful concept a number of years ago called the "Power Law of Participation"

Reproduced image:

The essence of the model is that in any community, the vast majority of the members will not have a very high level of engagement with the community. For example, in most classes there will be a few students who actively participate while the rest play solitaire. When you first deploy social learning software, most learners will only participate by reading. While they do get value from reading and lurking in communities, learners will benefit even more if they move up the participation curve and engage more deeply in some of the communities they participate in.

Software adoption can be thought of in two dimensions, broad and deep. If your learners are successfully engaging in higher value / engagement tasks on your site, this deep adoption is occurring.

Pattern 3: Focus on Creating Value

It's far to easy to focus on the tools we use rather than the value we're trying to create (See Jon Mott's blog, "The End in Mind" for an extended discussion on this subject). Adoption will increase if we focus on more creating value (making our users awesome) and less on the specific tools we are building/using.

A social learning platform can add value to educational institutions in four contexts (See Michael's post The Social Software Value Matrix for more):

  1. Within the classroom
  2. Within departments
  3. Within the institution
  4. Across multiple institutions

Socialtext recently released a white paper on the 6 Ways to Get Business Value from Social Software. They discuss there how social software can greatly improve the formal and informal processes in each of the contexts that social software operates in.

Formal processes they define as "those things your organization does on a repeated basis."

In an educational environment those would be things such as lectures, quizzes, studying, group projects, writing essays, exams, and so forth.

Informal processes they define as "all the many interactions that take place outside of this [formal] structure. They are not predictable and repeated, and therefore cannot be codified and defined... Informal processes make up the bulk of [learners] interactions."

In an educational environment informal processes would include such activities as informal study groups, conversations in hallways, individuals or small groups meeting with professors or TAs, forums, clubs, and so forth.

Within an educational institutions there are many formal and informal learning processes that can be improved. As we focus on identifying poor processes and creating learning tools that clearly improve them, adoption of our social learning software will increase.

Submitted by Kyle Mathews on Wed, 11/18/2009 - 19:55

Marshall McLuhan on education

Posted in | »

I've started reading "Understanding Media: The Extensions of Man" by Marshall McLuhan and am greatly enjoying it. It's an incredibly dense read but so far, my efforts have been richly rewarded.

I haven't read enough of the book yet to feel up to writing a proper review/analysis but I wanted to pass along a bit from the introduction to the paperback edition that McLuhan wrote on education as the analysis (~50 years after it was written!) is still spot on and entirely appropriate to our discussions today on what education should become in the 21st century.

Any new technology gradually creates a totally new human environment. Environments are not passive wrappings but active processes. In his splendid work Preface to Plato (Harvard University Press, 1963), Eric Havelock contrasts the oral and written cultures of the Greeks. By Plato's time the written word had created a new environment that had begun to detribalize man. Previously the Greeks had grown up by benefit of the process of the tribal encyclopedia. They had memorized the poets. The poets provided specific operational wisdom for all the contingencies of life--Ann Landers in verse. With the advent of individualized man, a new education was needed. Plato devised such a new program for literate men. It was based on the Ideas. With the phonetic alphabet, classified wisdom took over from the operational wisdom of Homer and Hesiod and the tribal encyclopedia. Education by classified data has been the Western program ever since.

Now, however, in the electronic age, data classification yields to pattern recognition, the key phrase at IBM. When data move instantly, classification is too fragmentary. In order to cope with data a electric speed in typical situations of "information overload," men resort to the study of configurations, like the sailor in Edgar Allan Poe's Maelstrom. The drop-out situation in our schools at present has only begun to develop. The young student today grows up in an electrically configured world. It is a world not of wheels but of circuits, not of fragments but of integral patterns. The student today lives mythically and in depth. At school, however, he encounters a situation organized by means of classified information. The subjects are unrelated. They are visually conceived in terms of a blueprint. The student can find no possible means of involvement for himself, nor can he discover how the educational scene relates to the "mythic" world of electronically processed data and experience that he takes for granted. As one IBM executive puts it, "My children had lived several lifetimes compared to their grandparents when they begun grade one."

His definition of "myth" is necessary to understand the above quote. Taken from pg. 25 of the paperback version:

Myth is the instant vision of a complex process that ordinarily extends over a long period. Myth is contraction or implosion of any process, and the instant speed of electricity confers the mythic dimension on ordinary industrial and social action today.

Later in the book McLuhan writes that, "We live mythically but continue to think fragmentarily and on single planes." The new electronic/internet environment we live in has reshaped how we live, learn, and work. The disconnect McLuhan identified between how we live and learn outside of school vs. inside of school has only grown since the 1960s.

Much of what passes for educational best practices these days are merely vestiges of a bygone era. For better or for worse, the electronic age has radically reshaped human thought and behavior. Clinging to educational practices designed to teach "data classification" helps no one -- especially the students who are facing a world radically different than the one our schools prepare them for.

Submitted by Kyle Mathews on Thu, 11/12/2009 - 16:17

How we ran a micro-lab course

Posted in | »

This is the second part of a (most likely) three-part series of posts I'm harvesting from a journal article Tim Olsen and I wrote earlier this year. You might want to read the first post for context, Organizing University Learning: Moving Beyond the Course to Micro-labs, before continuing here.

This post is taken from the section of the paper where we describe our experience running a micro-lab course (with Conan Albrecht as the head teacher) in the Information Systems department at BYU.

First a review of the micro labs concept taken from the first post:

Micro-labs are small learning communities centered around answering a question, not mastering standardized content/skills

Micro-labs are a proposed university course architecture which supports and incorporates "web 2.0" informal learning principles, enabling students to entirely create their own curriculum with the goal of contributing all objects created by learning back to a learning community of practice, and an Internet audience. This course design seeks to harness both the student's natural (intrinsic) desire to learn and the ease of access to knowledge created by advances in communication technologies.

In our micro-lab course, the students were asked to do four projects through the course of the semester. Each project had four steps. Students 1) create and post on the class website a learning contract specifying what they wish to learn, their process for learning, and planned deliverables. This contract is 2) revised with feedback from the instructor and fellow students. Students 3) complete the proposed learning contract and 4) share the completed deliverables by posting them to the class website and delivering an ignite-style presentation to the class (and if you're curious, all learning contracts, project deliverables, and public discussion can be see on the class website).

1. Formation of Learning Contract

The project proposals were written by a student or a group of students, and defines what they wish to learn during the 3-4 week period of each project. Proposals can be a “learning project”, where students research a topic and write up a report, or a “building project”, where the student defines what they will create. Examples of learning projects include a report on Java Enterprise Edition 5, or wiki pages describing Amazon web services. Building projects include making an Android application, a lyrics visualization plug-in for iTunes, or an SMS gateway. During the last week of each project, students start to prepare learning contracts for the next iteration.

An obvious feature of the learning contract is that it is written entirely by the student. This allows for intrinsic motivation, as is illustrated in this student quote: "I was able to learn a lot about and use a bunch of technologies that I never would have been able to otherwise. I feel like I learned more than in a normal class, and because I got to choose what I wanted to learn, I would usually have trouble putting down my unclass project work to take care of my other homework."

The ambiguous nature of how much work should go into a contract was a source of frustration for students. One student describes the initial disorganization and lack of set expectation: "We didn't have any initial standard to set our projects to. I wasn't sure if I had to build something huge to be considered complete, and I wasn't sure what was expected of the presentations. I chalk all of that up to a learning experience though. I wasn't given a ceiling so I was inclined to take my projects as far as I could, primarily because they were fun." This quote raises an interesting research question: If students (instead of teachers) are allowed to set a learning contract for a course, are the students more ambitious?

2. Students Incorporate Feedback into Proposals.

Students post their learning contract to the class website to elicit feedback from the instructor and other students. This enables other students to see and learn from the feedback from the instructor. It also allows for the possible recruitment of other students to participate in the learning project. Once the contract is revised, the instructor approves the project and the students’ grade is bound to the satisfactory completion of the project.

3. Contract fulfillment

Students work individually or in teams to complete their learning contracts. They are challenged with the task of finding their own learning resources, and may ask the instructor and other students for direction. This is seen as a key feature of the design. As students find their own learning resources they are able to select resources which they find most helpful. Research suggests that students and experts possess different cognitive structures (Ericsson, Charness, Feltovich, & Robert R. Hoffman, 2006). Experts are able compare a new situation to what they have experienced before through pattern recognition and are then able to recognize nuances and focus on important, rather than unessential elements.

Novices do not yet have a rich experience base, and as such learning is sequential (R. R. Hoffman, Shadbolt, Burton, & Klein, 1995). We suggest that as students possess similar cognitive architectures they are better able to relate to novices in their class and outside of their class. As the process of learning becomes “transparent” and open through the use of technology students are able to use resources created by other novices to grapple with new subjects.

What resources did the students use?

If, as we suggest, students are better able to learn from learning objects created by novices (instead of experts), allowing the students to incorporate and find their own learning objects is a logical design for a course. Yet, from our experience, doing this can be very difficult for teachers. Data from the students gave surprising results on what resources were used to complete projects, and how they were found.

We were surprised by how many students used social networks to find learning resources. One student remarked, "Usually I would just start on a project, and when I came to the parts I didn't know as much about I would search using Google and talk to friends who I thought might be knowledgeable on the subject." As the course progressed student's utilized the social network created through the class blog and wiki which was used to share knowledge that students had developed through the course of completing projects. This is illustrated through the following student comment.

It was very helpful to use island and the respective blogs resulting from other student's completed projects as a resource for my projects. I could remember certain things that the other class members were doing from their projects and ask them questions via instant messaging or island [the course website]. Because the class members took ownership of their projects I found them all to be very knowledgeable about the subjects they studied. This helped build a very nice knowledge base.

Another student mentioned other professors and students as well as people he had met on the internet through blogs as means through which he found educational resources. Most students mentioned that they contributed to the class blog as well as other students blogs, or their own blogs.

4. Share learning deliverable

Student’s share what they learn in two ways. First they post it on the course website so that other students can read and comment on it. Second, they create an “ignite presentation” which consists of a 5 minute power point presentation of 20 slides in which the slides automatically advance every 15 seconds. This is intended to be a rapid way of transmitting ideas in an engaging and entertaining manner.

By making the student learning deliverables available publicly on the Internet, it encourages student accountability for learning and creates learning objects that classmates and future students can access and build upon for their learning projects. These public traces of work are also useful as mentioned because students, by seeing what other students are working on, learn which students are expert in what and are able to use them as learning resources for those subjects. Another advantage is it helps market the class, major, and university to current and potential students. As these future students come to explore the college or university they will be able to “lurk” and see the projects and potential colleagues which they would be working with.

Assessment

Given the unusual nature of the class, assessment was handled differently. The majority (70%) of the points came from completely the contract as agreed upon in the learning contract. The remainder of the points were awarded for either extra work done on projects or where students helped other students in some way. This following is the assessment portion of the class syllabus:

  • 70% of your grade will come from the completion of your project. Items to be graded include:
    • Complete a contract that lists the work to be done (or learning to be achieved), the specific tasks or responsibilities of each student in the group, and any deliverables to be created.
    • Complete an appropriately difficult project meeting the contract agreed upon
    • Submit weekly progress updates
    • Attendance at weekly group meetings
    • Give an ignite presentation
    • Attend and present at least one session at the twice per semester unconference
  • 20% of your grade will come from Learning 2.0 points. These include things such as:
    • Reviewing and making comments on other students’ contracts
    • Stories or blog posts to your project Island group
    • Comments made on other users’ stories, blog posts, and comments
    • Other indicators of interactions and work
  • 10% of your grade will come from Friend points.
    • These are points that others can give to you (the student). They are totally at the discretion of the owner of the points. The teacher has a number of friend points he can assign, and each student has friend points he or she can give. Each student will be given 10 friends points per project. These points must be given to other students during the project or they are lost.

Two students mentioned that the grading procedure was the worst part of the class: "There was no fair assessment of the work we did." "The [biggest problem with the course] was trying to figure out a grading metric for the class."

As this was our first time involved with this type of course, we were unsure what would unfold. We were pleased to watch the class become a success, and see self-directed learning, and peer-teaching. Strong connections quickly formed between students which enabling them to access learning resources found throughout the community. We're sure our course design could be significantly improved but we are thrilled it was successful as it was.

Ericsson, K. A., Charness, N., Feltovich, P. J., & Hoffman, R. R. (2006). The Cambridge Handbook of Expertise and Expert Performance (1st ed.). Cambridge University Press.

Submitted by Kyle Mathews on Fri, 10/30/2009 - 16:26

Organizing University Learning: Moving Beyond the Course to Micro-labs

Posted in | »

University learning is centered on the course. A pattern for learning familiar to any current or past student. Students and teacher meet 1-3 times per week for 8-12 weeks. There's lectures, readings, papers, projects, quizzes, and tests.

This, by and large, is an adequate pattern for many learning purposes. But no rational person would suggest this is the only workable solution or even what's best, or adequate, for all purposes.

There have been many alternative models proposed. One I've taken a liking to was described in a recent journal article by Ann Pendleton-Jullian titled, Design Education and Innovation Ecotones.

Over the next couple of weeks I'll be recycling material from a paper that Tim Olsen and I wrote this past summer (which was rejected for publication sadly -- but luckily we have our own worldwide publication systems we can use as a fall-back :) on the micro-labs concept and our experience running and participating in class that used similar concepts.

Micro Labs

Micro-labs are small learning communities centered around answering a question, not mastering standardized content/skills

Micro-labs are a proposed university course architecture which supports and incorporates "web 2.0" informal learning principles, enabling students to entirely create their own curriculum with the goal of contributing all objects created by learning back to a learning community of practice, and an Internet audience. This course design seeks to harness both the student's natural (intrinsic) desire to learn and the ease of access to knowledge created by advances in communication technologies.

Micro-labs may be contrasted with a normal lab, which are found at most universities. Labs are large expensive operations that might take years to set-up and are expected to run for many years. Micro-labs, by contrast, are quick to set-up and cheap to run with as few as 2-3 students and a faculty adviser who meet in the Library. Many small, tightly networked micro-labs would collectively create an impact far beyond a few larger labs.

[these micro-labs are] easier and quicker than large centers to plan, build and reconfigure as projects shift and move in other directions, they facilitate grassroots creative research. These highly networked micro labs, focused on topics of deep inquiry, need not have dozens of participants sitting in the same room. A team of participants with the necessary skills might be distributed among several institutions, several countries, networked digitally and through ongoing academic relationships...Because they are networked, a single micro-lab’s reach extends beyond the team itself or the duration of a specific project. When the opportunity arises, these micro-labs can coalesce into one larger lab with tremendous diversity and richness of talent. Breaking apart again, they may redistribute talent and resources. Analogous to the way 'process networks' mobilize highly specialized small companies across an extended integrated design and manufacturing process, a network of micro-labs creates a horizontal rhizomic structure in which the whole is much greater than the sum of the parts. The networked micro-lab can adapt to new questions and opportunities from outside as well as inside the network. (Pendleton-Jullian, 2009)

Micro-labs are a simple and efficient mechanism for providing students informal learning opportunities in niches of their choices.

In a micro-labs course, student teams outline a plan of study and learning deliverables with the help of an instructor. Each study is completed over the period of 2-6 weeks. Coached by an instructor, students utilize any content they wish, including Open Educational Resources, to learn material in an authentic learning environment (Herrington & Oliver, 2000). The learning outcomes consist of deliverables, which are typically given to the community, including blog posts, tutorials, software tools, and conference presentations.

Micro-labs courses promise many benefits. In some universities 50 percent of enrollment is concentrated in only 25 of the largest classes (Graham & Stacey, 2002). This suggests the high financial cost of serving students in smaller niche classes, which can be reduced through the use of micro-labs courses as one teacher can coach significantly more student-led learning teams and less building resources are needed. Self-adaptive learning benefits students as they are able to learn the material in the manner, and with the resources of their choice. Students are also able to learn from and contribute to a community of practice in which they may later be employed. In addition, micro-labs courses better prepare students for today's highly competitive and rapidly changing workplace, as they develop experience in directing their own learning.

Micro-labs as a Class

A normal class defines both the required learning outcomes and the required inputs (the homework, projects, group assignments etc.) that students must experience in order to (hopefully) arrive at the required outcomes. In other words, the professor decides, not only what the students should learn but also how they should learn.

This factory model for education is growing increasingly untenable as the world grows more complex. Today's students graduate into a world of far greater uncertainty and far greater diversity as the formerly monolithic landscape dominated by a few large companies grows increasing fragmented and diversified. Our universities must help prepare students for many more types of career paths.

The core idea is that micro-lab classes adapts to its learners instead of requiring its learners to adapt to the class. This is the central idea of many web 2.0 applications. Services such as Twitter and Flickr provide simple mechanisms that users can apply to meet a large number of needs. In a similar way, the micro-lab course provides an architecture for students to build learning communities and use learning objects of their choosing.

Another model that's helpful in understanding micro-lab classes is supply-push vs. demand-pull. Supply-push describes the traditional curriculum model, where faculty plan their courses to push knowledge to students through means such as textbooks or lectures. Demand-pull describes the type of learning typically done by extracurricular learners. For example, a person desiring more knowledge (demand) about RFID tags might search the Internet and pull information from various web pages.

A micro-lab class is a demand-pull not supply-push type class. Students decide what they want to learn and pull in content as needed and ask questions to different learning communities as needed. Supply-push models work best when resources are scarce, such as when professors are the sole source of information. Demand-pull models seem best when resources are abundant. Today’s Internet provides a tidal wave of information that learners can access.

Brown and Adler state:

The demand-pull approach is based on providing students with access to rich (sometimes virtual) learning communities built around a practice. It is passion-based learning, motivated by the student either wanting to become a member of a particular community of practice or just wanting to learn about, make, or perform something. Often the learning that transpires is informal rather than formally conducted in a structured setting. Learning occurs in part through a form of reflective practicum, but in this case the reflection comes from being embedded in a community of practice that may be supported by both a physical and a virtual presence and by collaboration between newcomers and professional practitioners/scholars.

In my next post, I'll describe a micro-lab class we ran at BYU.

Submitted by Kyle Mathews on Wed, 10/21/2009 - 17:43

Learning in the open

Posted in | »

I've been thinking a lot lately about the power of transparent learning or learning in the open. With blogs, twitter, wikis, and other social media tools, our ability to share what we're learning with others has increased dramatically. The shift from learning in private to learning in public is dramatic and chaotic, much like swimming from the edge of a river into the fast flowing current. All of a sudden you're being pushed and tumbled along much faster than before.

I'm reading a book by Albert Bandura this semster called "Social Learning Theory." Bandura was a psychologist in the mid to late 20th century who researched the role of social modeling on human motivation, thought, and action. A lot of what I'm reading supports what I've experienced with learning in the open.

Here's some of what he wrote on social modeling:

Learning would be exceedingly laborious, not to mention hazardous, if people had to rely solely on the effects of their own actions to inform them what to do. Fortunately, most human behavior is learned observationally through modeling: from observing others one forms an idea of how new behaviors are performed, and on later occasions this coded information serves as a guide for action. Because people can learn from example what to do, at least in approximate form, before performing any behavior, they are spared needless errors.

One of the best parts about being an entrepreneur in this day and age is the many great learning resources on the internet. My favorite place to hangout on the internet is Hacker News. There hackers (the good type) and entrepreneurs share interesting news and opinion posts and have conversations about them. Almost everything I know about entrepreneurship has come from joining and participating and emulating others within that community of makers who, to an incredible extent, learn in the open.

I started doing web development about three years ago -- and at the time knew almost nothing really about building websites. But I made the decision then to join the Drupal community and learn web development using the Drupal social publishing platform. Since then I've learned an great deal about building sophisticated modern websites. I've been to two Drupal conferences and presented at both. I participated in the Google Summer of Code last year on a Drupal project. I've spent hundreds of hours reading blog posts from other Drupalers and hundreds more hours reading discussions between programmers about how to write different pieces of code studying how they think and solve technical problems. Almost everything I know about web development has come from my choice to involve myself in the Drupal community.

The problem with many classes in the University and K-12 is that teachers (and students) forget that learning is much more than the acquisition of facts and figures -- learning is the process of becoming something. It's the the process of becoming a full member of a community of practice.

To become a physicist one for sure must learn physics equations. But much more than that, the student must learn to be a physicist -- think and act like a physicist would. Approach problems like a physicist would.

If teachers ask students to learn in the open -- through blogging, editing wikis, public discussions, etc -- the more advanced students will serve as models for the rest and the student's progress at learning to become a chemist, a mathematician, a programmer, or whatever the community may be that they are trying to enter, will accelerate. The progress is even greater if teachers actively model the thinking and problem-solving skills of that community.

George Siemen's explained the idea very well when he wrote, "Watching others learn is an act of learning."

He continued:

Let me explain. When someone decides to share their thoughts and ideas in a transparent manner, they become a teacher to those who are observing. Social technology – such as Twitter, blogs, Facebook – opens the door to sharing the process of learning, not only the final product.

There's a lot of promising educational ideas out there -- but this one excites me probably the most of all of them. Why? because it's so simple to implement. The teachers and students just have to do what they have been doing -- but make it open. And then reap the benefits.

Submitted by Kyle Mathews on Wed, 10/07/2009 - 17:28

How to create custom ical exports by category using Drupal and the Views and Calendar modules

Posted in | »

Lately I've been helping out a web development team at BYU develop a new calendaring system in Drupal to replace our existing all-in-one calendar. It's an ambitious project that's leveraging quite a few different modules from the Drupalsphere.

Some of the features include:

  • Import ical feeds.
  • Filter events for display by event category
  • Download customized ical feeds by category (i.e. Student wants to import just sport and academic events into his personal calendar).
  • Hovering on event titles exposes tooltip (we're using Beautytips) with full event info

Here's a screenshot of the UI as of last night:

I wanted to blog about how we created our ical exports by category as I couldn't find any documentation about this and it doesn't work out of the box.

The default view from Calendar includes an ical display. This, by default, filters ical feeds by date -- e.g. only include events in the ical feed after a certain date. This works fine.

The problem we ran into is how to filter the ical feed by taxonomy terms. In Views we created a taxonomy term filter and exposed that to users so they can created custom calendar views of different event categories. That worked wonderfully. The problem was that when you downloaded the ical feed from the filtered calendar view, it included all events, not just events from the categories you'd selected.

After examining the url for the ical feed we found the problem.

The default ical URL that's generated looks like this:
/aiocalendar/calendar/ical/2009-10?tid[2]=2&tid[1]=1&tid[3]=3&tid[4]=4&tid[5]=5&tid[6]=6&tid[7]=7

Views takes each url segment separated by a forward slash as arguments. "calendar/ical" tells views to return an ical representation of the calendar. 2009-10 tells views to only include events from October 2009 onward. But the next bit, "?tid[2]=2&tid[1]=1&tid[3]=3&tid[4]=4&tid[5]=5&tid[6]=6&tid[7]=7", a list of term IDs that were currently active on the calendar view, weren't working at helping Views produced a filtered ical feed.

Digging into the taxonomy term argument, I discovered it expected arguments in the form of "1+2+3" or "1,2,3". 1+2+3 meaning Views would return events that had term 1 OR 2 OR 3 and 1,2,3 meaning Views would return events that had terms 1 AND 2 AND 3. For example, "aiocalendar/calendar/ical/2009-10/1+4+6" would return an ical feed of all events from October 2009 onward that had term ids of 1 or 4 or 6.

I jumped to the command line and tested my theory by using wget and some handcrafted urls and it worked! The ical feeds I was getting only included events from categories I included as arguments in the URL.

Now the trick was to override the ical url generated to replace it with one in the correct format. I found the theme function in the Calendar module where the the ical feed icon was generated, copied that to my module, and rewrote the url using some regex kungfu (read more on overriding theme functions in the Drupal handbook).

<?php
/*
* Override theme_calendar_ical_icon() so we can override the url produced.
*/
function phptemplate_calendar_ical_icon($url) {
 
// Pull out array of Term IDs from the url.
 
$search = preg_match_all("/tid\[([0-9])*\]/", $url, $matches);
 
$tids = $matches[1];

 
// Grab url stem, we'll add the Term ID arguments back in a bit.
 
$search = preg_match("/(.*ical\/)20[0-9]{2}-.*/", $url, $url_stem);

 
$url = $url_stem[1];

 
// Views arguments treat a "+" between arguments as OR.
  // So we're crafting an argument that asks for all events which match one of the
  // term IDs.
 
foreach($tids as $tid) {
   
$url .= $tid . "+";
  }

 
// Trim off extra +
 
$url = trim($url, "+");


  if (
$image = theme('image', drupal_get_path('module', 'date_api') .'/images/ical16x16.gif', t('Add to calendar'), t('Add to calendar'))) {
    return
'<div style="text-align:right"><a href="'. check_url($url) .'" class="ical-icon" title="ical">'. $image .'</a></div>';
  }
}
?>

We'll be releasing our calendar, custom code and all, as a feature on BYU's own feature server once the new calendar is released to production. But you can grab a development copy of it now at https://island.byu.edu/content/first-upload-calendar-feature

The BYU Drupal community is collaborating to improve our calendar feature as it solves nicely a common need on the many department web sites deployed on campus. If you'd like to join the Drupal Calendar group to participate, contact me, and I'll create an account for you on our groups site.

AttachmentSize
tooltip.png94.36 KB
Submitted by Kyle Mathews on Tue, 10/06/2009 - 15:32

When in Doubt, Make it Public

Posted in | »

I recently (re)read a great post on Coding Horror which pointed me towards an article by Jason Kottke who noted that many successful web2.0 projects are a result of taking "something that everyone does with their friends and make it public and permanent. (Permanent as in permalinked.)"

Some examples:

Blogger = public email messages. (1999) Instead of "Dear Bob, Check out this movie." it's "Dear People I May or May Not Know Who Are Interested in Film Noir, check out this movie. If you like it, maybe we can be friends."

Flickr = public photo sharing. (2004) Flickr co-founder Caterina Fake said in a recent interview: "When we started the company, there were dozens of other photosharing companies such as Shutterfly, but on those sites there was no such thing as a public photograph -- it didn't even exist as a concept -- so the idea of something 'public' changed the whole idea of Flickr."

YouTube = public home videos. (2005) Bob Saget was onto something.

Twitter = public IM. (2006) I don't think it's any coincidence that one of the people responsible for Blogger is also responsible for Twitter.

I love these examples because that's exactly the same thing I'm trying to do with the social learning platform I'm building. Taking what was previously private (classroom discussions/instruction, hallway debate) and making it public, open, and permanent.

This is has many many powerful effects (all of which I won't mention right now). But one quick recent example of this principle.

One of the classes at BYU using Island this semester is ISys 401 Systems Analysis. The teacher recently got an email from a student -- and instead of answering the question through email, he decided to make his answer public and post it to the class group.

The student wrote:

Question:

Dr. Liddle,

I have read the scrum guide that is listed in the course schedule, and even looked up on wikipedia what a backlog is, but I still don't understand what exactly you want us to do for homework 3. What do you mean by create a backlog of user stories from 401? If you could even point me in the direction of where to find a more precise definition on what a backlog, then that would be helpful as well.

Thank you

[Member of the ISys Core]

Then Dr. Liddle went on to answer the question.

Whether Dr. Liddle answered the student's question through email or through posting it to the class group -- the action had the same effect -- the original student's question was answered. But what else happened as a result of making it public?

Other students with the same question got their question answered.
  • The answer became a permanent public record, with a URL -- so future discussions this year or in future years can refer back to it.
  • Students searching the site can find the discussion.
  • The teacher's post prompted other questions by students which he could then answer
  • I think the principle is clear -- "When in doubt, make it public". The effects are significant and far-reaching.

    Submitted by Kyle Mathews on Thu, 09/10/2009 - 00:15