Motivating Math

mathematics is a language designed to express certain types of concepts. learning mathematics without knowing (being excited about) any of those concepts, is like learning a language without having anything to say. It’s kind of silly. we should motivate the desire to speak mathematics by first exploring ideas in our native (natural) language. As it becomes clear where that native language fails to capture or express these new ideas, the motivation for the new language can emerge. Instead, we tend to teach mathematics concurrently with, or worse, sometimes instead of, these conceptual ideas.

maybe assessment doesn’t need to scale

perhaps in an economy with a greater diversity of jobs and services, you don’t need assessment and credentials to scale.

in a world where the norm and the nature of the skills sought is creativity, then you CAN interview every applicant- because there’s only really a handful anyway. in this world, the task becomes finding easy ways to hone in on that handful.

given that task, i actually don’t even WANT a generic, scaled assessment. it doesn’t help me to know that you have a masters in economics. it helps me to know you run a meetup group that discusses the theory of money, write insightful blogs posts about bitcoin, and have worked at your current job building virtual currency exchanges for online platforms.

seen from a business perspective, this isn’t about massive companies like Ford and GM competing against each other. it’s about highly specialized companies like relayrides competing against uber or zipcar. in this world, very fine-grained and responsive credentials are what would be valuable. this is what ideas like badges and distributed endorsements could provide.

Distributed Endorsements

Concept outline

Distributed Endorsements are peer-generated tags indicating a quality or skill of the earner. “Endorse” buttons can be included on any website. Visitors compelled to endorse, can specify one or more appropriate tag(s). The set of all endorsements received by an earner forms a necessarily fuzzy picture of their skills and qualities. Part of the idea here is a recognition that such things are inherently statistical. And that there is perhaps more power in numbers than in details.

Specifically, it could work as follows:

  • there are one or more badge issuers
  • people who want to include endorsement buttons embedded with the content on websites, sign up for a badge account with one of the issuers
  • issuer gives them an snippet of code for an ”endorse” button, which they can embed on their site(s).
  • when visitors click that button, it allows them to specify arbitrary endorsement tags (“python”, “management”, “inspiration”, “napoleon” etc.) through a small popup form
  • hitting enter submits those endorsement tags to the issuer API which generates the necessary JSON and stores it in the earners badge “backpack”

finer points:

  • IMHO the badge issuer should function more like a public key server – a public endorsement server.
    • one can upload their public key to many public key servers.
    • ultimately, these distributed endorsement servers could even be federated – ie, if i am registered with endorsement server A and you with server B,  it shouldn’t matter which one i ping to retrieve my credentials, as they have some kind of eventual consistency.

questions

  • presumably there should be a way to prevent someone from giving a specific tag for a specific piece of content more than once. eg. by having endorsers sign, either with their email or a public key.
  • what if you disagree with an endorsement? can you delete an endorsement?

example json format (taken from Mozilla open badge assertions spec), one for each tag:

{
  "recipient": <sha256 hash of earner email, prepopulated>,
  "salt": <random word>,
  "evidence": <url where the endorsement button lives>,
  "issued_on": <today's date>,
  "badge": {
    "version": "0.5.0",
    "name": <user-generated tag>,
    "image": "/path/to/some/img.png",
    "description": "optional user-generated or default text",
    "criteria": "/endorsements/criteria",
    "issuer": {
      "origin": "http://issuer.endorsements.com",
      "name": "Distributed Endorsements Server",
      "contact": "admin@issuer.endorsements.com"
   }
  }
}

if a visitor to a site chose to elaborate on why they were assigning a given tag to the earner, that would be stored in the description field.

hacker culture/science culture

scenarios from hacker culture that inspire ideas around open science and “bringing science to the web”:

  • sharing code
  • meeting another developer and having a shared language, immediately riffing about your projects, tools, techniques
  • ability to browse and fork peoples’ projects
  • a cultural freedom and celebration of new and different framings of existing ideas
  • technical blogosphere – infinite number of arbitrary-diversity blog posts and online content about different ways people have approached a given problem.
  • no notion of scarcity.

projects that could bring this to science?

  • micromentors
  • github for research projects
  • blog posts as small incremental learning reflections
  • hello world examples for science

isnt it interesting that in software, it’s one of the few areas where teaching makes you revered – it isn’t seen as “those who can’t, teach.” at the same time, those who are respected for teaching programming, DO programming. so they are posting about their learning as small incremental reflections, not as someone ABOVE it, but IN it. not as outsiders but as insiders.

