This was a comment I left on Jon Mott's blog post, Getting From Here to There. Jon is an Academic Technology Strategist here at BYU who shares my enthusiasm for using web2.0 tools in the classroom.
I think a critical tool to have in building and proselytizing learning 2.0 tools is a key metric. This metric would be used to guide building decisions and to measure success.
In the book "Good to Great", an important event in the transitions of good companies to great companies was identifying a key metric or denominator as the book calls it.
The process of picking and using this denominator served as a mechanism to push deeper understanding of the company's economic engine. The companies asked themselves this question "If we could only pick one and only one ratio -- profit per x -- to systematically increase over time, what x would have the greatest and most sustainable impact on our economic engine?
Wells Fargo went through this process during bank deregulation:
"Consider Wells Fargo. When the Wells team confronted the brutal fact that deregulation would transform banking into a commodity, they realized that standard banker metrics, like profit per loan and profit per deposit, would no longer be the key drivers. Instead, they grasped a new denominator: profit per employee. Following this logic, Wells Fargo became one of the first banks to change its distribution to rely primarily on stripped-down branches and ATMs."
Because Wells Fargo understood their key economic drivers, they were able to a) encapsulate this logic through identifying a new denominator and b) use this logic to make many highly successful changes.
So my question is what are the key drivers of BYU's (and other school's) learning engine? What denominator or key metric offers the best insight as we plan / build / measure / proselyte new online technologies in education?
My suggestion would be conversations on learning topics per student per day.
I love Robert Scoble's (social media figure) goal to have an interesting conversation every day. Conversations with others seems an important key to learning almost anything.
My best educational experience by far here at BYU was the Information Systems Junior Core -- It's 24 credits over two semesters. I was placed in a group of four and spent eight hours a week sitting next to my group members. Almost all of our projects were group projects and those that weren't we often ended up working together anyways. Everything about the core was designed to push us students to talk to one another. A mailing list was set up for the ~110 students in the core. It saw heavy usage with students asking / answering questions about all sorts of class / ISys related questions.
The effect of all this was conversation, lots of it. Because of these conversations (and great professors / projects) I learned far more and I had much more fun than in other classes here. We talked so much about ISys / non ISys topics that many of us became good friends. I looked forward to class because I was going to see my friends.
By comparison, in most other classes I learn in isolation. I don't get to know other students very well so I don't talk much with them about the subject so I learn less and the class is much more boring.
My take on all this is we learn best with friends who are striving to become what we are striving to become.
Obviously not every classroom experience at BYU can hope to replicate what's done in the ISys Junior Core but I think much could be improved. The types of assignments given (e.g. more group work) and the integration of social software tools that make it easier for students and professors to connect online and offline would do much to help more conversations happen at BYU which would dramatically increase the quality and quantity of education.
What do you all think?
Submitted by Kyle Mathews on Fri, 07/18/2008 - 21:57
I want the Memetracker module to facilitate online conversations amongst distributed communities. For my dream to become reality, Memetracker will need help from many talented developers. This summer I'll be setting a solid foundation for future development of the memetracker module. One important thing I'll be doing is writing unit tests for all the functions of the memetracker. Unit tests, I'm convinced, is one thing Memetracker needs in order to ensure its long term success.
Unit tests are at the heart of Test Driven Development (TDD). TDD and unit tests when used have been shown to improve the quality of code and reduce bugs and regressions (see this excellent post by Robert Douglass for a full introduction to unit testing).
My brother Ben is a software engineer and has long preached to me the benefits of unit tests and TDD. When I started programming Memetracker, I agreed in principle with the benefits of unit tests but as I wanted to see something working more than write boring test code, I just dived into the coding without writing any unit tests. But as the lines of code accumulated and the complexity grew, weird bugs started cropping up and having a solid coverage of unit tests as a safety net started sounding better and better.
So I stopped coding and spent a day studying unit testing and SimpleTest (the testing framework Drupal uses). There was a painful learning curve to wrap my head around the concepts but just a few days of coding with unit tests has made me a convert.
A quick example of how SimpleTest has helped me improve the quality of my code.
Memetracker tries to present to readers the most interesting memes (conversations around a topic) to readers on a web page. To learn which memes are interesting, Memetracker records the articles people click on from the memebrowsing page. By counting clicks, memetracker can calculate an interestingness score for the different memes and from that score, determine which memes to display and in what order.
When a person clicks on a article, that information is sent from the browser to the memetracker module. In memetracker.module is a function, memetracker_set_click(), which saves the click information to a table in the database.
I wanted to make sure this function works correctly so I wrote a unit test which sent a fake click to the memetracker_set_click function and then tested that the click was actually saved to the database.
So I wrote the test. . . and it worked!
But wait a second -- I thought -- it shouldn't of worked. To save the click data a memetracker object has to be loaded which then does the actual saving of the click information. But when I wrote the unit test, I had made up an id for the memetracker object. All information for different memetracker objects are stored in the database (one website can have multiple memetrackers). If a memetracker didn't exist in the database, it shouldn't be loaded.
I had already written some code to validate that a memetracker object existed before loading but somehow that validation wasn't working. I looked at the validation code and quickly found the problem. Problem solved, and to ensure this didn't happen again I wrote a new unit test to ensure my validation code works correctly in the future.
Unit tests are valuable for any coding project longer than a few lines. Once you get past the learning curve, writing new tests are easy. And it's a great feeling after making changes to run my tests and know in seconds everything is still working as it should.
I recently made my first alpha release of the Drupal Memetracker module. You can download it from the project page on the Drupal community site.
An screenshot from the latest code:
A quick refresher on what my project is all about taken from my original proposal to Google Summer of Code.
memetracker = smart aggregator:
An aggregator is software like Drupal Planet or PlanetPlanet that aggregates related content from many sources to display in a central location. But current aggregators are dumb. The dumb aggregator knows no better than to pull in new content and order it chronologically.
A memetracker is a smart aggregator. It also knows how to pull in new content as a dumb aggregator but it's much smarter about how it displays the content. It can analyze the text of the content and know which authors are talking about the same topic and then group them together. But not only will the smart aggregator group similar topics but it will also learn what topics and authors are most interesting to members of the community and display those first. No more will you have to scroll through a long list of content skipping over content you're not interested in but instead, new content will be nicely organized by meme and interestingness in a neat compact form.
To join in the work of building an open source memetracker, join the Memetracker group at groups.drupal.org.
Submitted by Kyle Mathews on Tue, 07/01/2008 - 21:26
I spent the morning converting my blog from Wordpress to Drupal. I figured that since I build all my sites using Drupal and I'm building a memetracker module for Drupal as part of Google Summer of Code, I should switch my personal website/blog to Drupal. Wordpress is a great blogging platform but I'm glad now to be on Drupal. Drupal isn't just a blogging platform like Wordpress but a full-powered CMS that's used to power large commercial websites like Popular Science and The Onion. I've felt a little constrained in what I could do on Wordpress.
Submitted by Kyle Mathews on Sat, 05/17/2008 - 18:24
I've written before how your blog can replace your resume but I enjoyed reading another blogger's experience. I haven't had the chance yet to send my blog url instead of a resume but I have been contacted about a job once directly because of what I've written here and elsewhere.
I hated updating my resume. It is such a brilliantly inefficient medium to communicate your value proposition.
Now when situations of resumes arise, I send the url for the blog. The longer it exists the more valuable it becomes as a alternative resume.
On blogs you can’t fake it (atleast not for a very long time) and it so perfectly reflects your intelligence, your character, your values, your smarts (or lack there of) and so on and so forth. You can “fake” the piece of paper, you can’t fake a blog.
Of course the flip side is also true. If you have a great blog you might not have to go look for a job. They’ll come find you. I am sure all the bloggers in our space get at least two job offers a week. :)
And here is perhaps the nicest benefit of having your own blog (and making sure your potential new employer has it and has sent it to the interview committee): They won’t ask you silly questions.
They have a good idea of who you actually are and smart interviewers just get to the point. And that is a good thing.
I'm very excited to announce that I've been accepted to participate in the Google Summer of Code program. I will be writing memetracking software that will enable anyone to set up a Google News or Techmeme like site on any topic. Do you want to develop a news site following economic news? You can with my software. Do you want a site that tracks the latest Facebook Application development news? You can do that with my software. Read my full application for more about what the memetracker will do.
I think I'm going to start doing "link posts" more often. I run into content I think I should write about here but then never have time to write a full-blown post. Onto the links.
"Experts the world over have been shocked to discover that they were consulted not as a direct result of their expertise, but often as a secondary effect — the apparatus of credentialing made finding experts easier than finding amateurs, even when the amateurs knew the same things as the experts."
Thought experiment how universities would work without actual courses. An interesting ideas. I've often wandered if courses are the best method for learning. I know I learn far more outside of class then inside the classroom.
Every function in the child's cultural development appears twice: first, on the social level, and later, on the individual level; first, between people (interpsychological) and then inside the child (intrapsychological). This applies equally to voluntary attention, to logical memory, and to the formation of concepts. All the higher functions originate as actual relationships between individuals.
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.
Lave argues that learning as it normally occurs is a function of the activity, context and culture in which it occurs (i.e., it is situated). This contrasts with most classroom learning activities which involve knowledge which is abstract and out of context. Social interaction is a critical component of situated learning -- learners become involved in a "community of practice" which embodies certain beliefs and behaviors to be acquired. As the beginner or newcomer moves from the periphery of this community to its center, they become more active and engaged within the culture and hence assume the role of expert or old-timer. Furthermore, situated learning is usually unintentional rather than deliberate. These ideas are what Lave & Wenger (1991) call the process of "legitimate peripheral participation."
One of the most profound insights into management I've read. To manage states of unorder you make boundaries, create attractors, stabilize the patterns you desire and disrupt the patterns that threaten danger and harm. Read the story linked above then the full paper here
Seth Godin asks why bother having a resume. He says "I think if you're remarkable, amazing or just plain spectacular, you probably shouldn't have a resume at all. . . Great jobs, world class jobs, jobs people kill for... those jobs don't get filled by people emailing in resumes. Ever.
Great, great suggestions on how to think. Read the whole thing. One sample point:
Make your mistakes quickly. You may mess things up on the first try, but do it fast, and then move on. Document what led to the error so that you learn what to recognize, and then move on. Get the mistakes out of the way. As Shakespeare put it, "Our doubts are traitors, and make us lose the good we oft might win, by fearing to attempt.
Clay Shirky tells how open source software enables cheap creation of social software situated to needs of a specific community. He's ideas are partly what inspired my creation of BYU
Psychology fascinates me -- particularly how we mess up. My hope is if I understand why my psychology causes me to mess up, I'll be able to compensate. This is a speech by Charlie Munger, a wise old sage of the business world. He lists 24 reasons why humans misjudge.
Popular blogger says more traffic now comes from "smart aggregators. As there is more and more good content being posted, people are starting to rely more on social filtering.
New York Times article summarizes research that suggests your will power can be strengthened by exercising it, much as a muscle.
In psychological studies, even something as simple as using your nondominant hand to brush your teeth for two weeks can increase willpower capacity. People who stick to an exercise program for two months report reducing their impulsive spending, junk food intake, alcohol use and smoking. They also study more, watch less television and do more housework. Other forms of willpower training, like money-management classes, work as well.
Submitted by Kyle Mathews on Thu, 04/17/2008 - 18:43
I propose to write two modules for Drupal as part of Google Summer of Code. One called memetracker and the other called machinelearningapi. The memetracker module will use algorithms in the machinelearningapi to intelligently filter and group content from designated content sources both internal and external. The module's purpose is to find and display to a community in real time the most interesting conversations and memes within the community as they emerge.
My project will emulate functionality of successful commercial memetrackers such as Techmeme, Google News, Tailrank, and Megite. It will be an open-source implementation of memetracking technology that can be easily plugged into Drupal-based community sites.
The memetracker module will solve a common problem faced by many online communities. Perhaps the best way to explain the value of my module is to explain my experience with this problem and how the memetracker module will help solve this problem.
What's my Problem?
For eight months now I've been building social learning websites for classes at Brigham Young University where I'm a graduate student. Working with a few professors, I build websites for their classes to be used as a learning tool by them and their students. Our goal is to understand what web2.0 tools / principles help most in education.
Any online community, like the ones I create for school, generates lots of content and conversations. As a community grows, a problem that soon emerges is how to help individual members find the content/conversations they are most interested in. If there's only a few members in the online community, it's easy to follow every conversation. But if there's 100s or 1000s of members, it soon becomes impossible to follow or find every interesting conversation. This dynamic sets an upper limit on the number of members for most online communities.
In researching ways that online communities help participants find the most interesting content/conversations, I've found three patterns which help.
First is the small-world pattern. Via Organic Groups, you split conversations by topic. Members congregate around only the groups they are interested in.
The third pattern is for members to read the most interesting memes as they are somehow determined by the community (this is where my module will help out).
Drupal sites normally implement the third pattern by having human editors manually promote the most interesting content to the front page. But I've found this solution to be inadequate. Human editors miss many interesting pieces of content, are prone to bias, and the solution is labor intensive. Also, promoting content to the front page doesn't group the content by conversation or meme, an important usability improvement.
A much better solution for finding the most interesting memes are tools called memetrackers like Techmeme, Google News, Tailrank, Megite, and others. These memetrackers automatically find the most interesting content bubbling up in the blogosphere. Using these memetrackers, individual news readers can find in minutes the best content from 1000s of sources.
As the principle tech memetracker, Techmeme plays a hugely influential role in the tech community. Techmeme is the place to find conversation about the biggest tech memes of the day.
But at the moment there are only commercial memetrackers such as Techmeme. There are no free or open-source implementations and certainly nothing that can be easily plugged into Drupal.
My proposal then is to write a memetracker module that will fulfill the same role as Techmeme does to the tech community for any community for which it is installed. My module will intelligently filter and group community generated content to display to the community in real time the most interesting conversations and memes as they emerge.
Potential users of my module can be placed in a few classes:
Those building community sites using Drupal. They face the same problem I related in my story earlier – how to help their users sift through new content and to find interesting conversations to follow and join in.
Those who want to build sites that support an existing online community. They would use FeedAPI to pull content from any number of relevant sources and then use memetracker to display interesting content and conversations from that community.
Users who use Memetracker as a personal news aggregator. They'd add news sources they are interested in and memetracker would learn their interests and filter and display only the news they are interested in.
Organizations who use Memetracker as an internal news gathering application pulling together content created by employees internally and outside news that's of interest to the company.
Those who want to create a sitemap-like page for their site. Memetracker would create a page that showed all content ever created on the site and group by meme and order by popularity.
Organizations who want to create a branded news site. Utah Tech Council could put up a memetracker aggregating local newspapers and blogs that discuss Utah technology news. The Save the Dolphins Foundation could aggregate dolphin news from different news sources. Memetracker would help these organizations by drawing repeat visitors to view the aggregated content. It would be an advantage to Drupal as more sites would use Drupal to use the memetracking functionality.
The memetracker module will be especially useful to open source communities. Open source projects rely entirely on internet communication technologies to coordinate their efforts. Many commentators have linked the explosion of the open source to the opening of the Internet to the general population. Memetracking and aggregation sites in general are another step in the evolution of communication technologies on the internet. My memetracker module will allow any open source community, large or small, to put up a simple Drupal site and start aggregating developer blogs, forums, mailing lists, etc. into a centralized place.
Another analogy: memetracker = smart aggregator:
An aggregator is software like Drupal Planet or PlanetPlanet that aggregates related content from many sources to display in a central location. But current aggregators are dumb. The dumb aggregator knows no better than to pull in new content and order it chronologically.
A memetracker is a smart aggregator. It also knows how to pull in new content as a dumb aggregator but it's much smarter about how it displays the content. It can analyze the text of the content and know which authors are talking about the same topic and then group them together. But not only will the smart aggregator group similar topics but it will also learn what topics and authors are most interesting to members of the community and display those first. No more will you have to scroll through a long list of content skipping over content you're not interested in but instead, new content will be nicely organized by meme and interestingness in a neat compact form.
Project Details:
To help you understand how the memetracker will work, I'll walk through the steps the memetracker will take from first aggregating new content to finally outputting a view to the user.
High level overview:
The memetracker will assemble content from two sources (internal content through Drupal and external content through FeedAPI). It will then analyze the content to identify active memes. Then, using what the memetracker has learned from the click history, the memetracker will decide which memes to display and which to discard and which order to place the memes on the page (i.e. the most interesting memes will be at the top). UI code will be written to display the memes in an easy-to-browse fashion.
Detailed Overview:
A particular memetracker is tracking 100 sources (30 are blogs on the Drupal installation and 70 are various blogs and other news sources you are aggregating with FeedAPI). In the past two days, the 100 sources have created 300 pieces of content. The first pass through the 300 pieces of content will be to find memes. First it will check for interlinking between content -- this indicates they are discussing the same meme. Second it will perform textual analysis on the titles, bodies, and tags of content to determine how "close" text is to each other (cluster analysis).
In my example, say the algorithm identifies 10 meme clusters in the 300 pieces of content. 80 of the 300 pieces of content are part of the 10 meme clusters leaving 220 individual memes, not associated with any other content.
You've set the memetracker to only display ~50 memes at a time as the memetracker is tracking a smaller community. This means the memetracker has to discard 250 links from the display page. It does this filtering by various means.
The memetracker is biased toward keeping meme clusters (remember the goal is to display the most interesting content -- if two people thought a meme worth writing about, odds are that meme is more interesting to the general community than a meme that only one person talked about) So the memetracker will weight meme clusters higher.
It will use a form of authority ranking for the different sources. If one blogger consistently writes interesting content that many people click on to read, then the memetracker will rank any new content by that blogger higher than new content by a less interesting blogger.
You'll filter out topics not interesting to the community. Baysian logic is a possible way to do this. Baysian logic is often used for spam filtering. So just as spam filters learn that emails with "XXX" or "Hot chicks" probably are spam. If the community consistently clicks to read content about Drupal and not Plone, a new article about Drupal will be displayed and the Plone article won't.
The meme tracker will use click momentum. By this I mean it'll take a measure of how many times the content has been clicked on in the last while. If an article is being clicked on a lot, that suggests the article is more interesting to the community and should be moved up on the page.
I will implement a hook that will let other modules set simple rules to affect the filtering and ordering of memes. For example, if content from one source must always be displayed, say blog entries from the CEO (regardless of how interesting the CEO's blog actually is), you could set a rule that content from this source will always be kept and not filtered out.
So once the memetracker has grouped and filtered content down to the proper level. It'll pass data to the UI code to be rendered and pushed out to the browser.
Viewing Memes:
There will be two ways (initially) to view memes. First via meme browsing pages that admins define or via custom views of data exposed by memetracker.
Admins will be able to define meme browsing pages in a process similar to creating a new panel page. When creating a new meme browsing page, you will define the page url, what sources to include (different Drupal content types, external sources from FeedAPI), and a number of settings for the page such as how long to keep old memes before refreshing and the number of memes to display at a time.
Individual meme browsing pages will look similar to Techmeme with main articles, discussion, and related content:
Screenshot from Techmeme -- My memetracker UI will look similar.
How is memetracker different from other content recommendation engines on Drupal?
There is some overlap in functionality but a large difference is in purpose. Other content recommendation engines for Drupal recommend similar or related content in the context of a single node. Memetracker also recommends content but en masse. It focuses on conversations – what are people saying now about all the current hot topics. Not what did someone say about the topic of the current node six months or two years ago.
How will the memetracker learn to filter and group memes?
The SoC application template asks what aspects of my proposal depend on further research or experiments. The machine learning portion of my proposal, much more than any other part fits this criteria. Machine learning is actively researched and many algorithms are now well understood. However, deciding on the correct algorithms that will fit the constraints of a web application (fast response times, low resource usage) will take considerable research and experimentation. But while the specifics are still unknown, the general direction I'll take is clear.
The general machine learning technique I'll use is called reinforcement learning. Reinforcement learning is that the algorithm learns by making a guess and then gets feedback. If the guess is good, that “state” of the algorithm is reinforced, if the guess is bad, that “state” is weakened. The algorithm gradually learns what states are most appropriate to a given situation. So in the case of the memetracker, it will guess what memes are interesting to the community and what order to place the memes on the page. Then based on feedback from the community (I.e. if links are clicked on or not clicked on) the memetracker will learn gradually how to select and display the most interesting content.
There are two major machine learning problems to be solved. Filtering out uninteresting content and clustering or grouping content into memes.
When filtering, the machine learning algorithm basically has to answer the question, will this piece of content on this topic written by this author be of sufficient interest to the general community to include on the Meme Browsing page? There are a number of algorithms that I've looked at to answer this question including naïve bayes, backpropegation, and support vector machines. Each will filter adequately for the memetrackers needs, the question to answer is which will perform best.
The second machine learning problem, clustering or grouping content into memes is more straight forward to solve. I'll use a technique called agglomerative clustering. This algorithm starts with each piece of content as part of its own meme. It then determines if individual memes are actually part of a larger meme. To do this you set a “closeness” threshold. If two individual memes are closer than the threshold, the two memes are joined together into a single meme. The algorithm loops through the content joining small memes into larger memes until no two memes are closer than the “closeness” threshold.
Using the above two techniques plus reinforcement learning will create a memetracking system that adapts itself to the needs of the community it supports.
In implementing these algorithms, I'll have the support of the excellent machine learning faculty in the Computer Science department at Brigham Young University. I've talked to one professor extensively about my proposal and he (and most likely one of the other professors and several graduate students) is willing to mentor me as I write the machine learning code.
Deliverables:
These will be my deliverables at the end of the summer:
PHP library of Machine learning algorithms:
I will write the machine learning algorithms as a PHP library. The library won't be coupled to Drupal so will be portable to other open source PHP projects.
Machine_learningAPI module:
This module will provide a wrapper for the machine learning algorithm library.
Memetracker module:
This module will have several major components:
Meme browsing UI – this will be the primary view for browsing memes. It will be refreshed each cron run with new content.
Panels-like meme browsing page creator – You will be able to create any number of memebrowsing pages. When you create a new memebrowsing page, you set how long memes stay active, you set how many memes to show, and can weight the display / ranking of memes in a variety of ways.
Two hooks:
The first hook will allow other modules to modify how content is ranked. I gave an example in the project details section of how a company could modify the score of their CEO's blog. Another potential use case is an ecommerce store might analyze content for text that mentioned their products and rank those higher.
The second hook will allow other modules to add functionality to meme browsing pages. Modules would define little ajax buttons to be added next to memes. There could be for example a send article to friend button, a save to delicious button, a bookmark button, a digg button, and other buttons that let you interact with the content.
I will write documentation for developers explaining how to use the two hooks and documentation for website operators explaining how to configure and set up a memetracker on their site.
Tests:
I will write a complete set of tests for the memetracker and machinelearningapi modules
Project Schedule:
I'm done with classes by the end of April and plan to start working on GsoC immediately. In the first 2-3 weeks of May, I will write a very rough version of the UI and machine learning code.
In the spirit of release early, release often, I will install memetracker on a public facing website. I will then put together many many memetracker pages to track different communities of bloggers and other online communities. I'll create memetrackers for econ bloggers / liberal bloggers / conservative bloggers / edubloggers / content from the Drupal community / content on the Joomla community / Ubuntu bloggers / and many more.
My goal is to get lots of attention from these different communities so as many people start regularly using the memetrackers. Achieving high traffic is key as it will enable me to rapidly test my algorithms and iterate through 100s of variations of the machine learning algorithms. Also, building memetrackers for many types of online communities will ensure my algorithms will work well over a wide variety of content and community types.
I'll be working mostly on improving the machine learning algorithms through the latter part of May and all of June. By the end of June I hope to have gotten the machine learning code to a very mature state.
From there I will turn my efforts to bug fixing, filling out test coverage, documentation, and improvements on the admin UI and meme browsing UI.
Risk of failure:
Low. Writing a working memetracker is not difficult. The devil, as they say, is in the details. Building a great memetracker is a very difficult task. I won't have built a great memetracker by the end of the summer. Instead, my plan is to lay the foundation and build many of the necessary pieces so that with these pieces and a great deal of refining, eventually great memetrackers can be built. But I fully expect to have an adequate memetracker working at the end of the summer that will meet my needs and many others.
If writing this module does prove more difficult than I anticipated, I will limit the scope by cutting first the second hook, and then the views integration. Both of these are very nice features but not essential to creating a working memetracker.
Biography:
Hello Drupliers. My name is Kyle Mathews and I'm passionate about social software. I love to create software/web sites that help people connect, learn, and work together. I'm a grad student in Information Systems at Brigham Young University working as a research assistant to several faculty members. We are studying how and where social software can be used in education.
For my major, I've taken classes on programming, database, systems analysis, and project management. I've studied Java and Python at school and learned PHP while working with Drupal. I use open source full time. I've run Linux (Ubuntu) on my laptop full-time for the past two-years. Open source fascinates me both as a user and as a researcher of online communities and organizational behavior.
Some other experience. I wrote a web application in Java last summer for Novell. The application queried a number of large databases and assembled and displayed information for a variety of reports used by a marketing team. I was the only developer working on the project and it took most of the summer to write working part-time.
A bit about how how I became involved with the Drupal community and the path that led me to now apply for Google Summer of Code.
I first used Drupal a year and a half ago. I debated for several months whether I liked Drupal or Joomla better before settling on Drupal. Drupal's clean architecture was the deciding factor. I built my first production website last year using the Ubercart e-commerce module to sell t-shirts for a company some friends and I started.
My involvement and understanding in Drupal started to advance last summer when I started working as a research assistant at BYU. Since starting that job, I've built a number of classroom websites using Drupal (isyscore, web analytics site, g.d.o. like site for all Information Systems students) wearing down my copy of “Pro Drupal Development” in the process. I've learned a considerable bit about Drupal in the past year and a half, became very involved in the community, and am writing a module (writing_assignment -- still a work in progress btw). I've loved most everything about Drupal but wish Drupal could do memetracking, an important component for building the perfect social learning website. This itches. So, in the best open-source fashion, I'm applying to Google Summer of Code to scratch my itch.
Submitted by Kyle Mathews on Fri, 04/04/2008 - 23:03
My current job is researching the best use of web2.0 technologies and principles in the classroom. I and the other researchers use web analytics extensively in evaluating the effectiveness of websites we build. This post is the first in a two-part series about why and how to use web analytics for your social learning website.
This first part explains a bit about what web analytics is and why you should use it.
Why web analytics
All websites have a reason for existence. Depending on the site the reason could be to make money, provide leads, provide support, teach students, etc. Using web analytics helps you achieve your site's purpose in two ways:
Using web analytics, you can measure the experience and behavior of visitors to your website. Using what is known as KPI (Key Performance Indicators) you can evaluate if your site is meeting your goals for visitors to the website -- or not.
Using these KPIs you can identify areas where your site is failing to meet its goals and where it's doing well
From these insights, you make decisions on what to do to improve the website. Then you evaluate the success of your changes by measuring changes in the experiences and behavior of visitors to your site, again using your KPIs (I'll write more about KPIs in Part II).
In short, web analytics exists to power the generation of actionable insights.
Web analytics seeks to measure three things
Behavior? -- What visitors do on the website -- how often do they visit, what pages do they visit most, how long do they stay on different pages?
Outcomes -- all websites have desired outcomes. The exact desired outcome varies site-to-site depending on its goals. Some sites want visitors to sign up as members. That's one outcome. An e-commerce site's desired outcome is a purchase. A support site's desired outcome is for the visitor to find the answer to the question they had.
Experience -- answer why the visitor did what they did.
Why did the customer add an item to his shopping cart, go through all the steps of the checkout process and then leave the site? Did they find the same item for cheaper on another site? Was the shipping price too high?
Similar questions can be asked about a social learning site. Why doesn't one student ever visit the site? Why does another student visit twice a day. Why does a student do what they do?
In my mind, the third thing is most important. It's nice to know that a student spent an hour looking at online learning content but we'd really love to know why they did it. Did the student spend the hour because they were studying for a test? Were they finishing an assignment? Is the material helpful? What material is most helpful? Do they enjoy learning with the material?
So behavior and outcomes give you the raw data about what's happening but experience helps you understand visitors in a more holistic manner. Understanding experience gets you into the mind of visitors to your site. Why they do what they do.
Recap
Web analytics help you improve your site in the following manner.
Web Analytics provides you with information to understand what visitors do on your site and why.
Using this information, you identify weakness you can correct.
You experiment with potential improvements and test your changes using your web analytic data.
Repeat starting at step 1
Part I explained what web analytics is and why it is valuable. Part II will explain step-by-step how to use web analytics on a social learning site. I will explain the process I'm going through to implement web analytics on a new social learning website I'm building for BYU.
Submitted by Kyle Mathews on Thu, 03/27/2008 - 16:27
I like to find (a) simple solutions (b) to overlooked problems (c) that actually need to be solved, and (d) deliver them as informally as possible, (e) starting with a very crude version 1, then (f) iterating rapidly.
To add a few thoughts.
When I think of overlooked problems I think of a bell curve. Most people/companies/countries are average: thinking average thoughts and doing things in an average way. Their average thoughts/actions lead to average results. If you want exceptional results, you have to act and think in ways that are exceptional. Average=dead, the edge is where the action is at.
Submitted by Kyle Mathews on Tue, 02/19/2008 - 01:51
Recent comments
3 weeks 5 days ago
3 weeks 6 days ago
3 weeks 6 days ago
4 weeks 3 days ago
7 weeks 5 days ago
9 weeks 1 day ago
11 weeks 4 days ago
11 weeks 5 days ago
11 weeks 5 days ago
21 weeks 6 days ago