in software, everyone was a beginner when the web started. so the idea of posting simple content was more easily accepted because it was genuinely new for all involved. if no one had ever posted hello world code before, and tried to start today, they might be ridiculed. was the emergence of an open learning community in the software world, a chaotic, opportunistic side-effect of the medium and the message (content) emerging and then evolving at the same time?

where and why of learning on the web

someone has some material they would like to share, so others can learn/share in that knowledge. when/why would they put it on p2pu.org versus, say, just making a series of blog posts? for example, i was mulling over a course on “citizen science in context.” i started off thinking about putting this on p2pu. my reasoning goes something like as follows: – i want to create this content

  • if i put it on p2pu.org, then i have to maintain it
  • ie, there is social overhead – is an expectation that social interaction around that content will be available. that when people come to that course page, that there are others there.
  • there is also overhead for *others*. now, in addition to the investment they would be making in reading/consuming that content, they is also a social expectation, almost pressure, to participate. this is “work” in many cases. why would they do that if a) they can just consume the content as a non-participant, more at their own pace and in their own way, and b) even if they desire social interaction, there is no guarantee that such interaction will be active at the moment around that content?

ideas this made me think of:

  • could we have learning content on blogs but have a “discuss” link back to p2pu where an optional discussion takes place? like a “tweet this” or “g+” button, but instead, “learn this”.
  • could “learn this” actually hook back into a more sophisticated process than just a discussion? could a badge be earned through this? could it be a structured reflective practice?
  • something i like about this is that is distributes learning around the web, implicitly recognizing that learning IS the web, is and happens everywhere– not just on p2pu or any other learning/course site. then again, what’s wrong with comments that already exist on the blog itself?
  • suggests that the point/benefit of p2pu is for active social learning experiences. that static content without an active group around it perhaps maybe doesn’t even belong on p2pu– or at least, the option to participate isn’t very compelling without it.
  • but continuous/ongoing interaction is actually a very challenging thing to maintain.
  • the mechanical mooc idea is great in this respect, but a little lonely still. hence the idea of cohorts.
  • feel this line of through deserves more reflection. specifically, what is it that makes “taking a course” (on p2pu or anywhere) not just compelling, but actually worthwhile?
  • my thoughts (not necessarily all required)
    • the dialogue and discussion that comes from sharing the experinece with peers
    • feedback from peers and mentors
    • recognition of your participation in some way (though not at all necessarily in a traditional way). badges are interesting but underdeveloped IMHO.

learning cycles

activities that tie into our experiencesthen extend our experiences
that prompt us to ask questions
which motivates the need/desire to learn further.
and takes us in a new direction
to new activities that tie into our experiences
then extend…
weaving our random walk towards some common direction

Learning as a Spectrum

Lately I’ve been asking myself, What is the line between learning and just… being. When does something become learning? Especially in open learning, there isn’t as much of an (artificially enforced) line desgnating the beginning and end of “learning.”

Of course, really it’s a spectrum. There are gradients of learning. An activity is not JUST learning or JUST not-learning. It is not binary. And the way that learning emerges is also not just that some switch is flipped and you are or are not in learning mode. A spectrum in space, and in time.

With respect to P2PU, is the goal (or should it be) to provide a place “for learning”? By designing our community around courses and study groups and challenges, are we drawing (and accidentially enforcing) artificial boundaries, reinforcing old notions of learning as a discrete activity, separate from Everything Else? What does “a place for learning” even mean, when often we don’t even know to what extent a given activity will involve learning or not!

Going back to the notion of a “reflective practice” from Minds on Fire (PDF), perhaps a different way of looking at peer-based learning would to focus on providing a space for reflection amongst peers, when and as learning does occur. A place where we are not trying to define and capture the structure of a learning activity, which happens everywhere and anywhere, but instead, a place to get and give feedback, advice and perspective on whatever the learning activity is. What would that look like, what features would it have?

Alison in her barista-glory.

At P2PU, Philipp is a mustard maker and Alison is an award-winning barista. An example I keep coming back to in my mind is, why doesn’t Philipp have a mustard makers group on p2pu? why doesn’t alison have a coffee group? These are both activities that they have pursued, learning techniques and cultivating expertise. What would it look like to have a space online where those activities could naturally and organically translate to a reflective learning practice. Not to atificially introduce a bunch of overhead in the form of social interaction, but to provide real value-add for Philipp and Alison (and in turn others who want to be mustard makers and coffee brewers).

statusnet install 1.0.1 on nginx

(warning: rough notes!)

create nginx config file/apache rewrite rules BEFORE running install.php script (googled this and it was pretty straight copy-paste from what others have done for nginx). the rest of what follows is with nginx, FWIW.

nginx virtual host config. note the try_files and rewrite directives replace the apache mod rewrite rules. i think the theme location is redundant, but not 100% sure.

server {
       listen 80;
       server_name social.p2pu.org;
       root /srv/www/p2pu.org/social;
       access_log /var/log/nginx/social.p2pu.org_access.log;
       error_log /var/log/nginx/social.p2pu.org_error.log;

       index           index.php index.html;
       fastcgi_index   index.php;

       location /theme {
            root   /srv/www/p2pu.org/social;
        }

       location ~ .php {
                include /etc/nginx/fastcgi_params;
                keepalive_timeout 0;
                fastcgi_param   SCRIPT_FILENAME  $document_root$fastcgi_script_name;
                fastcgi_pass    127.0.0.1:9111;
       }

       location / {
                try_files $uri $uri/ @statusnet;
       }

       location @statusnet {
                rewrite ^(.+)$ /index.php?p=$1 last;
                break;
       }

}

for some reason statusnet still creates the config variable

$config['site']['path'] = &quot;install.php&quot;

which is obviously wrong. this results in the first user getting a profile url (stored in the db!) which contains install.php as a prefix, eg.:

<a href="http://social.p2pu.org/install.php/jessykate">http://social.p2pu.org/install.php/jessykate</a>

(there is a little hint in the install docs about urls being stored in the DB (side note: urls– IN THE DATABASE?! oh god, php, this is why i fear you).

but once the fancy urls are working, NEW users’ links are ok… so, to fix that first admin user’s links, we can just hack the db… login as root or the statusnet user an investigate:

mysql> use p2pu_statusnet;
mysql> show tables;
mysql> describe user;
mysql> select nickname, uri from user;
+-----------+-------------------------------------------+
| nickname | uri |
+-----------+-------------------------------------------+
| jessykate | http://social.p2pu.org/install.php/user/1 |
| jessytest | http://social.p2pu.org/user/2 |
+-----------+-------------------------------------------+
2 rows in set (0.00 sec)

aha, see the uri field for the first user…! there’s also the profile table:

mysql> describe profile;
mysql> select id, nickname, profileurl from profile;
+----+-----------+----------------------------------------------+
| id | nickname | profileurl |
+----+-----------+----------------------------------------------+
| 1 | jessykate | http://social.p2pu.org/install.php/jessykate |
| 2 | jessytest | http://social.p2pu.org/jessytest |
+----+-----------+----------------------------------------------+

these are the only two i found… so, let’s update them:

mysql> update user set uri="http://social.p2pu.org/user/1" where nickname="jessykate";
Query OK, 1 row affected (0.01 sec)
Rows matched: 1 Changed: 1 Warnings: 0

and double-check the change:

mysql> select nickname, uri from user;
+-----------+-------------------------------+
| nickname | uri |
+-----------+-------------------------------+
| jessykate | http://social.p2pu.org/user/1 |
| jessytest | http://social.p2pu.org/user/2 |
+-----------+-------------------------------+
2 rows in set (0.00 sec)

and the other one:

mysql> update profile set profileurl="http://social.p2pu.org/jessykate" where nickname="jessykate";
Query OK, 1 row affected (0.00 sec)
Rows matched: 1 Changed: 1 Warnings: 0

verify:

mysql> select id, nickname, profileurl from profile;
+----+-----------+----------------------------------+
| id | nickname | profileurl |
+----+-----------+----------------------------------+
| 1 | jessykate | http://social.p2pu.org/jessykate |
| 2 | jessytest | http://social.p2pu.org/jessytest |
+----+-----------+----------------------------------+
2 rows in set (0.00 sec)

voila. double check by checking the links on the directory page, and we are done.

Reflections on Challenges

Vanessa and i had a back-and-forth this week, reflecting about P2PU’s
learning concept called challenges. for context, p2pu currently separates
content into groups and challenges. challenges are sets of explicit tasks that
peers mark as complete and can obtain badges (and potentially other types of
recognition) for completing. groups (study groups, courses) use challenges when
they want to demonstrate specific knowledge, skills or capabilities. recently,
i wrote an introductory programming challenge, and vanessa (together with
Audrey Watters) is running a challenge about writing for the web.

one observation i’ve made while exploring participation in challenges is that
there are many challenges that are interesting to read but i don’t see the
point or value in completing the specific tasks as laid out. i end up wanting
to pick and choose from the items– and i do. this suggests why i think many
people never finish challenges. the pattern is, we see a challenge where the
first few tasks appeal and are accessible to us, so we follow/adopt the
challenge, and then the later ones don’t resonate as much, or aren’t as easy,
so we don’t complete them. participation peters out.

we are often designing tasks within challenges to become progressively harder,
but challenges aren’t meant to teach you stuff (that’s what groups, and the
web, and life, are for), so even if in the best case scenario your challenge
inspires people to go off and do or learn something new, you’re still basically
losing your audience at that point.

both of these issues relate to a key assumption that i am beginning to feel is
wrong: that we need to keep people’s attention. learning is an incredibly
personal thing. the best way to offer flexible learning pathways is to make
each discrete learning unit as small as possible, allowing the learning path to
evolve and iterate. vanessa refers to resnick’s learning spiral, which
iteratively revisits the steps imagine --> create --> play --> share -->
reflect --> imagine ...
. one way to see challenges is as discrete opportunities to
demonstrate learning at each iteration through the cycle.

one approach to this would be to have single-task challenges. these could be
larger in scope, and correspondingly more open-ended. for example, focusing on
the output but not the methodology, or the methodology but not the output.
being more open-ended would encourage a broader diversity of approaches. it
also scales better because it creates less work for the challenge mentors: with
the Twitter API challenge, i spend a lot of time ensuring that everyone who
posts to the first “introduce yourself” task feels welcome. but most of that
work goes unrewarded, with most people never completing the subsequent task
(it’s fairly clearly an exponential falloff rate).

with a single-task challenge, mentors get to spend their time interacting with
peers about their ideas and content. and importantly, there is no
expectation by either the mentors or participants about retaining participants’
attention. the main difference from our current approach is that the unit of
accomplishment and recognition is tied to this single task.

a practical example of my own participation waning came up when i decided to
adopt vanessa and audrey’s exciting writing for the web challenge. i like
writing for the web, and the idea of having a community of peers around doing
that. i think i could show that i have done a certain amount of writing for the
web and have basic proficiency at it. but some of the specific tasks laid out
in their challenge interest me, while others do not. or maybe it just happens,
for example, that i don’t have a blog post i want to critique. can that
tell us something about challenge design?

the problem, of course, isn’t that writing a critique is a bad exercise. it’s
that it’s one of many possible exercises that would be equally appropriate. but
because challenges are broken down into tasks, we tend to make them extremely
prescriptive
. and yet we know– in fact, arguably p2pu is founded on the
idea– that there are arbitrarily many paths to a given level of proficiency.
this suggests that we should be experimenting with less prescriptive
challenges, challenges that are more open ended, and expecting more from our
peers.

as kimo said in there’s no speed limit “the standard pace is for chumps -
the system is designed so that anyone can keep up.” when i designed the twitter
api challenge i definitely fell into this trap. i was actively trying to
ensure that anyone could keep up. that’s not bad in and of itself; what’s bad
is that our notion of “keeping up” is rooted in a system where inspiration is
the exception, not the rule. the result is that learners are babied and the
challenge is less fun. it turns the participants into consumers instead of
creators, and we reinforce the very cycles of dispassionate, passive learning
we are trying to move away from.

on the other hand, when learning new stuff on the web i definitely seek out
detailed summaries and step-by-step introductions. it’s not that providing
detailed breakdowns is a problem. it’s the assumption that those breakdowns
should map in ANY way onto actions taken by the learner
. that is, the problem
is that we turn breakdowns into prescriptions. this limits our learning
material and processes to introductory levels of learning, limits the
sophistication of ideas we can achieve together, and correspondingly limits our
community, too.

in summary, my takeaways after working with challenges for a few months are the
following:

  1. create single-task challenge content
  2. separate action from consumption: absolutely do create rich and
    detailed learning materials, but offer it as guidance instead of
    prescriptions.
  3. create a cultural emphasis on mentorship and recognition

i’m feeling pretty excited about these conclusions, and have gone ahead and
tried a new challenge in the single-task format. the third item on the
list above now becomes even more important, because it keeps the community
element focused squarely in the group aspect of p2pu– which is exactly what it
was designed for.

Science Markup

This post builds off this earlier one on open science microformats.

Microdata appears to be a middle ground between microformats and RDFa. It’s not
totally clear if RDFa and microformats will ultimately be inter-compatible, and
there still seems to be a lot of debate about which one to support, if both
should be supported, both changed to support each other, etc.

In the meantime, they’re not actually that fundamentally different. I’d
like to start working on the approximate markup for capturing basic science
objects within a webpage. We should be able to represent the key objects in both
formats.

General development goals:

  • Agree on some core open science objects
  • Put a spec together
  • Develop creation tools (markdown syntax, TinyMCE, wordpress plugins, liquid tags, etc.)
  • Provide a validator
  • Develop consumption tools which can read the markup
  • Develop discovery tools and a reference website which can injest and cross
    reference between these objects

This is a post with some thinking about how to get started, and some specific
ideas. It’s all exploratory at the moment – a work in progress.

Features and Implications

All objects should have timestamps so they can be ordered temporally. They
should also have license and, optionally, attribution fields. It might be
interesting to experiment with self-certifying (ie, secure) research objects
(cf. zooko’s triangle). You can’t ever prove
that a similar idea has not been proposed before, since that is a function of
the absence of information. But if you make the url for the research object
into a hash that includes author and content information, then someone couldn’t
for example copy the object and just change the author field. They could do
this and change the url, but then they would break links to that object, which
would show that it was a) new and b) not the same as the object others were
linking to. It’s not perfect, but it’s something.

Using timestamps associated with discoverable hypotheses and questions, you
could imagine similarity analysis identifying otherwise unknown, or early
instances of an idea, tracking progeny, or even calling attention to plagiarism.

The Mozilla badges project uses the notion
of issuers. i’m not sure that’s
quite what we want in the science world, but imagine a service for registering
certain ideas and pieces of work. Almost like a certificate authority-type role
for science, where anyone could play that role, as long as the people hosting
their data with that CA trusted them. Interesting, though not sure how I feel
about this. Does it encourage openness and reuseability by giving people a
means to register their work? Or does it raise the barrier to participation by
adding unnecessary complication?

Example science markup object: Question

Following the current (draft) microdata spec, markup for a question object might look as follows:

<section itemscope itemtype="http://example.com/microdata/science-vocab/question" 
itemid="hash value" > 
<meta itemprop="research-topic" content="human computation" /> 
<meta itemprop="author" content="Jessy Kate Schingler" /> 
<meta itemprop="license" content="cc-by" /> 
<time itemprop="created" datetime="2012-03-13"></time> 
<meta itemprop="tag" content="tag 1" /> 
<meta itemprop="tag" content="tag 2" /> 
... 
<meta itemprop="tag" content="tag n" /> 
<span itemprop="content">Is the sky is orange?</span> 
</section>

This is basically a set of key-value (itemprop-content) pairs, with a reference url for the science objects vocabulary. the itemid hash value, which is optional, could be computed as a self-certifying hash, either by the local authoring tool/plugin, a javascript library, or returned via a callback. (I suppose we’d need to either specify the hash function in the spec or the object would need to indicate the hash function used).

Pretty much all the fields above could be optional. The minimum required set of fields might be much more minimal:

<section itemscope itemtype="http://example.com/microdata/science-vocab/question" > 
<span itemprop="content">Is the sky is orange?</span> 
</section>

Is this too minimal? What are the minimal set of metadata fields needed to make
something useful? At one extreme, the basic goal of discoverability is
supported as long as something is marked up as being a question. Our primary
goal is achieved. On the other hand, it has no other identifying information…
My personal leaning is towards strongly encouraging basics like license and
author, but that the basic marking up of something as a question is sufficient
for it to be identified and composed by other tools, and is thus sufficient.
What do you think?

Making things easier

WYSIWYG editors make authoring content easier and faster. For example, one
could imagine a liquid tag for the question object:

{% question topic="human computation" tags="one two three" %} 
Is the sky is orange? 
{% endquestion %}

This could be expanded by a piece of javascript or a framework-specific
plugin. The javascript option could pull in user-specified defaults
for any of the fields, like license and author. There
could also be services that host content-creation profiles, or people
could host their own. (could these be added as openID profile attributes?)

Design Implications

Science markup should be easy to use by a lay user, and low-enough overhead to
use informally for a wide variety of relevant content and publishing venues,
from online journals to blog posts.

In terms of design, we should think about how we want to use marked-up
science objects. It’s not about semantically encoding every last component of
an idea. A little structure goes a long way. Building links between content
helps with discovery and facilitates greater re-use. It supports needed
re-examination and redefinition of credit, re-mixing, and access, and the
ability to recognize, relate, fork, and credit scientific content on both a
more formal, and a more fine-grained, level.

Other references: