Type the text for '27 February 2007'
One of the most talked-about recent developments on the Internet, and the World Wide Web in particular, has come to be known as "Web 2.0" ([[O'Reilly, 2005|References]]), and is said to represent a new paradigm in the way that the Web can be used. Many aspects of Web 2.0 have been seen as offering particular benefits in the field of education, and have begun to be used across the curriculum at all levels – just as earlier ICT innovations and incarnations of the Web were also rapidly adopted to educational ends.\n\nIs Web 2.0 a development that addresses specific needs in learning technology, and represents a deficiency in previous generations of technology, or is it just a solution looking for a problem? This paper considers some examples of the pedagogical use of web applications, and considers if, indeed, there is anything new or beneficial to be gained – in education in general, and in e-learning in particular – through substantial engagement with Web 2.0.\n\n<html><div class='viewer' macro='navigation tiddlers:{{store.getTiddlerText("PresentationIndex").readBracketedList()}}}'></div></html>
I was thinking along similar lines to Andrew's join the dots idea. Knowledge is a vast, multidimensional net, and acquring it (knowledge, not the net) entails forging those multidimensional links. Like the most complicated knitting pattern you can imagine. And of course if you take the links away, you're left with nothing (or lots of holes).\n\nI imagine this is akin to the neural network concept (but that's just another net metaphor) or any number of electronic and communications applications that implement the same kind of model, particularly on the Internet (another net).\n\nBut I also thought there was a more kinetic aspect to the rather passive net/web metaphor, and so I also thought about pinball. The "links" are the silver ball's paths between the bumpers, which flash and buzz as it hits them. The flippers are our chance - whether as learners or teachers - to influence the path of the ball, keep it in play, and keep improving the score. In fact, the difference between a learning-focused approach and more "traditional" instruction might be, that in one you are the flipper (at least partly in control) and in the other, you are the ball!\n\nOh dear, "Tommy" is starting to make sense.\n\n
!About this hypertext\nI've enjoyed using [[TiddlyWiki|UsingTiddlyWiki]] and it seemed a great and mad idea to build a ~TiddlyWiki hypertext of materials from my [[MSc E-Learning|http://www.education.ed.ac.uk/on-line_campus/e-learning/]] course at Edinburgh. Before you start, I suggest you make sure that this <<option chkSinglePageMode>> is set, and that this <<option chkAnimate>> is not set. Trust me. \n\n!The Web 2.0 bandwagon\nCome on aboard, it won't hurt the horse! As well as putting all my eggs in one ~TiddlyWiki basket, I'm also taking the opportunity to experiment with some other dynamic features, including dynamic <<tag bibliography>> pages, generated from newsfeeds of tagged entries in my [[Del.icio.us|http://del.icio.us/bezbozhnik]] and [[CiteULike|http://www.citeulike.org/user/bezbozhnik/]] accounts (transformed on-the-fly using [[rss2html|http://www.relocution.com/rss2html/]]).\n\n!Cross platform small print\nThis ~TiddlyWiki works as intended in Firefox 2 (Win/Mac), Opera 9 (Win), Safari (Mac) and Camino (Mac). It's mostly ok in IE 7 (Win), except I notice the menus appear over on the right. Will look out for a fix, but don't hold your breath: I'm afraid I never use IE, sorry. If you use anything else (Konqueror, Galeon, Flock...) let me know how you get on.\n\n!If you wear red tonight\nYes it is. It's true. It's very red. It's to keep you awake! But I'm seriously considering a move to another colour scheme, as soon as I work out one I like. How about <html><b style="color: #088;">teal</b> and <b style="color: #daa520;">gold</b></html>? You think? Then you'll probably like it [[here|http://www.the-ukrainians.com/]]\n\n!About me\nNot many pictures here, unfortunately, but here's one of me hard at it, at a Metadata Workshop in 2002:\n\n[img[Richard in Urbino (2002)|http://farm1.static.flickr.com/47/133131552_31ce1d4fb8_d.jpg][http://www.flickr.com/photos/bezbozhnik/133131552/]]\n//(For some reason, this picture mayn't appear if you're using Mozilla.)//
This hypertext is written in and with a [[TiddlyWiki|http://www.tiddlywiki.com/]] hosted at [[TiddlySpot|http://www.tiddlyspot.com]]. ~TiddlyWiki is a slightly unusual implementation of a [[wiki|Wikis]], in that it encapsulates its entire contents in a single file, and uses the dynamic scripting features of the current generation of web browsers, to achieve the effect normally associated with navigating between many distinct web pages. ~TiddlyWiki also supports some features of [[blogs|Blogs]]: pages with a date as their title can be managed like blog entries.\n
<<option chkGenerateAnRssFeed>> GenerateAnRssFeed\n<<option chkOpenInNewWindow>> OpenLinksInNewWindow\n<<option chkSaveEmptyTemplate>> SaveEmptyTemplate\n<<option chkToggleLinks>> Clicking on links to tiddlers that are already open causes them to close\n^^(override with Control or other modifier key)^^\n<<option chkHttpReadOnly>> HideEditingFeatures when viewed over HTTP\n<<option chkForceMinorUpdate>> Treat edits as MinorChanges by preserving date and time\n^^(override with Shift key when clicking 'done' or by pressing Ctrl-Shift-Enter^^\n<<option chkConfirmDelete>> ConfirmBeforeDeleting\nMaximum number of lines in a tiddler edit box: <<option txtMaxEditRows>>\nFolder name for backup files: <<option txtBackupFolder>>\n<<option chkInsertTabs>> Use tab key to insert tab characters instead of jumping to next field\n<<option chkSinglePageMode>> Display one tiddler at a time\n<<option chkTopOfPageMode>> Always open tiddlers at the top of the page
Bit quiet on the blog front. To be honest, I miss a good essay - 1000 words of an essay to summarise and consolidate what one's been learning never did anyone any harm, did it? One can prepare for it, schedule it, miss the deadline, hand it in late... it always used to work for me!\n\nTrouble is there's just too much scattergun writing - emails, discussion boards, my own notes, the blog, chat - not to mention Second Life, Facebook. I can discuss things here in blog comments, or on the Discussion Board, or in WebCTMail, or even proper email. I could re-edit my points from the Discussion Board and put them here - but what's the point if they are on the DB?\n\nOthers have commented that the Discussion Board has become far too dominant. Announcements that should be prominent get buried among all the chatter. And let's not talk about the interface!\n\nThere's a good paper in "Feenberg - Right Or Wrong Or Too Far Gone?" or something like that - pulling together gobbets from here, from DB, and from the ever-growing forest of virtual post-its on my laptop screen.\n\nI've never really taken stock of my personal experience with chat (text-based IM). Interestingly, I've never much indulged in it with people I already know, but had great fun chatting with total strangers!\n\nThe e-portfolio discussion has been fascinating too, not least to see how dull they can be. It turns out I've had an e-Portfolio all along without knowing it - all the better for having never been near ELGG.\n\nI don't know if I want to show my workings, or send my thoughts deformed, unfinished into the world. But it seems as if nothing is ever finished online - perhaps that's why it's called a virtual world?
Predominanty EDTR IRs and TRs, but coud also incude LORs (particulary now I've got my JHove login!)\n\nOpen Access - which of the other Open/Free models does this most conform to? Open Source and Open Access must be related, and it's interesting that imperatives of both the open-source hacker and the academic researcher collide in the repository model, and particuarly in its open source expressions, such as Eprints. (Surprised Willinsky's artice doesn't mention Harnad anywhere.)\n\nSo are open access repositories a humane pursuit (where was the concept of distance learning as a "humane" imperative from? Rumble or smthg round Week 2-3?) And are they a necessary fillip to academic research in the way that the vavavoom of F/OSS is to the evolution of computing?
\nMarking engines may not be able to measure whether, in an essay, a student has demonstrated a genuine understanding of a subject, or presented an argument well. What they clearly can do - with training - is assess, with some degree of probability, whether another marker of the essay would be likely to look favourably on the expression of argument and comprehension.\n\nWilliams's paper (2001) describes four approaches to automated essay marking, that are surprisingly encouraging (if you find automated essay marking encouraging):\n* PEG (Project Essay Grade): based on automated analysis of linguistic features, including vocabulary and grammar. Reliability compared to human marking is in the range 39%-74%.\n* E_RATER: uses Natural Language Processing (NLP) and model essays for comparison. Reliability: 87%-94%.\n* LSA (Latent Semantic Analysis): uses complex matrix techniques to build tables based on linguistic and semantic features, which can be compared with model essays. Reliability: 85%%-91%.\n* TCT (Text Categorisation Technique): uses Bayesian techniques to train systems to distinguish good essays from bad. Reliability: 55%-100%. (Bayesian techniques are also used quite effectively and reliably in junk email filters.)\nIn all cases, the ability of comptuers to mark essays is down to predictability, so it's not surprising that probability-based analysis is most effective. But that probability must be based on analysis of model texts, and so it is bound to be less effective at higher levels of education. A dissertation or thesis is likely to be extremely specialised: a computerised marker is only going to be effective if it can have enough alternative examples to compare with. Even worldwide, the number of papers on a particular area of a particular prose-based course of study that are published, worldwide, in English, may not number enough to seed the engine with all it needs to know to make an assessment, witha reasonably probabilty of matching a human marker. (And a human marker will, anyway, have to read the paper to moderate or verify the mark.) You have to know more than a computer to program it: the economics of compiling enough seeding papers for a self-chosen assessment, are likely to be prohibitive. \n\nThere's also clearly something here to do with //form// and //content//. Objections to the idea of automated marking are that while it can measure the form with some objectivity, it can't measure the content. But which elements of an essay are which? Didn't Tennyson write: //"The Form alone is Eloquent"//?!\n\n
/***\n|Name|BetterTimelineMacro|\n|Created by|SaqImtiaz|\n|Location|http://lewcid.googlepages.com/lewcid.html#BetterTimelineMacro|\n|Version|0.5 beta|\n|Requires|~TW2.x|\n!!!Description:\nA replacement for the core timeline macro that offers more features:\n*list tiddlers with only specfic tag\n*exclude tiddlers with a particular tag\n*limit entries to any number of days, for example one week\n*specify a start date for the timeline, only tiddlers after that date will be listed.\n\n!!!Installation:\nCopy the contents of this tiddler to your TW, tag with systemConfig, save and reload your TW.\nEdit the ViewTemplate to add the fullscreen command to the toolbar.\n\n!!!Syntax:\n{{{<<timeline better:true>>}}}\n''the param better:true enables the advanced features, without it you will get the old timeline behaviour.''\n\nadditonal params:\n(use only the ones you want)\n{{{<<timeline better:true onlyTag:Tag1 excludeTag:Tag2 sortBy:modified/created firstDay:YYYYMMDD maxDays:7 maxEntries:30>>}}}\n\n''explanation of syntax:''\nonlyTag: only tiddlers with this tag will be listed. Default is to list all tiddlers.\nexcludeTag: tiddlers with this tag will not be listed.\nsortBy: sort tiddlers by date modified or date created. Possible values are modified or created.\nfirstDay: useful for starting timeline from a specific date. Example: 20060701 for 1st of July, 2006\nmaxDays: limits timeline to include only tiddlers from the specified number of days. If you use a value of 7 for example, only tiddlers from the last 7 days will be listed.\nmaxEntries: limit the total number of entries in the timeline.\n\n\n!!!History:\n*28-07-06: ver 0.5 beta, first release\n\n!!!Code\n***/\n//{{{\n// Return the tiddlers as a sorted array\nTiddlyWiki.prototype.getTiddlers = function(field,excludeTag,includeTag)\n{\n var results = [];\n this.forEachTiddler(function(title,tiddler)\n {\n if(excludeTag == undefined || tiddler.tags.find(excludeTag) == null)\n if(includeTag == undefined || tiddler.tags.find(includeTag)!=null)\n results.push(tiddler);\n });\n if(field)\n results.sort(function (a,b) {if(a[field] == b[field]) return(0); else return (a[field] < b[field]) ? -1 : +1; });\n return results;\n}\n\n\n\n//this function by Udo\nfunction getParam(params, name, defaultValue)\n{\n if (!params)\n return defaultValue;\n var p = params[0][name];\n return p ? p[0] : defaultValue;\n}\n\nwindow.old_timeline_handler= config.macros.timeline.handler;\nconfig.macros.timeline.handler = function(place,macroName,params,wikifier,paramString,tiddler)\n{\n var args = paramString.parseParams("list",null,true);\n var betterMode = getParam(args, "better", "false");\n if (betterMode == 'true')\n {\n var sortBy = getParam(args,"sortBy","modified");\n var excludeTag = getParam(args,"excludeTag",undefined);\n var includeTag = getParam(args,"onlyTag",undefined);\n var tiddlers = store.getTiddlers(sortBy,excludeTag,includeTag);\n var firstDayParam = getParam(args,"firstDay",undefined);\n var firstDay = (firstDayParam!=undefined)? firstDayParam: "00010101";\n var lastDay = "";\n var field= sortBy;\n var maxDaysParam = getParam(args,"maxDays",undefined);\n var maxDays = (maxDaysParam!=undefined)? maxDaysParam*24*60*60*1000: (new Date()).getTime() ;\n var maxEntries = getParam(args,"maxEntries",undefined);\n var last = (maxEntries!=undefined) ? tiddlers.length-Math.min(tiddlers.length,parseInt(maxEntries)) : 0;\n for(var t=tiddlers.length-1; t>=last; t--)\n {\n var tiddler = tiddlers[t];\n var theDay = tiddler[field].convertToLocalYYYYMMDDHHMM().substr(0,8);\n if ((theDay>=firstDay)&& (tiddler[field].getTime()> (new Date()).getTime() - maxDays))\n {\n if(theDay != lastDay)\n {\n var theDateList = document.createElement("ul");\n place.appendChild(theDateList);\n createTiddlyElement(theDateList,"li",null,"listTitle",tiddler[field].formatString(this.dateFormat));\n lastDay = theDay;\n }\n var theDateListItem = createTiddlyElement(theDateList,"li",null,"listLink",null);\n theDateListItem.appendChild(createTiddlyLink(place,tiddler.title,true));\n }\n }\n }\n\n else\n {\n window.old_timeline_handler.apply(this,arguments);\n }\n}\n//}}}
The original weblogs were link-driven sites, logs of their authors' meanderings on the web – a less constrained approach to mapping the web than the formal classified directories like Yahoo, that were already struggling to keep up with the exponential growth of the web (Google wasn't launched until September 1998). “Each was a mixture in unique proportions of links, commentary, and personal thoughts and essays.” ([[Blood, 2000|References]]) \n\nEarly weblogs were simply manually updated web pages within standard websites. However, the evolution of tools to facilitate the production and maintenance of web articles posted in chronological fashion made the publishing process much simpler. Using a simple web form, a user need only enter a heading and a body of text: the application additionally, automatically associates a timestamp with the entry. The development of this relatively simple, often free, blogging software, introduced a new kind of platform for any information application with some kind of cumulative, day-by-day entry requirement: newspaper articles, columns, news stories, personal diary entries, could all be called into being by a much larger, less technical, population than before. To the chagrin of some of the original bloggers, the creation of electronic journals was made possible for all sorts of people who did not already know how to make a website. \n\nIt was only natural that this should be attractive in education, since learning journals are considered valuable both for reflection and assessment, particularly as part of coursework and portfolios. Such a journal, whether private to a student and a teacher, or published to the world, is at least a useful electronic surrogate for the traditional "hard copy" (of the kind submitted in exercise books or on A4 sheets for assessment), and may form a valuable component of a learner's portfolio.\n\nEven so, teachers need to clarify and communicate the manner in which they expect the blog to be used (is it note-taking? is it a formal composition?) and remember that blogging is //sui generis// – not online diary, nor e-portfolio, nor online newspaper, nor e-exercise book, even though it could be used in any of those ways. It is far more than a tool for regular or irregular writing tasks, that saves a teacher the trouble of collecting up exercise books.\n\n<html><div class='viewer' macro='navigation tiddlers:{{store.getTiddlerText("PresentationIndex").readBracketedList()}}}'></div></html>\n
tools\n language a tool of cognitive enhancement\n facilitating communication/collaboration \n constraint (channeling/directing)\n affordance = inviting us; constraint = directing/compelling\n\n* [[Distributed cognition on Citeulike|http://www.citeulike.org/user/bezbozhnik/tag/distributed]]\n<html><p style="text-align: center;"><a href="http://wordle.net/gallery/wrdl/258367/ULOE5_" \n title="Wordle: ULOE5 "><img\n src="http://wordle.net/thumb/wrdl/258367/ULOE5_"\n style="padding:4px;border:1px solid #ddd"></a></p></html>
Learning depends on the capacities and properties of the mind; the capacities of mind are related to the physiology of the brain, and our general physical state.\n* Cognition = thinking, reasoning and learning. \n* Affect = emotion.\nBehaviourism: Reinforcement - shaping - of behaviour through reward (B. F. Skinner). External behaviour only, though - doesn't relate to internal cognitive states.\n\nCognitivism: Mind processes information, operates on internal mental models of the world. Limitations on amount of information it can process: needs directing. Sensory memory, short-term memory, long-term memory. STM -> LTM = learning (consolidation). Memory is selective and based on individual's understanding. Memory is constuctive (and fallible), not photographic.\n\nStudents usually benefit from a framework - advance summary. Cognitive load can relate to quantity or complexity, and needs managing when designing learning materials/episodes.\n\nYerkes-Dodson - optimal stress level ("challenge"). This needs managing in learning episodes.\n* [[Cognition on Citeulike|http://www.citeulike.org/user/bezbozhnik/tag/cognition]]\n<html><p style="text-align: center;"><a href="http://wordle.net/gallery/wrdl/256875/Human_cognition" \n title="Wordle: Human cognition"><img\n src="http://wordle.net/thumb/wrdl/256875/Human_cognition"\n style="padding:4px;border:1px solid #ddd"></a></p></html>
Information != knowledge (Roszak, 1994). "Ideas" act on information to reveal and order them, and to define "facts". \n\nData != information (Jonscher, 1999). "Information is data distilled and interpreted, knowledge is information distilled and interpreted [in the brain]".\n\nComputers can store and manage data, but information and knowledge are the province of the human mind. More data do not necessarily mean more information; and more information does not automatically mean more knowledge: information overload.\n\nMeta-media - incestuous, self-referential media feasts on itself. Infosphere is part of real life. (Jonscher, 1999)\n\n"Education is what survives when what has been learned has been forgotten." (Skinner 1964)\n\n* Jonscher, C. (1999) Wired Life; Who are We in the Digital Age? London, Transworld Publishers.\n* [[Knowledge on Citeulike|http://www.citeulike.org/user/bezbozhnik/tag/knowledge]]\n<html><p style="text-align: center;"><a href="http://wordle.net/gallery/wrdl/256868/Knowledge_and_understanding" \n title="Wordle: Knowledge and understanding"><img\n src="http://wordle.net/thumb/wrdl/256868/Knowledge_and_understanding"\n style="padding:4px;border:1px solid #ddd"></a></p></html>\n
Learning is not passive accumulation, but requires active engagement of mind (via senses) with environment. Piaget: (cognitive) constructivism (social c. related, but in social environment).\n\nAssimilation makes sense of the new; accommodation relates it to existing knowledge, adapting if necessary. Extent and nature of this process is individual, sometimes orderly, sometimes chaotic and contradictory.\n\nThe creation of knowledge is internal, not given. Role of educatore: to orchestrate the learner's experience to maximise relevance and motivation; create an environment conducive to learning by enabling the learner to encounter valuable learning experiences.\n\nThe notion of orchestrated experience comes from the book by Caine & Caine (1994) called Making Connections in which they present what they describe as a 'brain-based' theory of learning and teaching. This relates to the notion of the 'activation of prior knowledge' as a strategy to assist learning. The teacher needs to be aware of where his or her students 'are coming from' and be able to help them make links between what they already know and the information being presented. \n\nN.b. also: coherence to the teacher is not a given in the learner! The teacher's task is better characterised as conveying to the learner that, and then perhaps even why, this particular telling of the story excites him or her.\n* [[Constructivism on Citeulike|http://www.citeulike.org/user/bezbozhnik/tag/constructivism]]\n<html><p style="text-align: center;"><a href="http://wordle.net/gallery/wrdl/258352/ULOE4" \n title="Wordle: ULOE4"><img\n src="http://wordle.net/thumb/wrdl/258352/ULOE4"\n style="padding:4px;border:1px solid #ddd"></a></p></html>
\nDescribing differences betweed paper-based assessment results, and computer aided assessmant, Clariana and Wallace (2002) tell me: \n> the kind of truck used to deliver groceries cannot impact the nutrition of the groceries, if the learner has never driven a truck, the groceries may not be delivered at all." \nWell, that's a lot clearer now!
!Some key terms and concepts in CAA\nAssessments may classed as essays or as ''objective test'' scripts. Sclater &Howie (2003) and Sim et al (2004) set out some more.\n\nAssessment is mostly either\n* ''Summative'': adminstered for grading purposes\n* ''Formative'': to give feedback to assist the learning process (//feedback to the teacher, presumably, and, indirectly, to the learner//)\nHowever it may also be\n* Self-assessment\n* Diagnostic assessment - to assess a student before starting a course\nIn particular I found the Venn diagram in Conole and Warburton helpful. Maybe I can also render it effectively as a list:\n* Computer Aided Assessment (CAA)\n** Optical Mark Recognition (OMR): clearly a "computer aid" to the mechanical process of marking.\n** Collecting portfolios: presumably electronic portfolios.\n** Computer-based assessment (CBA): the computer plays a less passive role in the process, either\n*** Standalone: on a single, maybe portable computer\n*** Networked, chiefly online assessment, and chiefly web-based\n\n! Online and other forms of assessment - differences, pros and cons\n"Direct translation of paper-based assessments into online is inappropriate" (C&W)\n\nSome tools and systems include QTI (TROIA), TRIADS, Perception (Question Mark). Limitations of item types: are MCQs "suitable for assessing higher-order learning outcomes"? (C&W)\n\n''Items and item banks'': There is considerable interest in the development of "items" (templates - very OO!), even computer-generated item templates "precise enough to enable the computer to generate parallel items that do not need to be individually calibrated" (C&W), e.g. for lower-level maths. Item banks grouped by difficulty, skill, topic: as the basis for objective testing these may offer benefits in terms of fairness and validity, particularly as students are "increasingly litigious"\n\n''Computer-Adaptive Testing'': the computer matches difficulty based on the test-taker's previous responses. I suppose this is what Trivia Machines like "Give Us A Break" did (with the additional salt of whether the machine has recently paid out).\n\nUnsurprisingly, "organisational and pedagogical issues and challenges surrounding the take-up of CAA often outweigh the technical limitations of software and hardware.’ Bull (2001) sees it as if an industrial revolution, with institutions needing to "retool", academics and administrators to retrain.\n\nAlso unsurprisingly, automated essay marking still seems to be a bit of a Holy Grail. And remember to beware, when creating MCQ stems and distracters, that the student isn't smarter then you.\n\n!Features of effective assessment\n//Selon// BS7978 (2002):\n*Fairness\n*Security\n*Validity\n*Authenticity\nAlso care in interpreting results, including awareness of the "test mode" effect.\n\n!References\nI think I learned more from Conole and Warburton's article than from [[Clariana and Wallace|CAA - Delivering the goods?]]\n* Gráinne Conole and Bill Warburton (2005). A review of computer-assisted assessment. ALT-J Research In Learning Technology, Vol. 13, No. 1. (March 2005), pp. 17-31. [[CiteULike|http://www.citeulike.org/user/bezbozhnik/article/1031632]]\n\n
\nI've [[already|Automated essay marking]] touched on whether the costs of setting up online assessment systems are actually justified by the likely benefits.\n\nLong et al. (2003) describe a very labour-intensive process to develop an online assessment system for a group of IT qualifications out of OCR exam board. (Surprisingly, the system doesn't appear to have a handy name or acronym.)\n\nAs usual, the description is enthusiastic, and as usual the results as presented seem convincingly successful on their own terms. In this case one indicator of success might be the fact that, even once an uncertainty factor was introduced, only 10-15% of submissions needed referral to a human marker for confirmation.\n\nBut the process of development was enormously costly and long (8 man years over 5 years, it says). It's only likely to have been feasible because of the nature of the awards being assessed (high-profile IT awards) and the highly competitive and profitable nature of the field (hugely popular accredited vocational IT qualifications). The paper lists five benefits (or potential benefits - the distinction is not clear):\n* Enhanced exam board profile through innovation\n* Cost reduction\n* Greater assessment speed\n* Greater assessment accuracy\n* Reuse of system data for further tuning or analysis\nNot all of these are of equal value. The kudos benefit may be significant, but not easily measurable. No figures are suggested for the cost reduction, nor for the costs of development and implementation, so the cost benefit is impossible to assess. Data reuse is a generic benefit of any computer system.\n\nIn many ways, the speed benefit is actually the most compelling, for the type of assessments that this system focuses on. Think of the scale of vocational IT qualifications - GCSEs, (G)NVQs, etc., in every school, as well as all public and private FE or business colleges. This is a very competitive market representing a massive investment in materials and systems. \n\nAlthough I can't see this kind of thing being rolled out for GCSE Latin, maybe if Mandarin and Arabic take off...
/***\n|''Name:''|CalendarPlugin|\n|''Source:''|http://www.TiddlyTools.com/#CalendarPlugin|\n|''Author:''|SteveRumsby|\n|''License:''|unknown|\n|''~CoreVersion:''|2.0.10|\n\n// // updated by Jeremy Sheeley to add cacheing for reminders\n// // see http://www.geocities.com/allredfaq/reminderMacros.html\n// // ''Changes by ELS 2006.08.23:''\n// // added handling for weeknumbers (code supplied by Martin Budden. see "wn**" comment marks)\n// // ''Changes by ELS 2005.10.30:''\n// // config.macros.calendar.handler()\n// // ^^use "tbody" element for IE compatibility^^\n// // ^^IE returns 2005 for current year, FF returns 105... fix year adjustment accordingly^^\n// // createCalendarDays()\n// // ^^use showDate() function (if defined) to render autostyled date with linked popup^^\n// // calendar stylesheet definition\n// // ^^use .calendar class-specific selectors, add text centering and margin settings^^\n\n\n!!!!!Configuration:\n<<option chkDisplayWeekNumbers>> Display week numbers //(note: Monday will be used as the start of the week)//\n|''First day of week:''|<<option txtCalFirstDay>>|(Monday = 0, Sunday = 6)|\n|''First day of weekend:''|<<option txtCalStartOfWeekend>>|(Monday = 0, Sunday = 6)|\n\n!!!!!Syntax:\n|{{{<<calendar>>}}}|Produce a full-year calendar for the current year|\n|{{{<<calendar year>>}}}|Produce a full-year calendar for the given year|\n|{{{<<calendar year month>>}}}|Produce a one-month calendar for the given month and year|\n|{{{<<calendar thismonth>>}}}|Produce a one-month calendar for the current month|\n|{{{<<calendar lastmonth>>}}}|Produce a one-month calendar for last month|\n|{{{<<calendar nextmonth>>}}}|Produce a one-month calendar for next month|\n\n***/\n// //Modify this section to change the text displayed for the month and day names, to a different language for example. You can also change the format of the tiddler names linked to from each date, and the colours used.\n\n//{{{\nconfig.macros.calendar = {};\n\nconfig.macros.calendar.monthnames = ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"];\nconfig.macros.calendar.daynames = ["M", "T", "W", "T", "F", "S", "S"];\n\nconfig.macros.calendar.weekendbg = "#c0c0c0";\nconfig.macros.calendar.monthbg = "#e0e0e0";\nconfig.macros.calendar.holidaybg = "#ffc0c0";\n\n//}}}\n// //''Code section:''\n// (you should not need to alter anything below here)//\n//{{{\nif(config.options.txtCalFirstDay == undefined)\n config.options.txtCalFirstDay = 0;\nif(config.options.txtCalStartOfWeekend == undefined)\n config.options.txtCalStartOfWeekend = 5;\nif(config.options.chkDisplayWeekNumbers == undefined)//wn**\n config.options.chkDisplayWeekNumbers = false;\nif(config.options.chkDisplayWeekNumbers)\n config.options.txtCalFirstDay = 0;\n\nconfig.macros.calendar.tiddlerformat = "0DD/0MM/YYYY"; // This used to be changeable - for now, it isn't// <<smiley :-(>> \n\nversion.extensions.calendar = { major: 0, minor: 6, revision: 0, date: new Date(2006, 1, 22)};\nconfig.macros.calendar.monthdays = [ 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];\n\nconfig.macros.calendar.holidays = [ ]; // Not sure this is required anymore - use reminders instead\n//}}}\n\n// //Is the given date a holiday?\n//{{{\nfunction calendarIsHoliday(date)\n{\n var longHoliday = date.formatString("0DD/0MM/YYYY");\n var shortHoliday = date.formatString("0DD/0MM");\n\n for(var i = 0; i < config.macros.calendar.holidays.length; i++) {\n if(config.macros.calendar.holidays[i] == longHoliday || config.macros.calendar.holidays[i] == shortHoliday) {\n return true;\n }\n }\n return false;\n}\n//}}}\n\n// //The main entry point - the macro handler.\n// //Decide what sort of calendar we are creating (month or year, and which month or year)\n// // Create the main calendar container and pass that to sub-ordinate functions to create the structure.\n// ELS 2005.10.30: added creation and use of "tbody" for IE compatibility and fixup for year >1900//\n// ELS 2005.10.30: fix year calculation for IE's getYear() function (which returns '2005' instead of '105')//\n// ELS 2006.05.29: add journalDateFmt handling//\n//{{{\nconfig.macros.calendar.handler = function(place,macroName,params)\n{\n var calendar = createTiddlyElement(place, "table", null, "calendar", null);\n var tbody = createTiddlyElement(calendar, "tbody", null, null, null);\n var today = new Date();\n var year = today.getYear();\n if (year<1900) year+=1900;\n \n // get format for journal link by reading from SideBarOptions (ELS 5/29/06 - based on suggestion by Martin Budden)\n var text = store.getTiddlerText("SideBarOptions");\n this.journalDateFmt = "DD-MMM-YYYY";\n var re = new RegExp("<<(?:newJournal)([^>]*)>>","mg"); var fm = re.exec(text);\n if (fm && fm[1]!=null) { var pa=fm[1].readMacroParams(); if (pa[0]) this.journalDateFmt = pa[0]; }\n\n if (params[0] == "thismonth")\n {\n cacheReminders(new Date(year, today.getMonth(), 1, 0, 0), 31);\n createCalendarOneMonth(tbody, year, today.getMonth());\n } \n else if (params[0] == "lastmonth") {\n var month = today.getMonth()-1; if (month==-1) { month=11; year--; }\n cacheReminders(new Date(year, month, 1, 0, 0), 31);\n createCalendarOneMonth(tbody, year, month);\n }\n else if (params[0] == "nextmonth") {\n var month = today.getMonth()+1; if (month>11) { month=0; year++; }\n cacheReminders(new Date(year, month, 1, 0, 0), 31);\n createCalendarOneMonth(tbody, year, month);\n }\n else {\n if (params[0]) year = params[0];\n if(params[1])\n {\n cacheReminders(new Date(year, params[1]-1, 1, 0, 0), 31);\n createCalendarOneMonth(tbody, year, params[1]-1);\n }\n else\n {\n cacheReminders(new Date(year, 0, 1, 0, 0), 366);\n createCalendarYear(tbody, year);\n }\n }\n window.reminderCacheForCalendar = null;\n}\n//}}}\n//{{{\n//This global variable is used to store reminders that have been cached\n//while the calendar is being rendered. It will be renulled after the calendar is fully rendered.\nwindow.reminderCacheForCalendar = null;\n//}}}\n//{{{\nfunction cacheReminders(date, leadtime)\n{\n if (window.findTiddlersWithReminders == null)\n return;\n window.reminderCacheForCalendar = {};\n var leadtimeHash = [];\n leadtimeHash [0] = 0;\n leadtimeHash [1] = leadtime;\n var t = findTiddlersWithReminders(date, leadtimeHash, null, 1);\n for(var i = 0; i < t.length; i++) {\n //just tag it in the cache, so that when we're drawing days, we can bold this one.\n window.reminderCacheForCalendar[t[i]["matchedDate"]] = "reminder:" + t[i]["params"]["title"]; \n }\n}\n//}}}\n//{{{\nfunction createCalendarOneMonth(calendar, year, mon)\n{\n var row = createTiddlyElement(calendar, "tr", null, null, null);\n createCalendarMonthHeader(calendar, row, config.macros.calendar.monthnames[mon] + " " + year, true, year, mon);\n row = createTiddlyElement(calendar, "tr", null, null, null);\n createCalendarDayHeader(row, 1);\n createCalendarDayRowsSingle(calendar, year, mon);\n}\n//}}}\n\n//{{{\nfunction createCalendarMonth(calendar, year, mon)\n{\n var row = createTiddlyElement(calendar, "tr", null, null, null);\n createCalendarMonthHeader(calendar, row, config.macros.calendar.monthnames[mon] + " " + year, false, year, mon);\n row = createTiddlyElement(calendar, "tr", null, null, null);\n createCalendarDayHeader(row, 1);\n createCalendarDayRowsSingle(calendar, year, mon);\n}\n//}}}\n\n//{{{\nfunction createCalendarYear(calendar, year)\n{\n var row;\n row = createTiddlyElement(calendar, "tr", null, null, null);\n var back = createTiddlyElement(row, "td", null, null, null);\n var backHandler = function() {\n removeChildren(calendar);\n createCalendarYear(calendar, year-1);\n };\n createTiddlyButton(back, "<", "Previous year", backHandler);\n back.align = "center";\n\n var yearHeader = createTiddlyElement(row, "td", null, "calendarYear", year);\n yearHeader.align = "center";\n //yearHeader.setAttribute("colSpan", 19);\n yearHeader.setAttribute("colSpan",config.options.chkDisplayWeekNumbers?22:19);//wn**\n\n var fwd = createTiddlyElement(row, "td", null, null, null);\n var fwdHandler = function() {\n removeChildren(calendar);\n createCalendarYear(calendar, year+1);\n };\n createTiddlyButton(fwd, ">", "Next year", fwdHandler);\n fwd.align = "center";\n\n createCalendarMonthRow(calendar, year, 0);\n createCalendarMonthRow(calendar, year, 3);\n createCalendarMonthRow(calendar, year, 6);\n createCalendarMonthRow(calendar, year, 9);\n}\n//}}}\n\n//{{{\nfunction createCalendarMonthRow(cal, year, mon)\n{\n var row = createTiddlyElement(cal, "tr", null, null, null);\n createCalendarMonthHeader(cal, row, config.macros.calendar.monthnames[mon], false, year, mon);\n createCalendarMonthHeader(cal, row, config.macros.calendar.monthnames[mon+1], false, year, mon);\n createCalendarMonthHeader(cal, row, config.macros.calendar.monthnames[mon+2], false, year, mon);\n row = createTiddlyElement(cal, "tr", null, null, null);\n createCalendarDayHeader(row, 3);\n createCalendarDayRows(cal, year, mon);\n}\n//}}}\n\n//{{{\nfunction createCalendarMonthHeader(cal, row, name, nav, year, mon)\n{\n var month;\n if(nav) {\n var back = createTiddlyElement(row, "td", null, null, null);\n back.align = "center";\n back.style.background = config.macros.calendar.monthbg;\n\n/*\n back.setAttribute("colSpan", 2);\n\n var backYearHandler = function() {\n var newyear = year-1;\n removeChildren(cal);\n cacheReminders(new Date(newyear, mon , 1, 0, 0), 31);\n createCalendarOneMonth(cal, newyear, mon);\n };\n createTiddlyButton(back, "<<", "Previous year", backYearHandler);\n*/\n var backMonHandler = function() {\n var newyear = year;\n var newmon = mon-1;\n if(newmon == -1) { newmon = 11; newyear = newyear-1;}\n removeChildren(cal);\n cacheReminders(new Date(newyear, newmon , 1, 0, 0), 31);\n createCalendarOneMonth(cal, newyear, newmon);\n };\n createTiddlyButton(back, "<", "Previous month", backMonHandler);\n\n\n month = createTiddlyElement(row, "td", null, "calendarMonthname", name)\n// month.setAttribute("colSpan", 3);\n// month.setAttribute("colSpan", 5);\n month.setAttribute("colSpan", config.options.chkDisplayWeekNumbers?6:5);//wn**\n\n var fwd = createTiddlyElement(row, "td", null, null, null);\n fwd.align = "center";\n fwd.style.background = config.macros.calendar.monthbg; \n\n// fwd.setAttribute("colSpan", 2);\n var fwdMonHandler = function() {\n var newyear = year;\n var newmon = mon+1;\n if(newmon == 12) { newmon = 0; newyear = newyear+1;}\n removeChildren(cal);\n cacheReminders(new Date(newyear, newmon , 1, 0, 0), 31);\n createCalendarOneMonth(cal, newyear, newmon);\n };\n createTiddlyButton(fwd, ">", "Next month", fwdMonHandler);\n/*\n var fwdYear = createTiddlyElement(row, "td", null, null, null);\n var fwdYearHandler = function() {\n var newyear = year+1;\n removeChildren(cal);\n cacheReminders(new Date(newyear, mon , 1, 0, 0), 31);\n createCalendarOneMonth(cal, newyear, mon);\n };\n createTiddlyButton(fwd, ">>", "Next year", fwdYearHandler);\n*/\n } else {\n month = createTiddlyElement(row, "td", null, "calendarMonthname", name)\n //month.setAttribute("colSpan", 7);\n month.setAttribute("colSpan",config.options.chkDisplayWeekNumbers?8:7);//wn**\n }\n month.align = "center";\n month.style.background = config.macros.calendar.monthbg;\n}\n//}}}\n\n//{{{\nfunction createCalendarDayHeader(row, num)\n{\n var cell;\n for(var i = 0; i < num; i++) {\n if (config.options.chkDisplayWeekNumbers) createTiddlyElement(row, "td");//wn**\n for(var j = 0; j < 7; j++) {\n var d = j + (config.options.txtCalFirstDay - 0);\n if(d > 6) d = d - 7;\n cell = createTiddlyElement(row, "td", null, null, config.macros.calendar.daynames[d]);\n if(d == (config.options.txtCalStartOfWeekend-0) || d == (config.options.txtCalStartOfWeekend-0+1))\n cell.style.background = config.macros.calendar.weekendbg;\n }\n }\n}\n//}}}\n\n//{{{\nfunction createCalendarDays(row, col, first, max, year, mon)\n{\n var i;\n if (config.options.chkDisplayWeekNumbers){\n if (first<=max) {\n var ww = new Date(year,mon,first);\n createTiddlyElement(row, "td", null, null, "w"+ww.getWeek());//wn**\n }\n else createTiddlyElement(row, "td", null, null, null);//wn**\n }\n for(i = 0; i < col; i++) {\n createTiddlyElement(row, "td", null, null, null);\n }\n var day = first;\n for(i = col; i < 7; i++) {\n var d = i + (config.options.txtCalFirstDay - 0);\n if(d > 6) d = d - 7;\n var daycell = createTiddlyElement(row, "td", null, null, null);\n var isaWeekend = ((d == (config.options.txtCalStartOfWeekend-0) || d == (config.options.txtCalStartOfWeekend-0+1))? true:false);\n\n if(day > 0 && day <= max) {\n var celldate = new Date(year, mon, day);\n // ELS 2005.10.30: use <<date>> macro's showDate() function to create popup\n if (window.showDate) {\n showDate(daycell,celldate,"popup","DD",config.macros.calendar.journalDateFmt,true, isaWeekend); // ELS 5/29/06 - use journalDateFmt \n } else {\n if(isaWeekend) daycell.style.background = config.macros.calendar.weekendbg;\n var title = celldate.formatString(config.macros.calendar.tiddlerformat);\n if(calendarIsHoliday(celldate)) {\n daycell.style.background = config.macros.calendar.holidaybg;\n }\n if(window.findTiddlersWithReminders == null) {\n var link = createTiddlyLink(daycell, title, false);\n link.appendChild(document.createTextNode(day));\n } else {\n var button = createTiddlyButton(daycell, day, title, onClickCalendarDate);\n }\n }\n }\n day++;\n }\n}\n//}}}\n\n// //We've clicked on a day in a calendar - create a suitable pop-up of options.\n// //The pop-up should contain:\n// // * a link to create a new entry for that date\n// // * a link to create a new reminder for that date\n// // * an <hr>\n// // * the list of reminders for that date\n//{{{\nfunction onClickCalendarDate(e)\n{\n var button = this;\n var date = button.getAttribute("title");\n var dat = new Date(date.substr(6,4), date.substr(3,2)-1, date.substr(0, 2));\n\n date = dat.formatString(config.macros.calendar.tiddlerformat);\n var popup = createTiddlerPopup(this);\n popup.appendChild(document.createTextNode(date));\n var newReminder = function() {\n var t = store.getTiddlers(date);\n displayTiddler(null, date, 2, null, null, false, false);\n if(t) {\n document.getElementById("editorBody" + date).value += "\sn<<reminder day:" + dat.getDate() +\n " month:" + (dat.getMonth()+1) +\n " year:" + (dat.getYear()+1900) + " title: >>";\n } else {\n document.getElementById("editorBody" + date).value = "<<reminder day:" + dat.getDate() +\n " month:" + (dat.getMonth()+1) +\n " year:" + (dat.getYear()+1900) + " title: >>";\n }\n };\n var link = createTiddlyButton(popup, "New reminder", null, newReminder); \n popup.appendChild(document.createElement("hr"));\n\n var t = findTiddlersWithReminders(dat, [0,14], null, 1);\n for(var i = 0; i < t.length; i++) {\n link = createTiddlyLink(popup, t[i].tiddler, false);\n link.appendChild(document.createTextNode(t[i].tiddler));\n }\n}\n//}}}\n\n//{{{\nfunction calendarMaxDays(year, mon)\n{\n var max = config.macros.calendar.monthdays[mon];\n if(mon == 1 && (year % 4) == 0 && ((year % 100) != 0 || (year % 400) == 0)) {\n max++;\n }\n return max;\n}\n//}}}\n\n//{{{\nfunction createCalendarDayRows(cal, year, mon)\n{\n var row = createTiddlyElement(cal, "tr", null, null, null);\n\n var first1 = (new Date(year, mon, 1)).getDay() -1 - (config.options.txtCalFirstDay-0);\n if(first1 < 0) first1 = first1 + 7;\n var day1 = -first1 + 1;\n var first2 = (new Date(year, mon+1, 1)).getDay() -1 - (config.options.txtCalFirstDay-0);\n if(first2 < 0) first2 = first2 + 7;\n var day2 = -first2 + 1;\n var first3 = (new Date(year, mon+2, 1)).getDay() -1 - (config.options.txtCalFirstDay-0);\n if(first3 < 0) first3 = first3 + 7;\n var day3 = -first3 + 1;\n\n var max1 = calendarMaxDays(year, mon);\n var max2 = calendarMaxDays(year, mon+1);\n var max3 = calendarMaxDays(year, mon+2);\n\n while(day1 <= max1 || day2 <= max2 || day3 <= max3) {\n row = createTiddlyElement(cal, "tr", null, null, null);\n createCalendarDays(row, 0, day1, max1, year, mon); day1 += 7;\n createCalendarDays(row, 0, day2, max2, year, mon+1); day2 += 7;\n createCalendarDays(row, 0, day3, max3, year, mon+2); day3 += 7;\n }\n}\n//}}}\n\n//{{{\nfunction createCalendarDayRowsSingle(cal, year, mon)\n{\n var row = createTiddlyElement(cal, "tr", null, null, null);\n\n var first1 = (new Date(year, mon, 1)).getDay() -1 - (config.options.txtCalFirstDay-0);\n if(first1 < 0) first1 = first1+ 7;\n var day1 = -first1 + 1;\n var max1 = calendarMaxDays(year, mon);\n\n while(day1 <= max1) {\n row = createTiddlyElement(cal, "tr", null, null, null);\n createCalendarDays(row, 0, day1, max1, year, mon); day1 += 7;\n }\n}\n//}}}\n\n// //ELS 2005.10.30: added styles\n//{{{\nsetStylesheet(".calendar, .calendar table, .calendar th, .calendar tr, .calendar td { text-align:center; } .calendar, .calendar a { margin:0px !important; padding:0px !important; }", "calendarStyles");\n//}}}
An interesting little piece in [[The Register|http://www.theregister.co.uk/2007/03/11/sxsw_science_web_2/]] - with a clever subtitle that I've stolen and promoted - about a cool scientific reception for collaboration Web 2.0 style. Open sharing doesn't turn them on it seems, and nor does changing time-honoured practice (or anglo-saxon attitudes). Perhaps, for all the high-minded talk about science and the public good, open collaboration puts their bottom-line in jeopardy ("Money doesn't talk, it swears" - Bob Dylan) - reminiscent of the response from some, perhaps the same, quarters, to open access/content e-repositories.\n\nAs the article says, of the prospects for Web 2.0: "Researchers won't use the tools until they justify their worth, but they are worthless unless researchers use them." But the scientists aren't alone in being slow adopters - there are plenty of businesses of all kinds that aren't going to go all fluffy and Web 2.0 any time soon - neither on extranet or intranet - in spite of the enticing possibilities. \n\nSeems to me like the current generation of school-children - like the ones who took part in the [[Flat Classroom Project]] are the lucky ones.
\nBackground: #fff\nForeground: #000\nPrimaryPale: #fd7\nPrimaryLight: #096\nPrimaryMid: #042\nPrimaryDark: #000\nSecondaryPale: #bbb\nSecondaryLight: #fe8\nSecondaryMid: #db4\nSecondaryDark: #042\nTertiaryPale: #aaa\nTertiaryLight: #aaaaff\nTertiaryMid: #000\nTertiaryDark: #8B7355
Szabo and Underwood's article "Cybercheats" (2004) sets out clearly the issues around cheating generally. It's a great title, but by the end of the piece, it's hard to escape the feeling that I've learned nothing I couldn't have guessed already. Behaviourists may well believe that everyone engages in "behaviours that avoid negative events and search out positive outcomes." Bleedingobviousists also hold this view, and would no doubt be unamazed by Szabo and Underwoods other findings, such as:\n* "The stimulus for cheating is created by the evaluative aspect of an academic system that differentiates students into superior and inferior classifications, which have subsequent life-choice implications."\n* "Students striving for outstanding academic achievement may engage in cheating to gain higher grades (Moon, 1999)."\n* "Students with lower academic ability, or lack of motivation, may engage in murder to avoid failure (Wilhoit, 1994)." \n* "The reward of a better grade or that of avoiding failure is cognitively balanced against the risks involved in being caught cheating."\nIt's tempting to replace the words "cheating" and "plagiarism" with "stealing" or "murder": is it any more a "revelation"?\n> Kelly and Worrell (1978) found that students who were caught cheating were often of lower intelligence compared with non-cheaters. One explanation for this is the greater academic problems faced by these students. This explanation suggests that the rise in aberrant academic behaviour will increase as widening access policies are pursued. \nAnd in the end? The aricle is subtitled "Is ICT fuelling academic dishonesty", but it's hard to find a well-founded answer in the article. Some students would be prepared under some circumstances to cut-and-paste into an essay. Shocking! More than might once have copied out a passage from a book or article? The article doesn't say. There is a bit of an appeal against a "laissez-faire attitude" to cheating, and a few conclusions from the test that hardly //valent la paine//:\n* "Students have increasingly good IT skills, which they use extensively in academic work." \n* "Misuses are triggered by [...] the likelihood of failure".\n* "Many of the students here appeared to rate those risks as at worse moderate and for some non-existent."\nWould I prefer a good essay indiscriminately mashed up from a dozen different internet sources, or an entirely original essay that's totally vacuous?\n\n
We have seen that the fully-fledged, Web 2.0 incarnations of blog and wiki offer their greatest potential when they are used as a platform for collaboration, and this clearly makes them attractive in learning environments. As Garrison ([[2006|References]]) observes: \n>There is evidence to suggest that online learning may in fact have an advantage in supporting collaboration and creating a sense of community. An online learning environment reflects a “group-centered” interaction pattern versus an “authority-centered pattern” of a face-to-face environment. Moreover, there is a tendency to build on the comments of others in the online environment (higher flow of communication), compared to the “turn-taking” face-to-face environment. \nNot that the mere presence or availability of the software will make it happen. Garrison also notes the need to ensure "teaching presence" to help shape the collaborative community into "critical and reflective discourse". Also important is to establish an appropriate context for the use of these tools. Like ~PowerPoint before them, one might merely use Wikis, Blogs as an electronic blackboard, but that would be to miss out on so much more.\n\nWith regard to deep-learning, it's clear that blogs and wikis, as models for organising and retrieving information, have a lot to offer, not least as elements contributing to learners' portfolios. "Portfolios should support an environment of reflection and collaboration" ([[Barrett, 2004|References]]). Web 2.0 is a set of tools and paradigms which, in different combinations, are the building blocks not just of human-computer interaction, but of rich, one-to-many person-to-person interactivity. From a constructionist perspective, the difference between the functional, but rigid, "Web 1.0" environment, and the fluidity of Web 2.0 interactions, parallels Papert's own distinctions between the relative merits of BASIC and his own LOGO language. LOGO provides a "dynamic problem solving environment that engenders creative problem solving" ([[Papert, 2006|References]]) and, in many ways, so do the connectivities of Web 2.0. \n\nWeb 2.0 unquestionably offers a powerful digital environment that supports many elements key to e-learning, in a loosely coupled, platform-independent manner. Chief among these is social networking and collaboration: \n>Direct social navigation is a form of discourse community, a group of individuals with common interests who agree to share ideas and resources. A great deal of intellectual work goes into social navigation Web pages. These pages are not only a powerful form of communication but also a clear measure of understanding—that is, they can be assessed and evaluated as a measure of learning.([[Colaric and Jonassen, 2002|References]]).\nWe can provide blogs as a generic tool (the overhead of providing a dedicated blog server at Warwick is probably not prohibitive, and there are many free solutions) and similarly wikis, and for the many other Web 2.0 applications built on the same tools and principles (photo-blogging, video-blogging, podcasts, discussions).\n\nWeb 2.0 is significant in that it establishes a very social framework for expectations of the //next// generation of web-based communication tools and techniques, as it will inevitably underpin whatever succeeds it in turn. As network speeds increase, we can already see, for example, how non-textual web content is being created and managed within the framework established for blogging: first photo-blogging with Flickr, and now podcasting, still predominantly audio, but with audio-visual applications already becoming widely used (~YouTube). It is part of a never-ending evolution. \n\nWeb 2.0 is only the latest "bloody thing", and it won't be the last. But if we are to avoid the scenario described by Sharon Kopyc ([[2006|References]]) - where tech-savvy students are confounded and repelled by the outmoded methods of their teachers' institutions - educators need to be involved with it. Luckily, Web 2.0 makes that easy.\n\n<html><div class='viewer' macro='navigation tiddlers:{{store.getTiddlerText("PresentationIndex").readBracketedList()}}}'></div></html>\n
Hopefully this schedule will bear some resemblance to the entries in the [[Journal|E-learning, Politics and Society]]!\n* Week 2 (E-learning and globalization): Steve, Christine, David\n** [[Reading List|http://www.education.ed.ac.uk/on-line_campus/e-learning/library/eps/week2.html]]\n** [[Rory's WP|http://www.education.ed.ac.uk/on-line_campus/e-learning/library/eps/week2_wp.html]]\n* Week 3 (The economics of e-learning): Anton, Richard\n** [[Reading List|http://www.education.ed.ac.uk/on-line_campus/e-learning/library/eps/week3.html]]\n** [[Rory's WP|http://www.education.ed.ac.uk/on-line_campus/e-learning/library/eps/week3_wp.html]]\n* 15/10 Week 4 (Digital divides, domestic): Jim, Amanda, Graham\n** [[Reading List|http://www.education.ed.ac.uk/on-line_campus/e-learning/library/eps/week4.html]]\n** [[Rory's WP|http://www.education.ed.ac.uk/on-line_campus/e-learning/library/eps/week4_wp.html]]\n* 22/10 Week 5 (Digital divides, north-south): Stuart, Jim, Nisha\n** [[Reading List|http://www.education.ed.ac.uk/on-line_campus/e-learning/library/eps/week5.html]]\n** [[Rory's WP|http://www.education.ed.ac.uk/on-line_campus/e-learning/library/eps/week5_wp.html]]\n* 29/10 Week 7 (Changing identities in online society): Anton, Christine, Amanda\n** [[Reading List|http://www.education.ed.ac.uk/on-line_campus/e-learning/library/eps/week7.html]]\n** [[Rory's WP|http://www.education.ed.ac.uk/on-line_campus/e-learning/library/eps/week7_wp.html]]\n* 5/11 Week 8 (Digital citizenship): Edith, Stuart\n** [[Reading List|http://www.education.ed.ac.uk/on-line_campus/e-learning/library/eps/week8.html]]\n** [[Rory's WP|http://www.education.ed.ac.uk/on-line_campus/e-learning/library/eps/week8_wp.html]]\n* 12/11 Week 9 (Online ideologies): David, Edith\n** [[Reading List|http://www.education.ed.ac.uk/on-line_campus/e-learning/library/eps/week9.html]]\n** [[Rory's WP|http://www.education.ed.ac.uk/on-line_campus/e-learning/library/eps/week9_wp.html]]\n* 19/11 Week 10 (Open source): Steve, Nisha\n** [[Reading List|http://www.education.ed.ac.uk/on-line_campus/e-learning/library/eps/week10.html]]\n** [[Rory's WP|http://www.education.ed.ac.uk/on-line_campus/e-learning/library/eps/week10_wp.html]]\n* Week 11 (Intellectual property): Richard, Graham\n** [[Reading List|http://www.education.ed.ac.uk/on-line_campus/e-learning/library/eps/week11.html]]\n** [[Rory's WP|http://www.education.ed.ac.uk/on-line_campus/e-learning/library/eps/week11_wp.html]]
[[Hello World]]
[[Resnick|http://firstmonday.org/issues/issue5_8/resnick/]] - another Cassandra like voice like [[Noble|Those dark, Satanic, digital diploma mills]], and defender of the Ivory Tower, like [[Dreyfus|References]]. Whither, in the digital age, the idyll of the college that is "a small community with a flourishing civic life", fostering "civic virtue" and "the habit of civic engagement" and "moral education".\n\nTo Resnick "the students of the virtual university have no extracurricular life". From a 2007 perspective, on a Virtual U course, where I have off topic discussions with tutors and play online Scrabble with other students, this palpable nonsense.\n\nAnyway, not everyone goes to university, yet the vast majority still manage to become passable citizens. And even at Real World U, not everyone is a member of the debating society or rowing club.\n\nOf online chat rooms provided by an online University, Resnick asks: "except for specific course-related discussion, why should a student spend time there with other students enrolled at Virtual U rather than participating in any of countless of discussions continually on the Net?"\n\nWhy indeed? But we now have an alternative model in Facebook and MySpace - the global chat room that "organises itself" around schools, faculties, courses, etc. This model seems compellingly successful.\n\nResnick's right to make us consider these issues, but his position is easily characterised as insensitive and elitist. I think that the Netgenners and the Social Networking revolution have overtaken him.\n
These are more general lists of links about e-learning from ~CiteULike and del.icio.us\n\n!!Books and articles from [[Cite-U-Like|http://www.citeulike.org/user/bezbozhnik/]]\n<html><iframe src="http://www.relocution.com/rss2html/rss2html.php?XMLFILE=http%3A%2F%2Fwww.citeulike.org%2Frss%2Fuser%2Fbezbozhnik%2Ftag%2Fe-learning&TEMPLATE=fullref3.html" style="width: 100%; height: 40ex; border: 0; background-color: #fff;"/></html>\n\n!!Web links from [[Del.icio.us|http://del.icio.us/bezbozhnik]]\n<html><iframe src="http://www.relocution.com/rss2html/rss2html.php?XMLFILE=http%3A%2F%2Fdel.icio.us%2Frss%2Fbezbozhnik%2Fe-learning&TEMPLATE=webref.html" style="width: 100%; height: 40ex; border: 0; background-color: #fff;"/></html>\n
!External resources\n* [[MSc course library at Edinburgh|http://www.education.ed.ac.uk/on-line_campus/e-learning/library/eps/]] \n* EPS Blog (forum) on [[Eduspaces|http://eduspaces.net/mod/forum/forum.php?weblog=eps2007]]\n* My [[Delicious links|http://del.icio.us/bezbozhnik/eps2007]]\n* My [[CiteuLike library|http://www.citeulike.org/user/bezbozhnik/tag/eps2007]]\n* EPS Assignment essay [[The contribution of "open" initiatives in ICT to social justice|http://docs.google.com/Doc?id=dtpm2kv_61f76kb4t2]] on Google Docs\n!Journal\nThis is an occasional journal of my attempts to try to keep up with the [[course work|Course schedule]]. Entries are listed below in reverse order, latest on top. \n <<timeline better:true onlyTag:eps excludeTag:menu sortBy:created>>
Happened to read another article by Greville Rumble: Social justice, economics and distance education (Open Learning Vol. 22, No. 2, June 2007, pp. 167–176). Very interesting exposition of the morality of education in general, and distance learning in particular.\n\nMust followup Honderich references, e.g. After The Terror (2002). Concept of "good" lives, "bad" lives and "vicous" policies/societies seems intriguing.
[[Noble's paper|http://firstmonday.org/issues/issue3_1/noble/index.html]] warns against the dangers of letting (higher) education succumb to techno-charlatans and dumbing-down. Students deserve better than "a cyber-counterfeit" of the face-to-face education they have been led to expect. Policy-makers and chalk-face pedagogs should beware of treating students as "guinea pigs in product trials masquerading as courses".\n\nBut in doing so, it sets out a dismal view of the commoditisation and industrialisation of education in the Information Age. "As in other industries, the technology is being deployed by management primarily to discipline, de-skill, and displace labor." Like some cyberpunk dystopia, Noble's vision is of students and teachers in an unlikely alliance to fight a rearguard action against the combined forces of computer vendors, university administrators, corporate training advocates and technozealots.\n\nThese are the four horses of his apocalypse. He makes a lot of assumptions about their motivations, and he's not always generous. I imagine slates, chalk, printed books, video cassettes were also once peddled by enthusiastic neophiles, lacking peer-reviewed proof of their efficacy.\n\nBut why /not/ package up the best educational projects and share them, sometimes on a commercial footing, other times pro-bono? Is this really so novel? Haven't Blackwells, OUP and the rest been doing this for centuries?\n\nSeems to me the information revolution is creating greater demands for information that can only be serviced by products of the revolution! Maybe if we teach people more quickly and effectively the ever-growing number of things we think they need to know (including, unfortunately, corporate training) they'll have more time and space to explore the more picturesque avenues of education.
Getting a bit ahead I know, but couldn't resist playing with Second Life. Interesting how safe and friendly it seems. Walking up the real street, after a session in the virtual world, I feel like I want to make friends with everyone I see. How life-affirming!\n\nOn the other hand, after a session in Grand Theft Auto, I feel my resistance to the idea of driving up the pavement at 100mph, gunning everyone down with an Uzi, is considerably lowered.\n\nThere's a message there somewhere!
The kind of difference that Web 2.0 features make to online collaborative, educational projects can be briefly illustrated by looking at the recent [[Flat Classroom Project|http://flatclassroomproject.wikispaces.com/]] ([[2006|References]]). This is a collaborative, assessed project between a grade 11 IT class at International School Dhaka in Bangladesh, and a 10th grade Computer Science class at Westwood Schools in Camilla, Georgia, USA. The goal of the project was for students at each school to collaborate in developing a set of articles and essays about globalisation, based on themes in Thomas Friedman's book, //The World Is Flat//. Students are assigned a thematic area, and develop the content in pairs – one from each school – and use a Wiki to do so. Owing to the difference in time zones, this collaboration, of necessity, takes place asynchronously.\n\n<html><iframe style="width: 100%; height: 320px;" src="http://flatclassroomproject.wikispaces.com/" title="The Flat Classroom Project wiki"/></html>\n\nAmong the many Web 2.0 tools that the teachers who set up this project have been able to put to good use are:\n* Tagged photo blogging. The teachers have uploaded photos to Flickr, and tagged them with the keyword "[[flatclassroom06|http://www.flickr.com/photos/tags/flatclassroom06]]". This enables all photos so tagged, no matter who has uploaded them, to be accessed using the URL. \n* Blogging by the teachers, including general observations about the course, and specific, date-stamped instructions for the students (e.g. [[Literacy Ideals|http://elgg.net/itgs/weblog/141807.html]] on Julie Lindsay's blog.\n* Blogging by pupils, also on ELGG. Teachers further encourage blogging by nominating a "[[Blogger Of The Week|http://elgg.net/itgs/weblog/140671.html]]" (and even a "Blogger Blacklist" in the case of under-use of the blog).\n* Audio podcasting. Julie Davis has recorded audio messages for the classes. \n* Wiki logs of who did what when, both at site level (http://flatclassroomproject.wikispaces.com/space/changes) and on individual pages (e.g. http://flatclassroomproject.wikispaces.com/page/history/Web+2.0+Tools+for+Sharing+Information)\nThe result is interesting and exciting: students have had a valuable and encouraging opportunity for international outreach, and have worked constructively, creatively and collaboratively to creating dynamic web essays, comprising text, images, videos and links. It's a sign, if one were needed, of quite how far global communications have come, since the first Intelsat broadcast The Beatles live to the world, forty years ago.\n\n<html><div class='viewer' macro='navigation tiddlers:{{store.getTiddlerText("PresentationIndex").readBracketedList()}}}'></div></html>
TiddlyWiki uses Wiki style markup, a way of lightly "tagging" plain text so it can be transformed into HTML. \n''Edit this Tiddler to see samples.''\n\n! Header Samples\n!Header 1\n!!Header 2\n!!!Header 3\n!!!!Header 4\n!!!!!Header 5\n\n! Unordered Lists:\n* Lists are where it's at\n* Just use an asterisk and you're set\n** To nest lists just add more asterisks...\n***...like this\n* The circle makes a great bullet because once you've printed a list you can mark off completed items\n* You can also nest mixed list types\n## Like this\n\n! Ordered Lists\n# Ordered lists are pretty neat too\n# If you're handy with HTML and CSS you could customize the [[numbering scheme|http://www.w3schools.com/css/pr_list-style-type.asp]]\n## To nest, just add more octothorpes (pound signs)...\n### Like this\n* You can also\n** Mix list types\n*** like this\n# Pretty neat don't you think?\n\n! Tiddler links\nTo create a Tiddler link, just use mixed-case WikiWord, or use [[brackets]] for NonWikiWordLinks. This is how the GTD style [[@Action]] lists are created. \n\nNote that existing Tiddlers are in bold and empty Tiddlers are in italics. See CreatingTiddlers for details.\n\n! External Links\nYou can link to [[external sites|http://google.com]] with brackets. You can also LinkToFolders on your machine or network shares.\n\n! Images\nEdit this tiddler to see how it's done.\n[img[http://img110.echo.cx/img110/139/gorilla8nw.jpg]]\n\n!Tables\n|!th1111111111|!th2222222222|\n|>| colspan |\n| rowspan |left|\n|~| right|\n|colored| center |\n|caption|c\n\nFor a complex table example, see PeriodicTable.\n\n! Horizontal Rules\nYou can divide a tiddler into\n----\nsections by typing four dashes on a line by themselves.\n\n! Blockquotes\n<<<\nThis is how you do an extended, wrapped blockquote so you don't have to put angle quotes on every line.\n<<<\n>level 1\n>level 1\n>>level 2\n>>level 2\n>>>level 3\n>>>level 3\n>>level 2\n>level 1\n\n! Other Formatting\n''Bold''\n==Strike==\n__Underline__\n//Italic//\nSuperscript: 2^^3^^=8\nSubscript: a~~ij~~ = -a~~ji~~\n@@highlight@@ Unfortunately highlighting is broken right now.\n@@color(green):green colored@@\n@@bgcolor(#ff0000):color(#ffffff):red colored@@ Hex colors are also broken right now.\n
To get started with this blank TiddlyWiki, you'll need to do the following:\n* Edit SiteTitle & SiteSubtitle: The title and subtitle of the site, as shown at the top.\n* Enter your username for signing your edits: <<option txtUserName>>\n* Edit UploadOptions: \n** Fill in //Username// and //Password//\n** Tick "Save password on computer"\n** Ensure filename of the uploaded file says "index.html"\n** Click "Save to web with these options"\n* Edit AdvancedOptions:\n** //Hide editing features//: ''un''tick this\n** //Display one tiddler at a time//: you may want to tick this\n* Edit MainMenu: This is the menu list on the left.\n* Edit DefaultTiddlers: This contains the names of the tiddlers that you want to appear when the TiddlyWiki is opened.\n\nWhenever you reach a milestone in your work or settings (like now), <<upload>>. It may be a good idea to Reload the page afterwards.
Still trying to get to grips with this and the blog posts. Check back later.
<<closeAll>><<permaview>><<newTiddler>><<newJournal 'DD MMM YYYY' journal>><<saveChanges>><<upload>><<slider chkSliderOptionsPanel OptionsPanel 'options »' 'Change TiddlyWiki advanced options'>>
This website is a place for studies, notes and adventures I'm having in E-learning, chiefly as part of a [[course|http://www.education.ed.ac.uk/e-learning/]] at Edinburgh University. If you want to find out a bit more about this website, go [[here|About]].\n!Resources for courses\n* [[Information Literacies for Online Learning]] (2009) <<tag ilol>>\n* [[Understanding Learning in the Online Environment]] (2008) <<tag uloe>>\n* [[E-learning, Politics and Society]] (2007) <<tag eps>>\n* [[Online Assessment journal|Online Assessment Journal]] (2007) <<tag ola>>\n* [[Introduction to Digital Environments for Learning journal|IDEL Journal]] (2006) <<tag idel>> \n!Featured items\n* [[Adventures in plagiarism|Plagiarise, plagiarise]] \n* [[More on plagiarism|More on plagiarism]]\n* [[Online Assessment assignment]] \n!Recently featured items\n* [[Introduction to Digital Environments for Learning assignment|IDEL Assignment]]
(Naughton, J. (2000) //A Brief History of the Future: The Origins of the Internet//, paperback edition, London: Phoenix, chapter 11, pp. 169-184.)\n\nWe shouldn't be suprised that the spread of the Internet is a cascade of knowledge, tools and systems from one group to another, each less "elite" than the last, and each paving the way for the next. It's hardly a pattern that offends against common-sense.\n\nInteresting to see the extent to which strong personalities are evident in the story, and this lends it a social aspect. Dennis Ritchie is closely associated with his invention, C, and his book is the bible of that critical language in the evolution of computing. Comparable personal cults don't attach to COBOL or BASIC: each had its place in the development of computing, but none has become and remained integral to the global network in the way C has.\n\n(There are other computer languages associated with colourful personality cults Larry Wall, PERL; Seymour Papert, LOGO._\n\nThe "intrinsic elegance" of UNIX (and C) seems a perfectly good Darwinian reason for its success. Another is its viral aspect, being easily portable to a wide range of relatively inexpensive computers.\n\nPerhaps the non-Unix context of the story could be better handled by Naughton. Why did C and Unix not spread quicker? What other viable languages and systems, or business interests, were competing with it? What was everyone else doing at the time? (Space Invaders: 1978; IBM PC: 1981; Windows: 1985).\n\nMy own experience is of how, from its origins in an elite environment in the early 1970s, by the late 80s Unix it had become a viable option for administrative systems in government, such as in the Home Office, Met Police, M.O.D., (where I worked from 85-89). It's worth noting that such organisations were often tied in to the cycle of suppliers like IBM or (in UK) ICL whose proprietary hardware and software were largely inseparable. The hardware independence of both personal-oriented desktop computing (DOS, Windows) and server/network systems (Unix, FTP) were powerful antidotes (though in the case of Windows, a new kind of lock-in would evolve).\n\nOn Newsgroups: interesting also to consider the contrasting models of ARPANET mail lists, and Usenet news, still with us in many ways (Listserv, NNTP) and now augmented by web BBs and of course blogs.
Jim suggested that Esperanto's failure was due to its Indo-European bias, but I don't believe that really way its Achilles heel (not dispensing with the accusative case was, IMO, a much graver omission)! \n\nIn the 70s and 80s some of the best Esperanto publications came out of China and USSR, and it got considerable backing from the Internationalist and Youth movements in many Communist countries. But nationalist undercurrents were strong too, and I think Esperanto was often, subconsciously, promoted as the ideal solution for someone else's problem. Each of the major political-linguistic axes - anglophone, russophone, sinophone - tacitly assumed that its native language would prevail in the end.\n\nBut one telling difference between an artificial natural language layer, and an artificial computer language layer, is that the latter is generally much quicker to install! That's a much more significant factor when comparing the success and uptake of Esperanto-like innovations in the real and digital worlds.\n\n
To upload a TiddlyWiki on your web server:\n#Import all tiddlers tagged with Upload from http://TiddlyWiki.bidix.info/#Upload\n#Install UploadPlugin as explain in [[InstallingPlugins|http://www.tiddlywiki.com/#InstallingPlugins]]\n#Install an UploadService on your web server by configuring one of this scripts [[store.php]] or [[store.cgi]]\n#set an {{{<<upload>>}}} button for example in your SideBarOptions\n#Set UploadOptions in conformity with your UploadService\n#click on <<upload>> button\n
With the exception of the teaching of Computer Science per se, and the continuing evolution of computing and network technologies within institutional administrative infrastructures, there are perhaps four main areas in which Information and Communications Technology (ICT) in general, and the Web in particular, are particularly significant in education: \n\n<html><img src="ftp://ftp.worldofspectrum.org/pub/sinclair/games-inlays/s/Shakespeare-JuliusCaesar.jpg" title="Penguin Study Software - Julius Caesar" style="width: 240px; float: right; border: 1px solid #ccc; padding: 0; margin: 0 0 0 1ex;"/></html>''Supporting and enhancing established teaching practices, within and without the classroom.'' Rare is the new development in Information and/or Communications Technology that has not been seized on as having the potential to enhance traditional approaches to teaching core subjects. Radio and television have both been used extensively, from primary schools to the Open University – doubly so since the advent of cheap technology for timeshifting broadcasts (i.e. timer-based audio and video recorders). Home computing and computing in schools in the 1980s brought with it a wealth of supporting computer applications, not just for science subjects, but across the curriculum. (By 1984 there were even home computer programs available for Shakespeare studies, such as the Penguin Study Software series. "[[World Of Spectrum|http://www.worldofspectrum.org/educatio.html]] " maintains a fascinating list of 1980s educational software for the Sinclair Spectrum.) \n\n''As a communications platform and virtual environment, for the delivery of distance learning.'' Many ICT applications for the classroom can equally be valuable in a distributed way for distance learning. In addition, distance learners require a stable online environment in which they can not only manage the resources they require, but also experience, as far as possible, a sense of “personal presence” ([[Feenberg, 1989|References]]) – of themselves, of their teachers, and of their fellow students.\n\nSince the advent of relatively simple and cheap Web-based applications, the expectations of virtual, online environments have continually increased. Learners can be provided with the electronic surrogates of ever more educational resources, for example: online libraries (originally just library catalogues, but increasingly content too); facilities to interact with tutors and fellow sudents (asynchronous conversations, via email and discussion boards; synchronous chat by text-based messaging, audio or video); electronic creation, submission, and even marking of assessments, essays and other assignments. \n\nWhile some, notably Dreyfus ([[2001|References]]), seem reluctant to acknowledge the Internet as much more than a speedier way to deliver correspondence courses, many others are more enthusiastic: "There is evidence to suggest that online learning may in fact have an advantage in supporting collaboration and creating a sense of community." ([[Garrison, 2006|References]])\n\n''Supporting the development of deep learning skills.'' Deep learning is the acquisition of more profound and personalised knowledge than the superficial, factual content of the lessons as taught, through making connections between ideas, concepts, courses, modules: "to have students become self-directed and to have learned to learn" ([[Garrison, 2006|References]]). A major element of deep learning is reflection on individual study and on debate. As manifestations of Computer Mediated Communication (CMC), all Internet-based projects – whether by email, discussion groups, wikis, blogs, or any combination thereof – are very much "retrievable forms of discourse" ([[Feenberg, 1989|References]]) and therefore potentially useful tools to support deep learning.\n\nAnother aspect of computer-mediated deep learning is exemplified in the work of Seymour Papert. Papert is one of the best known exponents of the use of computers to stimulate learners' engagement with creative problem-solving and constructive play, notably through LOGO, his elegant computer language, with which children of all ages can program the movements of a “Turtle”. "Teaching the Turtle to act or to ‘think’ can lead one to reflect on one’s own actions and thinking. And, as children move on, they program the computer to make more complex decisions and find themselves engaged in reflecting on more complex aspects of their own thinking.” ([[Papert, 1980|References]])\n\n''Teaching key IT "life" skills.'' Perhaps the most obvious intersection of education and IT, particularly since the development of vocational IT qualifications such as CLAIT and ECDL. The pervasiveness of Information Technology, and the convergence of many established communications technologies (writing, speech, visual – both broadcast and interactive), around common and interlinked digital frameworks, compels sometimes reluctant educators to keep abreast of rapidly-changing new developments, in order to teach learners how to use and apply the latest generation of life-enhancing tools – as well as to impart the underlying generic principles that assist learners in engaging with ongoing technological developments.\n\n\n<html><div class='viewer' macro='navigation tiddlers:{{store.getTiddlerText("PresentationIndex").readBracketedList()}}}'></div></html>\n
Over Dec 2006/Jan 2007, I wrote a version of my assignment for the course //Introduction to Digital Environments for Learning// using ~TiddlyWiki, and I have now imported it here.\n\n----\n''A Web 2.0 Education''\n* [[Start Here|A Web 2.0 Education]]\n* [[ICT in education]]\n* [[The Web and Boccaccio]]\n* [[Blogs]]\n* [[Wikis]]\n* [[Web 2.0]]\n* [[Warwick Blogs]]\n* [[Flat Classroom Project]]\n* [[Concludingly]]\n[[Notes]]\n[[References]]\n----\n\nThis version supersedes the [[original|http://web2education.tiddlyspot.com/]].\n\nIf you enjoyed this, you'll probably want to read the [[JISC TechWatch paper on Web 2.0|http://www.jisc.ac.uk/media/documents/techwatch/tsw0701b.pdf]] which was published in Feb 2007.
This is an automated bibliography from the //Introduction to Digital Environments for Learning// course. Links and bookmarks are stored elsewhere, accessed and reformatted on-the-fly and dynamically embedded in the page below!\n\n(If this doesn't work, here are direct links to my accounts on [[Cite-U-Like|http://www.citeulike.org/user/bezbozhnik/]] and [[Del.icio.us|http://del.icio.us/bezbozhnik]].)\n\n!Books and articles from [[Cite-U-Like|http://www.citeulike.org/user/bezbozhnik/]]\n<html><iframe src="http://www.relocution.com/rss2html/rss2html.php?XMLFILE=http%3A%2F%2Fwww.citeulike.org%2Frss%2Fuser%2Fbezbozhnik%2Ftag%2Fassignment&TEMPLATE=fullref3.html" style="width: 100%; height: 40ex; border: 0; background-color: #fff;"/></html>\n\n!Web links from [[Del.icio.us|http://del.icio.us/bezbozhnik]]\n<html><iframe src="http://www.relocution.com/rss2html/rss2html.php?XMLFILE=http%3A%2F%2Fdel.icio.us%2Frss%2Fbezbozhnik%2Fidel-assignment&TEMPLATE=webref.html" style="width: 100%; height: 40ex; border: 0; background-color: #fff;"/></html>\n
This is a continuation of my blog for the course Introduction to Digital Environments for Learning. Entries are listed below in reverse order, latest on top. I'm still in the process of moving over entries from the private, closed blog at Edinburgh.\n <<timeline better:true onlyTag:idel sortBy:created>>
“Information literacy is knowing when and why you need information, where to find it, and how to evaluate, use and communicate it in an ethical manner”. (CILIP 2005)..." \n\n!External resources\n* [[MSc course library at Edinburgh|http://www.education.ed.ac.uk/on-line_campus/e-learning/library/]] \n* My [[Delicious links|http://del.icio.us/bezbozhnik/ilol09]]\n* My [[CiteuLike library|http://www.citeulike.org/user/bezbozhnik/tag/ilol09]]\n\n!Journal\nThis is an occasional journal of my attempts to try to keep up with the [[course work|Course schedule]]. Entries are listed below in reverse order, latest on top. \n <<timeline better:true onlyTag:ilol excludeTag:menu sortBy:created>>
<<timeline better:true onlyTag:journal sortBy:created>>
//MyEd was dead... dead as a door-nail.//\n\nIt's interesting to find myself a user of the very class of systems I've spent years either developing or at least discussing. To see oneself as others see you - that sort of thing. Not only that, but to be on a distance learning course, completely dependent on the IT systems provided.\n\n[img[http://static.flickr.com/44/163601614_5ce0afc5bf.jpg]]\n\nSo when everything crashes spectacularly, as it seems to have done yesterday and today (first day of term, in other words) there are lots of annoyances to be had. Let's have a look at some.\n\n1. MyEd - This is the main portal for accessing all online systems, including VLE, course materials, library, email. Quite impressive, actually, when it works. Since yesterday, though, it's been extremely slow to load (many minutes), if it loads at all. Sometimes it returns the message //Sorry MyEd is unavailable// - sometimes not. I wait. I do something else. I come back and try again. I wonder if it's working now? I wait...\n\n2. EASE - If MyEd does appear to have loaded, the next step is to login with EASE, the single sign-on system for the University. Great idea, though also, clearly, a single point of failure. This is also extremely slow to load: if it does return a login form, it effectively hangs when login details are submitted. I wait. I do something else. I come back and try again. I wonder if it's working now? I wait...\n\n3. Support information - This is where the fun starts. How am I as a remote user to know if the problem is chez moi, on Campus, or somewhere in between? I've a pretty good idea, since everything else on the web works for me as usual. Just as importantly, how do I know whether it's likely to be worth my while to come back in a few minutes, an hour, or tomorrow? I don't want to waste time, keeping trying, just in case.\n\nWhen MyEd fails successfully (!) (rather than hanging) it refers me to a [[MIS Service Log|http://www.mis.ed.ac.uk/news/service_announcements/service_log.shtml]]. Today, this shows a major failure, starting yesterday at 9am, and ongoing; yet throughout yesterday it showed no reference to the problems I (and others, surely) experienced. (Yesterday was a Scottish holiday, but there must have been some cover?)\n\n[img[http://www.eportal.mis.ed.ac.uk/images/service_up.gif]]\n\nDancing around a bit more I find more pages that now report a problem, whereas all of yesterday they didn't: [[http://www.mis.ed.ac.uk/news/infoscreen/index.htm]]; [[http://www.eportal.mis.ed.ac.uk]].\n\n[img[http://www.eportal.mis.ed.ac.uk/images/service_down.gif]]\n\nAs a user, it's probably also worth observing that, finding this information under the banner of "Management Information Systems" is a bit off-putting: should I be here? I looked around the main University website, and also found "Information Services". Is that different? The internal corporate structure and business terminology of Universities are best kept internal, I think.\n\nIt would be cruel of me also to draw attention to the latest, week-old news I also ran across, on the MIS department Home Page, announcing //07/09/2006: MyEd Service Reliable: MyEd is now running through a hardware load balancer with four application servers sharing the service load intelligently.//\n\nSuch a ship is surely unsinkable!\n\nLessons learned already? I'm sure busy IT people are learning their own lessons as I write. I'm not unsympathetic - I've been there myself, it's not much fun. Some better method, though, for promptly and pro-actively informing all affected that "School's Closed" (even virtual school, no doubt due to virtual snow) would be a good thing - not only relying on up-to-date web information, but maybe also feeding same to email, SMS, RSS. (Cf. [[BBC/Transport for London Travel Alerts|http://www.bbc.co.uk/london/travel/services/alerts.shtml]].)\n\nAs far as E-Learning goes, it's a salutary reminder of our total dependence on the largely invisible technical infrastructure, that we take for granted at our peril: without it, the rest is silence.\n\nAt least all may not be lost if there is some kind of reserve system - so intelligent use of something like Facebook is a wise move - hats off to Sian, Hamish, or whoever's idea that was
!!Tips and tricks\n* When one choice is much longer than the others, the likelihood is that the long answer is the correct one.\n* The language of the correct answer should match the language of the question. If the stem of the question says 'usually', responses that are too emphatic (all, always) are less likely to be correct than vaguer statements (often, sometimes).\n* Missing word questions may contain linguistic clues (e.g. "an" can only precede a noun starting with a vowel; "are" indicates a plural verb). Similarly, tortured syntax in a question may give a clue ("Which of the following (is/are) present...?")\n* When a question asks "what is the smallest ..."- pick the second smallest response, or where the question is "what is the largest ..." then pick the second largest response. Statistically that is most likely to be the correct one!\n* In almost all tests b & c will be more frequently correct than a or d.
''[[home|Hello World]]'' ''[[about|About]]'' <<tag idel>> <<tag ola>> <<tag eps>> <<tag uloe>> <<tag ilol>> <<tag etc>> \n\n
<!--{{{-->\n<link rel='alternate' type='application/rss+xml' title='RSS' href='index.xml'/>\n<!--}}}-->\n\n<style type="text/css">#contentWrapper {display:none;}</style><div id="SplashScreen" style="border: 3px solid #ccc; display: block; text-align: center; width: 320px; margin: 100px auto; padding: 50px; color:#000; font-size: 28px; font-family:Tahoma; background-color:#eee;"><b>R:e:learning</b> is loading<span style="text-decoration: blink;"> ...</span><br/><br/><img src="http://farm1.static.flickr.com/47/133131552_31ce1d4fb8_m_d.jpg" alt="*"/><br/><span style="font-size: 14px; color:red;">Requires Javascript.</span></div>
It's been observed elsewhere (by Hamish on the Discussion Board, I think) that we bring to a new (online) environment expectations from other experiences. (Not an earth-shattering revelation, perhaps, but worth remembering.)\n\nMy own experience suggests that web-based discussion boards become quickly unmanageable once they reach the level of traffic we already have here in WebCT. The design of the WebCT discussion board is simple and robust, but much too rigid to follow threads intelligently, particularly if you're away for a few days.\n\nOnce again the reflexive nature of the course means that it is interesting to experience these limitations, which I would normally try to circumvent or accelerate rapidly away from. But I'd still like the option to follow the DBs with a proper threaded mail/news client, if I'm not to risk wasting time reading things I shouldn't, or missing things I should read.\n\nThinking back to IRL studies, there would have been hundreds of discussions going on among students and teaching staff - some intellectual, some social, some lengthy, some brief, some weighty, many trivial. I would have participated in some, and overheard others - but by no means all. Nor would they all have been recorded for me to playback if I was away for a few days.\n\nAll the more reason why I need an interface for discussions in a VLE that has at least some of the speed, flexibility and responsiveness that, IRL, I get from my eyes, ears and legs!
Painting with broad strokes:\n# In the traditional, humanist approach to marking, a benign marker might work through a few dozen papers, looking for signs of the candidates' understanding of the matter at hand, some very objective (dates and facts right?), others more subtle or subjective (seem original or parroted?). Submissions assessed, as objectively and rigorously as possible, 10%, say, are forwarded to a verifier for quality control.\n# In the computerised approach, essays are submitted to an automarker, that compares them with an algorithmic interpretation of many essays, good, bad and indifferent. In tests the computer system was deemed highly reliable in matching unseen essays with others of the same or similar grade. A small number of essays - typically up to 10% - receive scores that indicate a high degree of uncertainty by the computer system, and these need verification by a human agent.\nWhat's this to do with plagiarism? Given the nature of the computerised assessment, it's going to be necessary to run a plagiarism check as well. This is because, in the "assessment" test, //non-originality// is likely to be key - the essay must "match" set criteria. Yet as there are no doubt many online models of competent essays, we need the "plagiarism" test, where //originality// is king. So in many ways the same engines drive both - the scores just need inverting.
\nI've no pressing pedagogical purpose for devising and using an ~MCQ-based assessment. Instead I remembered a recent selection panel I was involved with, to recruit a lucky someone to the combined post of Web Site Manager and ~E-Repository Co-ordinator.\n\nThe level of skills required ended up being set out rather vaguely in the Job and Person Specification. If I'd been able to set candidates a short test from questions like the following, I might have gained a quicker idea of the depth and breadth of their knowledge in the relevant areas, and had some good material for discussion in the interview.\n\nTherefore this test is a //diagnostic// assessment; but I think any of the questions could equally be used in a summative assessment in their particular domain. The assessment is called:\n\n!So, you want to be a Web Site Manager and ~E-Repository Co-ordinator?\nThen please answer the following questions. //(Select one answer to each question.)//\n!!~IRs generally\n''1. Why would a University need to set up an electronic Institutional Repository?''\n## To give students and staff access to the library catalogue\n## To manage submissions to adademic publishers\n## To comply with the Freedom of Information Act\n## To ensure long-term access to important scholarship\n!!XML\n''2. Which of the following statements could //never// appear in a valid XML document?''\n## {{{<item name="fred">}}}\n## {{{<item name='fred'>}}}\n## {{{<item name="fred"/>}}}\n## {{{</item name="fred">}}}\n!!Open Archives Initiative\n''3. Which metadata standard //must// be supported by an ~OAI-PMH compliant repository?''\n## Dublin Core\n## Qualified Dublin Core\n## Encoded Archival Description\n## MARC\n!!Web technologies\n''4. If a student user asks you how they can subscribe to automatically updated information about new accessions in the ~E-Repository, which of the following would you recommend to them?''\n## RPC\n## RSH\n## RSS\n## ~OAI-PMH\n!!Accessibility\n''5. In order to comply with the Disabilities Discrimination Act, the University's web sites and services must: ''\n## be accessible to disabled people.\n## use sans-serif fonts.\n## use XHTML and CSS.\n## All of the above.\n\n!Answers\n1. //D is key. Others are vaguely plausible red herrings (correct answers to different questions).//\n\n2. //B I think is a good distracter: it looks unique, and issues relating to attribute value delimiters are commonly misunderstood. D is actually key (a closing tag never has attributes), and should be obvious to the adept; but being adjacent to C might prick a weaker candidate's confidence in D, and cause them to reconsider B.//\n\n3. //A is key, and is not the longest!//\n\n4. //C is key. Longest is not key. D appears in other questions, so might suggest itself as a good guess. A case might be made by a strong candidate that one or more of the distracters answers the question indirectly, but the question mentions a user, and the key is the only interface appropriate to general users.//\n\n5. //A is key. Distracters B and C are sometimes erroneously inferred, so they, or even "all" might also tempt candidates. Stem is a bit lumpy, though - room for improvement.//\n
If you've already seen [[My Week 3 MCQs]], you can try out an interactive online version. If you find the embedded frame below a problem, use [[this link to open it in a new window|mcq1.htm]].\n\nSorry about the annoying popup window - must sort that out sometime. Just tell it your name and it'll go away. \n\nThis was done with [[Hot Potatoes|http://web.uvic.ca/hrd/hotpot/]] from University of Victoria, Canada. ~JavaHotPot is a Java application that generates quizzes, etc. as interactive web pages (HTML and Javascript), and they can also be hooked up to CGI scripts to record scores, email them to tutors, etc. \n\n<html><iframe src="mcq1.htm" style="width: 100%; height: 100ex;"/></html>
// Resolves a Tiddler reference or tiddler title into a tiddler title string, or null if it doesn't exist\nresolveTitle = function(t)\n{\n if (t instanceof Tiddler) t = t.title;\n return store.tiddlerExists(t) ? t : null;\n}\n\nconfig.macros.navigation = {};\nconfig.macros.navigation.handler = function(place,macroName,params,wikifier,paramString,tiddler)\n{\n\n if (!store.tiddlerExists(tiddler.title))\n return false;\n var e = createTiddlyElement(place,"span",null,"nav");\n e.setAttribute("refresh","macro");\n e.setAttribute("macroName",macroName);\n e.setAttribute("params",paramString);\n e.setAttribute("tiddler",tiddler.title)\n this.refresh(e,paramString);\n}\n\nconfig.macros.navigation.refresh = function(place,params)\n{\n var tiddler = store.getTiddler(place.getAttribute("tiddler"));\n removeChildren(place);\n\n\n var params = place.getAttribute("params").parseParams("tiddlers",null,true);\n//alert(store.getTiddlerText(getParam(params,"index",undefined)).parseParams("tiddlers",null,false))\n var tiddlers = getParam(params,"tiddlers",undefined);\nif (typeof tiddlers == 'string')\n tiddlers = tiddlers.readBracketedList();\n if (tiddlers == undefined)\n alert("no source tiddlers defined for navigation");\n var contents = [];\n for (var i=0;i<tiddlers.length;i++)\n {\n var title = resolveTitle(tiddlers[i]);\n contents.push(title);\n}\n var navIndex = contents.indexOf(tiddler.title);\n if (navIndex == -1)\n return false;\n \n if (contents[navIndex-1])\n {\n wikify("[[<< Previous|"+contents[navIndex-1]+"]]",place);\n place.lastChild.className += " navPrev";\n }\n if (contents[navIndex+1])\n {\n wikify("[[Next >>|"+contents[navIndex+1]+"]]",place);\n place.lastChild.className += " navNext";\n }\n\n var theTable = createTiddlyElement(place,"table",null,"nav");\n var theBody = createTiddlyElement(theTable,"tbody");\n var theRow = createTiddlyElement(theBody,"tr");\n for (var i=0; i<contents.length; i++)\n {\n var box = createTiddlyElement(theRow,"td",null,"navlinkcell"," ");\n box.onclick = onClickTiddlerLink;\n box.setAttribute("tiddlyLink",contents[i]);\n box.title = (contents[i]);\n if (contents[i] ==tiddler.title)\n box.className += " activenav";\n }\n}\n\nsetStylesheet(\n".navNext {float:right;}\sn"+\n".navPrev, .navPrevious{float:left;}\sn"+\n".nav .tiddlyLink {color:#000; background:transparent;border:none;padding:0;margin:0;}\sn"+\n".nav {padding:0;margin:0;}\sn"+\n".nav table {margin:0 auto !important; border:0px solid #000;padding:0;border-collapse:separate;}\sn"+\n".nav table tr{padding:0; margin:0;border-spacing: 1px;}\sn"+\n".nav table td {padding:4px; border:1px solid #000; border-spacing: 0px;cursor:pointer;cursor:hand}\sn"+\n".nav .activenav{background:#000 !important;}\sn","NavigationPluginStyles");
Hmm, would love to get to MyEd and WebCT this morning to do some reading but getting a big Page Load Error each time I try (in Firefox or Safari). Rest of web seems ok, so presumably something quirky going on with MyEd. Don't seem to be able to hack directly to VLE URLs.\n\nJust goes to show why it's a good idea to store copies of reading materials in CiteULike.\n
Tried to chat to Andrew and Rosanna this evening when I saw them online. Unfortunately WebCT Chat doesn't seem to be working (not in Safari, nor Camino): "Chat is unavailable".\n\nSo, what's our Real Life analogue for this scenario? I see a couple of people in the library or common room; I recognise them from lectures; I decide to say hello. Then I find I have suddenly lost my voice. And am invisible.
Looking forward to discussing the Feenberg paper. Many points in there that are in line with my own thoughts, observations and experience in online communication.\n\n[Back to moan]\nAFAIAC, WebCT mail, like the Discussion Board, is proving itself too underpowered for the job of managing emails. That tiny editing window is hard to use (I'm starting to need to prepare emails offline in a proper text editor); and the need to use HTML to get reasonable formatting in the messages (as with DB) is plain daft.\n\nIt's a shame, as I think it is very important that a VLE package should provide a complete, consistent, toolset and environment. The tools may be more basic than desktop software - lowest-common-denominator functionality: I'd accept that, but I know I'm not the only one finding WebCT a bit /too/ basic for serious use.
[[1.|The Web and Boccaccio]] I'm overlooking the fact that there doesn't seem to have been any recent activity on the Decameron Web site/project. However this kind of undeclared suspension is itself a common feature of early Web projects like this.\n\n[[2.|Web 2.0]] Ward Cunningham's original [[WikiWikiWeb|http://c2.com/cgi/wiki?FrontPage]] was a relatively simple Perl CGI script that used a small set of regular expressions to transform wiki markup into HTML.\n
!!Books and articles from [[Cite-U-Like|http://www.citeulike.org/user/bezbozhnik/]]\n<html><iframe src="http://www.relocution.com/rss2html/rss2html.php?XMLFILE=http%3A%2F%2Fwww.citeulike.org%2Frss%2Fuser%2Fbezbozhnik%2Ftag%2Fassessment&TEMPLATE=fullref3.html" style="width: 100%; height: 40ex; border: 0; background-color: #fff;"/></html>\n\n!!Web links from [[Del.icio.us|http://del.icio.us/bezbozhnik]]\n<html><iframe src="http://www.relocution.com/rss2html/rss2html.php?XMLFILE=http%3A%2F%2Fdel.icio.us%2Frss%2Fbezbozhnik%2Fola&TEMPLATE=webref.html" style="width: 100%; height: 40ex; border: 0; background-color: #fff;"/></html>\n
I'd love Eduspaces to be better, I really would. But its interface is a walking usability disaster - great long sidebars, with the rest of the page blank, menus all over the place, really intrusive ads. It's clearly got the functionality of a promising social network, but would need substantial customisation before I'd feel happy deploying it at our place.\n
I was struck at one key issue that the various definitions of Information Literacy, and particularly the Information Literate person described in the Australian standards cited, seem to omit, or at best leave to inference. That is the need to keep abreast of the changing media and manifestations of information, the means by which it is communicated. It's good that most, if not all, of the criteria listed could apply equally to an 18 year-old me looking round my local reference library, or any of my more mature incarnations surfing ever-changing and growing online resources over the last 15 years.\n\nBut where is the explicit definition of the need to assess the timeliness of both the information content and the information provider/carrier? It might be inferred from 2.1 (The information literate person selects the most appropriate investigative methods or information access tools for finding the needed information) but I think that the necessity and willingness to keep abreast of technological trends, including their practical and ethical consequences, merits a headline all of its own.\n\nIn a world of ever-emerging new tools, new models, new paradigms, is it not easy for last year's information literate information professional to become this year's obstacle to progress, whether intentionally or not? The tendency to resist and resent change, particularly when it undermines previous mastery, is common. The need and willingness to intelligently embrace and positively engage with change is surely essential to being truly information literate?
This is an occasional journal of my attempts to try to keep up with the course work. Entries are listed below in reverse order, latest on top.\n <<timeline better:true onlyTag:ola sortBy:created>>
![[Hot Potatoes|http://hotpot.uvic.ca/]]\nLooked today at Hot Potatoes, a Windows/Java engine for creating web-based assessments in the form of: multiple-choice, short-answer, jumbled-sentence, crossword, matching/ordering and gap-fill exercises. Developed byVery Javascript-heavy: a whole quiz is embedded in a single web page, which is good for avoiding network delays (like I get when my Wifi is flaky!).\n\nOne interesting feature of the quiz tools is that you can allow students to look at the "hints" to incorrect answers //after// completing the correct answer, without affecting their score. Nice attention to detail: sometimes good distracters merit an explanation.\n\nLooks like I'll have to have a go. Must have some ideas for Russian tests kicking around (good test of i18n too!).\n\n![[E-Packs|http://learning.londonmet.ac.uk/epacks/about.html]]\nE-Packs for languages at London Met are very elegant language assessment examples. Nice drag and drop and audio features. Flash-based, apparently. More on this anon.
!Notes\n\nNot got very far with this yet... ;)\n\nOk... using Perception first to load up questions, then will export to XML and try in Hot Potatoes (and ... ?)\n\nHere are some [[MCQs|MCQ home]] for starters. All single questions. Note different styles and layouts by originators. Already can't attribute them accurately, but thanks to Linda, Lesley, Nisha, Julie, Wendy - hopefully.\n
Ewins explores the construction of online identities, at the level of both the individual and the collective. He declares his interest as "a political scientist, with a political scientist's interest in ideas of representation", and goes on to consider online journals in these terms. Merchant bases his analysis on the "social network theory" approach of Giddens.\n\nBoth perspectives are instructive, though it also made me think (declaring my interest) that literary analysis - narrative, semiotic, rhetoric - would be no less valid and compelling - and it's not very often you can say that. Blogging is a new form literature, and literature - factual and fictional - is just another name for the retrievable information and discourse on which societies, communities and cultures depend.\n\nMerchant even invokes Pirandello in his exploration of identity crises (it makes a change from Borges and his labyrinths), while Lanham convincingly invokes Marinetti and the Futurists. In fact the Futurist Manifesto seems remarkably timely, reconsidered in the light of online activity - perhaps it can escape it's slightly comical association with jerky early cinematography, and Isadora Duncan's tragic-comic death at the wheel of her Bugatti.\n\nLanham refers to the futurists' urge to give away their products as propaganda, and consider that in relation not only to the free and unending stream of (?creativity?literature) emerging from blogging, but also such developments as the Berlin Declaration on Open Access to Knowledge, bringing the same liberty to the expressions of more respected research in peer-reviewed articles, theses and the like. Whether or not this is altruistic or an academic response to the tsunami of blogging that threatens to bury more traditional and considered research in search-engine results. who knows.\n\nSlightly less convincingly Lanham sites in the Twentieth Century the moment when the importance of art came to "lie not in objects that artists create, but in the attention that the beholder brings to them". It's a common view, linking the likes of Duchamp, Magritte, Warhol. But we can trace the idea back further, at least as far as Blake: "The sun's light when he unfolds it/ Depends on the eye that beholds it."
One of the biggest obstacles blogging faces is that it has a bad name - the B-word. If the word "blog" were replaced with "online journal" wherever it occurred in Ewins' paper, many of the associated explanations would seem superfluous. (I know that in my institution, where I am convinced that adopting of online journals would hugely improve our information sharing and knowledge base.)\n\nOf course blogs have acquire new features not available to earlier kinds of journals and journalists. Speed - in this case the speed of hypertext, not Marinetti's motor cars - has shrunk the world. But the essence of a journal is unchanged: \n\nBut the value of a journal, as a kind of cumulative, reflective self-assessment, and the urge to journal have not changed. The cumulative value to the self of reflection and self assessment - have not changed, nor the historical value, to posterity always looking to understand the past, of journals, singly or en masse. See how readily Pepys's diary is adapted to the form (http://www.pepysdiary.com/), or consider the National Trust's "History Matters, Pass It On" initiative, inviting everyone in Britain to write a blog entry for October 17th 2006. (Shame this seems to have vanished from the web.)\n\nSince I have worked extensively with archivists, perhaps it's not surprising that I see the urge to record as key, and in order to record we need the media to support "retrievable forms of discourse" (Feenberg, 1989).\n\nUr-texts, after all, tend to be laundry lists (early blogs were frequently personal gazetteers of meanderings on the web). But listing objects evolves into narratives of why I might, or you should, find the objects interesting, and so to records of actions and events, then reflections and opinions, then internal monologues, and reflections on record-keeping and all that goes with it. \n\nEwins and Merchant are right to suggest that what has changed most perhaps, in the global online environment, is the ability to aggregate, to compute the trends, the links and networks between journals. Nevertheless, I don't think the blogger loses his identity in the blogosphere any more to any greater extent than any individual is lost in any statistical crowd.\n\nWhether "what matters in the blogosphere is what the collective thinks" depends on your perspective. A collectivist point-of-view is a valid one, and identifying trends at the aggregate level is an important activity. But it doesn't in any way invalidate the individual's perspective. Each of the stages of the development of narratives occurs at the level of the collective, but also, uniquely, for each individual finding their own authorial voice within their and with the media available to his or her generation and moment in history.\n\nOff now to read some more of [[Jill Walker's stuff|http://jilltxt.net/]]. (So Jill has married [[Scott Rettberg|http://retts.net/]] - //that// must be an interesting household!)\n
!!Pros\n* Convenience, time-saving\n* Can assess learning of "factual" information\n* Set a cut-off date for completion of assessment. No arguments or late submissions!\n* Well-suited to testing computer-based skills\n\n!!Cons\n* Unable to assess higher-level skills, or reflective work esp. at HE level\n* Difficulty of thinking up plausible "wrong" answers for MCQ\n* How can we be sure the student's work is all his/her own?\n* Limited resources (PCs/terminals) in schools/colleges for whole-class assessment.\n\n!!Discuss\n* Is setting //good// questions for electronic assessment any more difficult than for paper-based tests?\n* How to define "exam conditions" for OAs?\n* How to cope with system problems (downtime, crashes, etc)?\n\n\n
[[Cyberspace and the Concept of Democracy|http://firstmonday.org/issues/issue5_10/evans/index.html]] by Fred Evans (First Monday, volume 5, number 10 (October 2000))\n\n"the willingness of the online population to tolerate wide diversity of opinion " ? Or its inability to do otherwise (cf. Voltaire - one may have no /choice/ but to let another express their view).\n\n(rheingold2003)\na desire to amplify human communication converted what was initially taken as an information database into a space for dialogue and community (66-67; 220; see also Jordan 1999, 38).\n\nME: Distillation of ideas. how much faster on internet. and with the dynamic diversity of all mankind's intelligences online - how many different types of intellectual liqueurs, tasty and otherwise, can we now c\n\navatar concept again\n\nmore lit crit once again we see how literature, other appreciations thereof is relevant - Marinetti, Joyce, Pirandello, Rushdie, Bakhtin...\n\n"Dialogue, therefore, is both vertical and lateral, includes both the explicit exchange of words and the taking into account of the other voices that make up one's conversational milieu. One's voice is as much formed by the lateral type of exchange -- whether it consists in incorporating parts of another discourse or refusing to do so -- as it is by its insistence on its own place within the community. Because the Internet displays such interactions without the real world distractions that usually accompany and obscure them, it allows us to recognize the presence and the formative role of these voices upon our own discourse" YUP!\n\nInternet "brackets the actual world", in other words enables and channels all discourse related activity, independently of the physical encumbrance of the real world. (ME)\n\nMonoglossia and heteroglossia (Bakhtin) - tendencies in social body, such as internet. Domination of single voice or discourses. Resistant heteroglossia - tendency og H. to resist M.\n\nImpetus to democracy - multi-voiced
"prestige is central to the hacker culture's reward mechanisms" (Raymond)\n\nEric Raymond was right, in 1998, to predict that Applications would be the place for hackers and the open-source movement to turn its attentions to, after it had conquered the network and the operating system.\n\nLike many open source or free software pioneers, he overlooked one important factor, which is that usability and overall presentation of open source software tends to look a little shoddy. Remarkable though the GIMP image processor is, its particular GUI is extremely idiosyncratic, and demonstrably less friendly to less adept classes of general user beyond the hacker community. Photoshop, by comparison, is slick and friendly. Of course, GIMP being GNU and Free, there's nothing to stop someone designing a new UI to interface with its powerful, free, image processing libraries. It's a non-trivial task, but it is possible: a similar makeover for Photoshop, other than one originating with Adobe themselves, is not a possibility.\n\n(Looks like this has already happened, it seems. Latest versions of GIMP have an option for a Photoshop-like layout, and [[ZDNet's latest review|http://reviews.zdnet.co.uk/software/contentcreation/0,1000001068,39288136,00.htm]] is far more upbeat than a few years ago.)\n\nThe same goes for Moodle - last time I looked, out the box it looked a bit ugly. Nothing a bit of wizardry a good web designer couldn't remedy, and that will surely come. Same, of course, also goes for the OS repository software I'm involved with.\n\nIt's not a hard and fast rule, though: the OpenOffice office suite and the Mozilla internet applications suite (notably Firefox, Thunderbird and Seamonkey) do break the mould, and have reached a remarkable level of design maturity. Yet both have the best part of a decade's development in the open source arena, having evolved from already well implemented applications (StarOffice and Netscape) and being particular darlings of many of Microsoft's prominent competitors, such as Sun and Netscape.\n\nAnd, in the same corner, we must acknowledge the resurrection of Apple, which managed to have its cake and eat it, when it chose to switch its operating system to use a Unix variant. If not open source itself, it nevertheless bought it into line with many aspects of Linux culture and the many open source projects based on GNU/Linux. Yet Apple also built for MacOS X a completely wonderful graphical interface, the like of which no free OS has ever seen. An Apple Mac now offers discerning hackers the possibility of scripting, coding and compiling at their beloved command-line interface, yet at the same time being able to use arguably the best and most innovative commercially available GUI environment for other tasks, whether fun, business or creative!\n\nIn Raymond's terms, an Apple Mac is definitely the choice of the Open Source pragmatist.\n\n\n
The study outlined by Williams van Rooij is particularly fascinating when considered in the light of some longstanding practices.\n\nCertain classes of product, including database systems, report generators, operating systems and application suites aimed at large enterprises (SAP, SAGE) have long been sold by vendors in very restrictive packages. The customer may have very few choices to make once embarking on such a package. Even hardware choices and configurations may be limited. This is a hangover from the days when hardware and software were inseparable: to run an IBM or ICL machine meant running the same company's database and application development packages.\n\nIn the case of some applications suites, the vendor may also insist on providing the specialist help to configure, customise and install the system. Further upgrades or development may also only be at the behest of the vendor, or of specialist contractors possessing up-to-date certification from the vendor. To do otherwise may "invalidate your warranty". And those specialists don't come cheap - why should they, with all that training and certification to maintain?\n\nThen came Free Software and Open Source, and its ability to create first acceptable, robust operating systems, then applications that could start to vie with commercial offerings. The applications became more sophisticated - often still some way behind the commercial offerings - but these applications are customisable. ''Freely'' customisable, unlike, say, the house that SAP built. Expensive SAP or RPG developers can be dispensed with, in favour of cheaper, generic programmers familiar with Java, PHP, Perl - as long as they are familiar the application domain, whether education, libraries or accounts.\n\nThe model that Williams van Rooij's study presented to its participants, and which received a considerable degree of acceptance, is therefore precisely one that offers choice and flexibility. The institutions can choose an Open Source offering from several available, then choose how to develop that to best meet their needs. Significantly, they can also choose how to manage the ongoing development of that resource, whether through in-house developers, ad hoc contractors, or the "onshore outsourcing" package. All combinations are legitimate, and any institution may have good reasons to consider on more suitable than another.\n\nThe argument didn't quite wash ten years ago (when Raymond invoked the Bazaar) as the applications really weren't up to the job. But they have moved on - and it's encouraging to see in WvR's study, that a growing number senior administrators and senior information officers are aware of this. IBM, SAP, Adlib, Blackboard, etc., may all have excellent products, and but in the face of the flexibility and falling TCO of F/OSS systems, they cannot expect to take a tied customer base for granted.
Your name to sign your edits: <<option txtUserName>>\n<<option chkSinglePageMode>> Show One At A Time\n<<option chkAnimate>> Show Animations\n<<option chkSaveBackups>> Save Backups\n<<option chkAutoSave>> Auto Save\n----\nUploadOptions\nAdvancedOptions\nPluginManager\nImportTiddlers\n----\n//These Interface Options are saved in your browser//
I was intrigued to come across [[The DailyLit|http://www.dailylit.com]], where I can subscribe to have novels emailed to me every morning, in bite-sized daily chunks. I wonder if there are any useful pedagogical applications of this model. If nothing else it might finally be a way to tackle //Война и мир// in about 600 instalments. Ask me again in 2009.\n
<!--{{{-->\n<div id='header' class='header'>\n\n<div class='headerShadow'>\n<span class='searchBar' macro='search'></span>\n<span class='siteTitle' refresh='content' tiddler='SiteTitle'></span> \n<span class='siteSubtitle' refresh='content' tiddler='SiteSubtitle'></span>\n</div>\n<div id='topMenu' refresh='content' tiddler='MainMenu'></div>\n</div>\n\n<div id='sidebar'>\n<div id='sidebarOptions' refresh='content' tiddler='HaemoSideBarOptions'></div>\n<div id='sidebarTabs' refresh='content' force='true' tiddler='SideBarTabs'></div>\n</div>\n<div id='displayArea'>\n<div id='messageArea'></div>\n<div id='tiddlerDisplay'></div>\n</div>\n<div id='contentFooter' refresh='content' tiddler='contentFooter'></div>\n<!--}}}-->
Bit quiet on the blog front. To be honest, I miss a good essay - 1000 words of an essay to summarise and consolidate what one's been learning never did anyone any harm, did it? One can prepare for it, schedule it, miss the deadline, hand it in late... it always used to work for me!\n\nTrouble is there's just too much scattergun writing - emails, discussion boards, my own notes, the blog, chat - not to mention Second Life, Facebook. I can discuss things here in blog comments, or on the Discussion Board, or in WebCTMail, or even proper email. I could re-edit my points from the Discussion Board and put them here - but what's the point if they are on the DB?\n\nOthers have commented that the Discussion Board has become far too dominant. Announcements that should be prominent get buried among all the chatter. And let's not talk about the interface!\n\nThere's a good paper in "Feenberg - Right Or Wrong Or Too Far Gone?" or something like that - pulling together gobbets from here, from DB, and from the ever-growing forest of virtual post-its on my laptop screen.\n\nI've never really taken stock of my personal experience with chat (text-based IM). Interestingly, I've never much indulged in it with people I already know, but had great fun chatting with total strangers!\n\nThe e-portfolio discussion has been fascinating too, not least to see how dull they can be. It turns out I've had an e-Portfolio all along without knowing it - all the better for having never been near ELGG.\n\nI don't know if I want to show my workings, or send my thoughts deformed, unfinished into the world. But it seems as if nothing is ever finished online - perhaps that's why it's called a virtual world?
[[Papert|http://www.citeulike.org/user/bezbozhnik/article/3309086]] bemoans the absence of a word to denote the art of learning, to parallel "pedagogy" (the art of teaching) and "heuristics" (the art of problem solving). Revealing his interest in etymology, he proposes "mathetics" (though selon Wikipedia:Mathetics, the term was coined for this purpose by Comenius in the 17th Century).\n\nPapert uses a couple of case studies. In one he subversively suggests to a boy with apparent learning difficulties, struggling as he has been forbidden to count on his fingers, that he use his tongue and teeth instead. The other concerns his own difficulties in remembering the names of flowers, overcome when he realises that there is etymological fun to be had in relating the plants' names to their appearance.\n\nSo one conclusion we draw from Papert's discussion is that, whether as teachers or learners ourselves, we need to identify what those learning hooks are that will best serve the learning process. An apparent inability to learn suggests that those connexions have not been made, not an inherent inability to learn (after all, where is the human being who has never learned /anything/).\n
...just be sure to call it research.\n\nTook a look at the JISC/UK implementation of [[Turnitin|http://www.submit.ac.uk]], and it looks like a useful tool for assessments and assignments. I submitted two papers: one was a version of my [[IDEL Assignment]], the other was a copy of Sclater and Howie's 2003 published paper on Online Assessment.\n\nThe Originality Report on my paper reported 10% "unoriginality" (I think that's what it meant): it was interesting to see, in Turnitin's side-by-side display, the, er, synergies between my paper and the others I'd cited. But when I told it to ignore quotations and bibliography, unoriginality fell to 0%, i.e. 100% original. Did you doubt me?\n\nThe Originality Report for the published paper was 13% "unoriginality" - ''@@color(green):green@@'', in the traffic light iconography //de nos jours//, so apparently acceptable(!) However, significantly, it stuck at 13% even when quotes and bibliography were excluded.\n\nClearly no one should be hanged (or exonerated) based solely on a Turnitin report, but its ability to identify //likely// matches elsewhere on the internet, for further investigation by assessors, is valuable.\n\nStill to follow up the links from the Turnitin site, and also remind myself what the [[Internet Detective's|http://www.vts.intute.ac.uk/detective/]] got to say.\n\nHere are some [[more thoughts on plagiarism|More on plagiarism]].\n
[[A Web 2.0 Education]]\n[[ICT in education]]\n[[The Web and Boccaccio]]\n[[Blogs]]\n[[Wikis]]\n[[Web 2.0]]\n[[Warwick Blogs]]\n[[Flat Classroom Project]]\n[[Concludingly]]\n
//{{{\nTiddlyWiki.prototype.removeNotification = function(title,fn) {\n for (var i=0;i<this.namedNotifications.length;i++)\n if((this.namedNotifications[i].name == title) && (this.namedNotifications[i].notify == fn))\n this.namedNotifications.splice(i,1);\n}\n \n//checks to see if a tiddler exists in store or as a shadow.\nTiddlyWiki.prototype.isTiddler= function (title)\n {return store.tiddlerExists(title) || store.isShadowTiddler(title)}\n\n// Refresh all tiddlers in the Story\nStory.prototype.lewcidrefreshAllTiddlers = function()\n{\n var place = document.getElementById(this.container);\n var e = place.firstChild;\n if(!e) return;\n this.refreshTiddler(e.getAttribute("tiddler"),null,true);\n while((e = e.nextSibling) != null)\n this.refreshTiddler(e.getAttribute("tiddler"),null,true);\n}\n\nconfig.presentationPlugin ={\n};\n\nconfig.presentationPlugin.defaults = [\n {name: "StyleSheet", notify: refreshStyles},\n {name: "PageTemplate", notify: refreshPageTemplate}\n ];\n\nwindow.presentationMode='';\n\nfunction applyPresentationMode (oldMode,Mode)\n{\n presentationMode = Mode;\n var defaults = config.presentationPlugin.defaults;\n var oldStyleElement = document.getElementById(oldMode+"StyleSheet");\n if (oldStyleElement)\n {\n oldStyleElement.parentNode.removeChild(oldStyleElement);\n }\n for (var i=0; i<defaults.length; i++)\n {\n var def = defaults[i]["name"];\n var newMode = store.isTiddler(Mode + def)? Mode + def : def;\n store.removeNotification(oldMode + def, defaults[i]["notify"]);\n store.addNotification(newMode,defaults[i]["notify"]);\n store.notify(newMode); //just one do blanket notify instead?\n }\n story.lewcidrefreshAllTiddlers();\n}\n\nconfig.macros.author={};\nconfig.macros.author.handler= function (place,macroName,params,wikifier,paramString,tiddler) {\n var e = createTiddlyElement(place,"div");\n e.setAttribute("refresh","macro");\n e.setAttribute("macroName","author");\n e.setAttribute("params",paramString);\n this.refresh(e,paramString);\n}\n\nconfig.macros.author.refresh = function(place,params){\n if (window.lewcideditmode== false)\n return false;\n removeChildren(place);\n var oldMode = window.presentationMode;\n var newMode = (oldMode == "Author")?"":"Author";\n var label = (oldMode == "Author")? "Presentation Mode":"Author Mode";\n var tooltip = label;\n createTiddlyButton(place,label,tooltip,function() {\n applyPresentationMode(oldMode,newMode);\n });\n};\n\nStory.prototype.chooseTemplateForTiddler_old_presentation = Story.prototype.chooseTemplateForTiddler;\n\nStory.prototype.chooseTemplateForTiddler = function(title,template)\n{\n if (!template)\n template = DEFAULT_VIEW_TEMPLATE;\n var mode = presentationMode;\n if (template == DEFAULT_VIEW_TEMPLATE)\n {\n if (store.isTiddler(mode+"ViewTemplate"))\n return mode+"ViewTemplate";\n }\n else if (template == DEFAULT_EDIT_TEMPLATE)\n {\n if (store.isTiddler(mode+"EditTemplate"))\n return mode+"EditTemplate";\n }\n return this.chooseTemplateForTiddler_old_presentation(title,template);\n}\n\nwindow.lewcideditmode = false;\nconfig.paramifiers.author = {\n onstart: function(v) {\n if (v!="true")\n return false;\n applyPresentationMode("","Author");\n window.lewcideditmode = true;\n refreshDisplay();\n }\n};\n//}}}
!Theme\nQuestion Banks for Online Assessment\n!Issues\n* Interoperability (e.g. [[TOIA|http://www.toia.ac.uk/]])\n* Test blueprints (e.g. [[Innovate: Howell, 2007|http://www.innovateonline.info/index.php?view=article&id=409]])
/***\n|''Name:''|Publish Macro|\n|''Version:''|0.3 (4 Jan 2007)|\n|''Source''|http://jackparke.googlepages.com/jtw.html#PublishMacro ([[del.icio.us|http://del.icio.us/post?url=http://jackparke.googlepages.com/jtw.html%23PublishMacro]])|\n|''Author:''|[[Jack]]|\n|''Type:''|Macro|\n!Description\nPublish tiddlers tagged with these tags <<option txtPublishTags>> (comma seperated) as HTML pages to the subfolder 'publish' (you must create this). Use the PublishTemplateHead and PublishTemplateBody templates to style your pages and the PublishIndexTemplate to define an index page.\n!Usage\n{{{<<doPublish>>}}} <<doPublish>>\n!Revision History\n* Original by [[Jack]] 24 May 2006\n* Updated 2 Jan 2007\n* Refactored 4 Jan 2007\n\n!Code\n***/\n//{{{\nversion.extensions.doPublish = {major: 0, minor: 3,\nrevision: 0, date: new Date("Jan4, 2007")};\nconfig.macros.doPublish = {label: "publish", prompt: "Publish Tiddlers as HTML files"};\nif (config.options.txtPublishTags==undefined) config.options.txtPublishTags="publish";\nconfig.shadowTiddlers.PublishTemplateHead = '<title>%0 - %1</title>\sn<link rel="stylesheet" type="text/css" href="style.css"/>\sn<meta name="keywords" content="%3"/>'\nconfig.shadowTiddlers.PublishTemplateBody = '<div class="viewer"><small><a href=\s"index.html\s">Home</a> > %1</small><h1>%0</h1>\sn<h2>%1</h2>\sn%2\sn<hr>Tags: %3\sn<hr>%4, %5 (created %6)\sn</div>\sn'\nconfig.shadowTiddlers.PublishIndexTemplate = '<div class="viewer"><small><a href="index.html">Home</a> > %1</small><h1>%0</h1><h2>%1</h2>\sn<ul>%2\sn</ul>\sn<small>Published: %6</small>\sn</div>\sn';\nconfig.macros.doPublish.handler = function(place)\n{\n if(!readOnly)\n createTiddlyButton(place,this.label,this.prompt,function () {doPublish(); return false;},null,null,this.accessKey);\n}\nfunction doPublish() {\n var savedTiddlers = [];\n var tiddlers = store.getTiddlers("title");\n var place = document.getElementById(story.container)\n var HTMLTemplateHead = store.getTiddlerText("PublishTemplateHead");\n // We cannot render this template because <title> and other tags fail\n\n var HTMLTemplateBody = store.getTiddlerText("PublishTemplateBody");\n HTMLTemplateBody = renderTemplate(HTMLTemplateBody)\n\n HTMLTemplateBody = wiki2Web(HTMLTemplateBody);\n\n var PublishTags = config.options.txtPublishTags || "publish"; PublishTags = PublishTags.split(",")\n var PublishFolder = getPublishPath(); if (!PublishFolder) return;\n var indexFile = "";\n \n var indexFileTemplate = store.getTiddlerText("PublishIndexTemplate");\n // This does not allow <<myMacro>> but wants <div macro="myMacro">\n indexFileTemplate = renderTemplate(indexFileTemplate)\n // This option allows WIKI-syntax but is limited in it's HTML capabilities\n //indexFileTemplate = wikifyStatic(indexFileTemplate)\n\n for (var t = 0; t < tiddlers.length; t++) {\n var tiddler = tiddlers[t];\n if (tiddler.tags.containsAny(PublishTags)) {\n var tiddlerHTML = wikifyStatic(tiddler.text)\n var HTML = '<html>\sn\s<head>\sn' + HTMLTemplateHead + '\sn</head>\sn<body>\sn' + HTMLTemplateBody + '\sn</body>\sn</html>';\n HTML = HTML.format([\n wikifyPlain("SiteTitle").htmlEncode(),\n tiddler.title.htmlEncode(),\n wiki2Web(tiddlerHTML),\n tiddler.tags.join(", "),\n tiddler.modifier,\n tiddler.modified.toLocaleString(),\n tiddler.created.toLocaleString()\n ]);\n saveFile(PublishFolder + tiddler.title.filenameEncode() + ".html", HTML)\n indexFile += "<li><a href=\s"" + tiddler.title.filenameEncode() + ".html" + "\s">" + tiddler.title + "</a></li>\sn";\n story.closeTiddler(tiddler.title);\n }\n }\n indexFileTemplate = '<html>\sn\s<head>\sn' + HTMLTemplateHead + '\sn</head>\sn<body>\sn' + indexFileTemplate + '\sn</body>\sn</html>';\n indexFileTemplate = indexFileTemplate.format([wikifyPlain("SiteTitle").htmlEncode(), wikifyPlain("SiteSubtitle").htmlEncode(), "%2", "", "", "", (new Date()).toLocaleString()])\n\n indexFile = indexFileTemplate.replace("%2", indexFile)\n indexFile = wiki2Web(indexFile);\n saveFile(PublishFolder + "index.html", indexFile)\n saveFile(PublishFolder + "style.css", store.getTiddlerText("StyleSheet") + store.getTiddlerText("StyleSheetLayout") + store.getTiddlerText("StyleSheetColors"))\n var indexWin = window.open("file://" + PublishFolder.replace(/\s\s/g, "/") + "index.html", null); indexWin.focus();\n}\n\nfunction renderTemplate(html) {\n var result = document.createElement("div");\n result.innerHTML = html;\n applyHtmlMacros(result,null);\n var temp = result.innerHTML;\n //result.parentNode.removeChild(result);\n return temp;\n}\n\n// Convert wikified text to html\nfunction wiki2Web(wikiHTML) {\n var regexpLinks = new RegExp("<a .*?tiddlylink=.*?</a>","img");\n var result = wikiHTML.match(regexpLinks);\n if (result) {\n for(i = 0; i < result.length; i++) {\n var className = result[i].match(/ class="(.*?)"/i)?result[i].match(/ class="(.*?)"/i)[1]:"";\n var tiddlerName = result[i].match(/ tiddlylink="(.*?)"/i)[1];\n var url = tiddlerName.htmlDecode().filenameEncode() + ".html";\n if (!className.match(/tiddlyLinkNonExisting/i))\n wikiHTML = wikiHTML.myReplace(result[i], "<a class=\s"" + className + "\s" href=\s"" + url + "\s">" + tiddlerName + "</a>");\n else\n wikiHTML = wikiHTML.myReplace(result[i], "<a class=\s"" + className + "\s" title=\s"Page does not exist\s" href=\s"#\s">" + tiddlerName + "</a>");\n }\n wikiHTML = wikiHTML.replace(/ href="http:\s/\s//gi, " target=\s"_blank\s" href=\s"http://");\n }\n return wikiHTML\n}\nfunction getPublishPath()\n{\n var originalPath = document.location.toString();\n // Check we were loaded from a file URL\n if(originalPath.substr(0,5) != "file:")\n {\n alert(config.messages.notFileUrlError);\n if(store.tiddlerExists(config.messages.saveInstructions))\n story.displayTiddler(null,config.messages.saveInstructions);\n return;\n }\n var localPath = getLocalPath(originalPath);\n var backSlash = true;\n var dirPathPos = localPath.lastIndexOf("\s\s");\n if(dirPathPos == -1)\n {\n dirPathPos = localPath.lastIndexOf("/");\n backSlash = false;\n }\n var backupPath = localPath.substr(0,dirPathPos) + (backSlash ? "\s\s" : "/") + "publish\s\s";\n return backupPath;\n}\n// Replace without regex\nString.prototype.myReplace = function(sea, rep) {\n var t1 = this.indexOf(sea);\n var t2 = parseInt(this.indexOf(sea)) + parseInt(sea.length);\n var t3 = this.length;\n return this.substring(0, t1) + rep + this.substring(t2, t3)\n}\n// Convert illegal characters to underscores\nString.prototype.filenameEncode = function()\n{\n return(this.toLowerCase().replace(/[^a-z0-9_-]/g ,"_"));\n}\n//}}}
/***\n|''Name:''|RSSReaderPlugin|\n|''Description:''|This plugin provides a RSSReader for TiddlyWiki|\n|''Version:''|0.3.0|\n|''Date:''|Aug 24, 2006|\n|''Source:''|http://tiddlywiki.bidix.info/#RSSReaderPlugin|\n|''Documentation:''|http://tiddlywiki.bidix.info/#RSSReaderPluginDoc|\n|''Author:''|BidiX (BidiX (at) bidix (dot) info)|\n|''Credit:''|BramChen for RssNewsMacro|\n|''License:''|[[BSD open source license|http://tiddlywiki.bidix.info/#%5B%5BBSD%20open%20source%20license%5D%5D ]]|\n|''~CoreVersion:''|2.0.0|\n|''Browser:''|Firefox 1.5; InternetExplorer 6.0; Safari|\n|''Include:''|none|\n|''Require:''|none|\n***/\n//{{{\nversion.extensions.RSSReaderPlugin = {\n major: 0, minor: 3, revision: 0,\n date: new Date("Aug 24, 2006"),\n author: "BidiX",\n credit: "BramChen for RssNewsMacro",\n source: "http://TiddlyWiki.bidix.info/#RSSReaderPlugin",\n documentation : "http://TiddlyWiki.bidix.info/#RSSReaderPluginDoc",\n author: 'BidiX (BidiX (at) bidix (dot) info',\n license: '[[BSD open source license|http://tiddlywiki.bidix.info/#%5B%5BBSD%20open%20source%20license%5D%5D]]',\n coreVersion: '2.0.0',\n browser: 'Firefox 1.5; InternetExplorer 6.0; Safari' \n};\n\nconfig.macros.rssReader = {\n dateFormat: "DDD, DD MMM YYYY",\n itemStyle: "display: block;border: 1px solid black;padding: 5px;margin: 5px;", //useed '@@'+itemStyle+itemText+'@@'\n msg:{\n permissionDenied: "Permission to read preferences was denied.",\n noRSSFeed: "No RSS Feed at this address %0",\n urlNotAccessible: " Access to %0 is not allowed"\n },\n cache: [], // url => request\n desc: "noDesc",\n // feedURL: "",\n place:"",\n handler: function(place,macroName,params,wikifier,paramString,tiddler){\n var desc = params[0];\n var feedURL = params[1];\n // var toFilter = (params[2] ? params[2] : false);\n var toFilter = false;\n var filterString;\n if (params[2] != undefined) {\n toFilter = true;\n if (params[2].match(/\sw+/))\n filterString = params[2];\n else\n filterString = tiddler.title;\n }\n var place = createTiddlyElement(place, "div", "RSSReader");\n wikify("^^<<rssFeedUpdate "+feedURL+" [[" + tiddler.title + "]]>>^^\sn",place);\n if (this.cache[feedURL]) {\n this.processResponse(this.cache[feedURL], feedURL, place, desc, toFilter, filterString);\n }\n else {\n this.asyncGet(feedURL, place, desc, toFilter, filterString);\n }\n },\n\n asyncGet: function (feedURL, place, desc, toFilter, filterString){\n var xmlhttp;\n try {xmlhttp=new XMLHttpRequest();}\n catch (e) {\n try {xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");}\n catch (e) {\n try {xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");}\n catch (e) { displayMessage(e.description?e.description:e.toString());}\n }\n }\n if (!xmlhttp){\n return;\n }\n if (window.netscape){\n try {\n if (document.location.protocol.indexOf("http") == -1) {\n netscape.security.PrivilegeManager.enablePrivilege("UniversalBrowserRead");\n }\n }\n catch (e) { displayMessage(e.description?e.description:e.toString()); }\n }\n xmlhttp.onreadystatechange=function (){\n if (xmlhttp.readyState==4) {\n if (xmlhttp.status==200 || xmlhttp.status===0) {\n config.macros.rssReader.processResponse(xmlhttp, feedURL, place, desc, toFilter, filterString);\n }\n else {\n displayMessage("Problem retrieving XML data:" + xmlhttp.statusText);\n }\n }\n };\n try {\n xmlhttp.open("GET",feedURL,true);\n if (config.browser.isIE) {\n xmlhttp.send();\n }\n else {\n xmlhttp.send(null);\n }\n }\n catch (e) {\n wikify(e.toString()+this.urlNotAccessible.format([feedURL]), place);\n }\n },\n processResponse: function(xmlhttp, feedURL, place, desc, toFilter, filterString){ \n if (window.netscape){\n try {\n if (document.location.protocol.indexOf("http") == -1) {\n netscape.security.PrivilegeManager.enablePrivilege("UniversalBrowserRead");\n }\n }\n catch (e) { displayMessage(e.description?e.description:e.toString()); }\n }\n if (xmlhttp.responseXML){\n this.cache[feedURL] = xmlhttp;\n this.genRssNews(xmlhttp.responseXML, place, feedURL, desc, toFilter, filterString);\n }\n else {\n var dom = (new DOMParser()).parseFromString(xmlhttp.responseText, "text/xml"); \n if (dom) {\n this.cache[feedURL] = xmlhttp;\n this.genRssNews(dom, place, feedURL, desc, toFilter, filterString);\n }\n else {\n wikify("<html>"+xmlhttp.responseText+"</html>", place);\n displayMessage(this.msg.noRSSFeed.format([feedURL]));\n }\n }\n },\n genRssNews: function(xml, place, feedURL, desc, toFilter, filterString){\n // Channel\n var chanelNode = xml.getElementsByTagName('channel').item(0);\n var chanelTitleElement = (chanelNode ? chanelNode.getElementsByTagName('title').item(0) : null);\n var chanelTitle = "";\n if ((chanelTitleElement) && (chanelTitleElement.firstChild)) chanelTitle = chanelTitleElement.firstChild.nodeValue;\n var chanelLinkElement = (chanelNode ? chanelNode.getElementsByTagName('link').item(0) : null);\n var chanelLink = "";\n if (chanelLinkElement) chanelLink = chanelLinkElement.firstChild.nodeValue;\n var titleTxt = "!![["+chanelTitle+"|"+chanelLink+"]]\sn";\n var title = createTiddlyElement(place,"div",null,"ChanelTitle",null);\n wikify(titleTxt,title);\n // ItemList\n var itemList = xml.getElementsByTagName('item');\n var article = createTiddlyElement(place,"ul",null,null,null);\n var lastDate;\n var re;\n if (toFilter) \n re = new RegExp(filterString.escapeRegExp());\n for (var i=0; i<itemList.length; i++){\n var titleElm = itemList[i].getElementsByTagName('title').item(0);\n var titleText = (titleElm ? titleElm.firstChild.nodeValue : '');\n if (toFilter && ! titleText.match(re)) {\n continue;\n }\n var descText = '';\n var isWikitext = false;\n var descElem = itemList[i].getElementsByTagName('wikitext').item(0);\n if (descElem){\n try{\n isWikitext = true;\n descText = "\sn"+descElem.firstChild.nodeValue;}\n catch(e){}\n }\n else {\n descElem = itemList[i].getElementsByTagName('encoded').item(0);\n if (descElem){\n try{descText = descElem.firstChild.nodeValue;}\n catch(e){}\n descText = "<html>"+descText+"</html>";\n }\n else {\n descElem = itemList[i].getElementsByTagName('description').item(0);\n if (descElem){\n try{descText = descElem.firstChild.nodeValue;}\n catch(e){}\n descText = descText.replace(/<br \s/>/g,'\sn');\n if (desc == "asHtml")\n descText = "<html>"+descText+"</html>";\n }\n }\n }\n var linkElm = itemList[i].getElementsByTagName("link").item(0);\n var linkURL = linkElm.firstChild.nodeValue;\n var pubElm = itemList[i].getElementsByTagName('pubDate').item(0);\n var pubDate;\n if (!pubElm) {\n pubElm = itemList[i].getElementsByTagName('date').item(0); // for del.icio.us\n if (pubElm) {\n pubDate = pubElm.firstChild.nodeValue;\n pubDate = this.formatDateString(this.dateFormat, pubDate);\n }\n else {\n pubDate = '0';\n }\n }\n else {\n pubDate = (pubElm ? pubElm.firstChild.nodeValue : 0);\n pubDate = this.formatString(this.dateFormat, pubDate);\n }\n titleText = titleText.replace(/\s[|\s]/g,'');\n var rssText = '** '+'[[' + titleText + '|' + linkURL + ']]' + '\sn' ;\n if ((desc != "noDesc") && descText){\n if (version.extensions.nestedSliders){\n rssText = rssText.replace(/\sn/g,' ');\n descText = '+++[...]\sn'\n +(isWikitext ? '\sn<<rssFeedImportTiddler '+ feedURL + ' [['+titleText+']]>>':'')\n +'@@'+this.itemStyle+descText+'\sn@@\sn'\n +'===';\n }\n rssText = rssText + descText + '\sn\sn';\n }\n var story;\n if ((lastDate != pubDate) && ( pubDate != '0')) {\n story = createTiddlyElement(article,"li",null,"RSSItem",pubDate);\n lastDate = pubDate;\n }\n else {\n lastDate = pubDate;\n }\n story = createTiddlyElement(article,"div",null,"RSSItem",null);\n wikify(rssText,story);\n }\n },\n formatString: function(template, theDate){\n var dateString = new Date(theDate);\n template = template.replace(/hh|mm|ss/g,'');\n return dateString.formatString(template);\n },\n formatDateString: function(template, theDate){\n var dateString = new Date(theDate.substr(0,4), theDate.substr(5,2) - 1, theDate.substr(8,2)\n /*, theDate.substr(11,2), theDate.substr(14,2), theDate.substr(17,2)*/\n );\n return dateString.formatString(template);\n }\n \n};\n//}}}\n\n//{{{\nconfig.macros.rssFeedUpdate = {\n label: "Update",\n prompt: "Clear the cache and redisplay this RssFeed",\n handler: function(place,macroName,params) {\n var feedURL = params[0];\n var tiddlerTitle = params[1];\n createTiddlyButton(place, this.label, this.prompt, \n function () {\n if (config.macros.rssReader.cache[feedURL]) {\n config.macros.rssReader.cache[feedURL] = null; \n //story.refreshTiddler(tiddlerTitle,null, true);\n }\n story.refreshTiddler(tiddlerTitle,null, true);\n return false;});\n }\n};\n//}}}\n\n//{{{\nconfig.macros.rssFeedImportTiddler = {\n label: "Import",\n prompt: "Import this tiddler in this TiddlyWiki",\n askReplaceMsg: "Tiddler already exists, replace it ?",\n handler: function(place,macroName,params) {\n var feedUrl = params[0];\n var tiddlerTitle = params[1];\n createTiddlyButton(place, this.label, this.prompt, \n function () {\n if (feedUrl && config.macros.rssReader.cache[feedUrl]) {\n var tiddler = config.macros.rssFeedImportTiddler.parseRssNews(config.macros.rssReader.cache[feedUrl].responseXML, tiddlerTitle);\n if (tiddler && (! store.getTiddler(tiddlerTitle) || confirm(config.macros.rssFeedImportTiddler.askReplaceMsg))) {\n store.addTiddler(tiddler);\n store.notify(tiddler.title, true);\n store.setDirty(true);\n }\n }\n return false;});\n },\n \n // parse a RssFeed for retrieving a Tiddler with title\n parseRssNews: function(xml, title) {\n // ItemList\n if (document.location.protocol.indexOf("http") == -1) {\n netscape.security.PrivilegeManager.enablePrivilege("UniversalBrowserRead");\n }\n\n var itemList = xml.getElementsByTagName('item');\n for (var i=0; i<itemList.length; i++){\n\n var titleElm = itemList[i].getElementsByTagName('title').item(0);\n var titleText = titleElm.firstChild.nodeValue;\n if (titleText == title) {\n // <tiddlywiki:title>\n // titleText\n titleText = titleText.htmlDecode();\n // <tiddlywiki:wikitext>\n var elem = itemList[i].getElementsByTagName('wikitext').item(0);\n var text = elem ? elem.firstChild.nodeValue.htmlDecode() : "";\n // <tiddlywiki:modifier>\n elem = itemList[i].getElementsByTagName('modifier').item(0);\n var modifier = elem ? elem.firstChild.nodeValue : "";\n // <tiddlywiki:modified>\n elem = itemList[i].getElementsByTagName('modified').item(0);\n var modified = elem ? Date.convertFromYYYYMMDDHHMM(elem.firstChild.nodeValue) : "";\n // <tiddlywiki:created>\n elem = itemList[i].getElementsByTagName('created').item(0);\n var created = elem ? Date.convertFromYYYYMMDDHHMM(elem.firstChild.nodeValue) : "";\n // <tiddlywiki:links>\n // Links ?\n // <tiddlywiki:tags>\n elem = itemList[i].getElementsByTagName('tags').item(0);\n var tags = elem ? elem.firstChild.nodeValue.htmlDecode() : "";\n var tiddler = new Tiddler();\n tiddler.assign(titleText,text,modifier,modified,tags,created);\n return tiddler;\n }\n }\n // not found \n alert("Tiddler \s[[" + title +"]] notFound.");\n return null;\n }\n\n};\n\n//}}}\n
//last update: RSSReaderPlugin v 0.3.0//\n\n!Description\nThis plugin provides a RSSReader for TiddlyWiki\n* It accesses asynchronously an RSSFeed\n*Depending on the chanel item format, each item could be written as :\n**simple text wikified\n**html\n*If item contains content:encoded element, the text is displayed as html\n*If item contains tiddlywiki:wikitext using [[TiddlyWikiNamespace]], the tiddler could then be imported.\n\n!Usage\n{{{\n<<rssReader noDesc|asHtml|asText rssUrl ['filtering string']>>\n noDesc: only title of item is printed\n\n asHtml: if you know that description contain html (links, img ...), \n the text is enclosed with <html> </html>\n\n asText: if the description should not be interpreted as html the \n description is wikified\n\n rssUrl: the rssFeed url that could be accessed. \n\n 'filtering string': if present, the rssfeed item title must contained \n this string to be displayed. \n If 'filering string' contained space characters only, the tiddler \n title is used for filtering.\n\n}}}\n\nFor security reasons, if the TiddlyWiki is accessed from http, a ProxyService shaould be used to access an rssFeed from an other site. See examples for different cases. \n\n!examples\n| !reader | !RSSFeed type | !working from | !importTiddler |\n| BidiXTWRSS |TiddlyWikiNamespace | file: or tiddlywiki.bidix.info | yes |\n| [[Le Monde]] | Description asText | file: or tiddlywiki.bidix.info using proxy | no |\n| YahooNewsSport | Description asHtml | file: or tiddlywiki.bidix.info using proxy | no |\n| TiddlyForgeRSS | content:encoded | file: or tiddlywiki.bidix.info using proxy | no |\n| TiddlyWikiRSS | Description asText | file: or tiddlywiki.bidix.info using proxy | no |\n| [[Libération]] | noDesc | file: or tiddlywiki.bidix.info using proxy | no |\n| [[TestComment]] | asText and filters | file: or tiddlywiki.bidix.info using proxy | no |\n\n!Revision history\n* v0.3.0 (24/08/2006)\n** Filter on RSS item title\n** Place to display redefined for asynchronous processing\n* v0.2.2 (22/08/2006)\n**Haloscan feed has no pubDate.\n* v0.2.1 (08/05/2006)\n* v0.2.0 (01/05/2006)\n**Small adapations for del.icio.us feed\n* v0.1.1 (28/04/2006)\n**Bug : Channel without title \n* v0.1.0 (24/04/2006)\n** initial release\n\n\n
//''N.b.'': For ease of use on the Web, and since, with only one exception, all of my references are to digital resources online, I have included a URL and retrieval date for all resources accessed online.//\n* Barrett, H. (2004). Digital Stories of Deep Learning. Retrieved: December 27th, 2006. http://electronicportfolios.org/digistory/epstory.html\n* Blood, R. (2000). Weblogs: A History And Perspective. Retrieved: December 6th,. 2006. http://www.rebeccablood.net/essays/weblog_history.html\n* Brown University (2000?). The Decameron Web. Retrieved: December 28th, 2006. http://www.brown.edu/Departments/Italian_Studies/dweb/\n* Colaric, S. and Jonassen, D. (2001). Information equals knowledge, searching equals learning, and hyperlinking is good instruction: myths about learning from the World Wide Web. Computers in the Schools, Vol. 17, No. 3-4, pp. 159-169. Retrieved: December 18th, 2006. http://portal.acm.org/citation.cfm?id=543151.543161\n* Dreyfus, H. L. (2001). On the internet. (London, Routledge): pp.27-49. Retrieved: 7th January, 2007. https://www.vle.ed.ac.uk/webct/RelativeResourceManager/Template/readings/Dreyfus27.pdf\n* Feenberg, A. (1989). The written world: On the theory and practice of computer conferencing. In Mindweave: communication, computers and distance education. R. Mason & A. Kaye (Eds.) (Oxford, Pergamon Press): pp. 22-39. Retrieved: December 28th, 2006. http://www-rohan.sdsu.edu/faculty/feenberg/Writworl.htm\n* Garrison, D. (2006). Online Collaboration Principles. Journal of Asynchronous Learning Networks, 10(1). Retrieved: December 28th, 2006. http://www.sloan-c.org/publications/jaln/v10n1/v10n1_3garrison.asp\n* Jakes, D. (2006). Techlearning > > Wild about Wikis. Retrieved: December 19th, 2006. http://www.techlearning.com/story/showArticle.php?articleID=191801354\n* Kopyc, S. (2006). Enhancing Teaching with Technology: Are We There Yet? Innovate, 3(2). Retrieved: January 1st, 2007. http://www.innovateonline.info/index.php?view=article&id=74\n* Lindsay, J, and Davis, V. (2006). The Flat Classroom Project. Retrieved: December 5th, 2006. http://flatclassroomproject.wikispaces.com/\n** Davis, V. (2006). Cool Cat Teacher Blog. Retrieved: January 7th, 2006. http://coolcatteacher.blogspot.com/\n** Lindsay, J. (2006). Literacy Ideals. Retrieved: January 7th 2006. http://elgg.net/itgs/weblog/141807.html\n* ~McLellan, J. (2006). Just do it... blog it! The Guardian, 5 May 2006. Retrieved January 6th, 2007. http://technology.guardian.co.uk/online/story/0,3605,1476175,00.html\n* O'Reilly, T. (2005). What Is Web 2.0? Retrieved: December 18th, 2006. http://www.oreillynet.com/pub/a/oreilly/tim/news/2005/09/30/what-is-web-20.html\n* Papert, S. (2006). Mindstorms: Children, Computers and Powerful Ideas. In The New Media Reader. N. ~Wardrup-Fruin and N. Montfort (Eds) (Cambridge, MIT Press): p. 419.\n*Walker, J. (2006). Network Literacy: Learning with Blogging and Web 2.0. Retrieved: December 5th, 2006. http://jilltxt.net/?p=1662\n* Warwick University (2004). Warwick Blogs. Retrieved: January 5th, 2007. http://blogs.warwick.ac.uk/\n** Barton, Natalie (2006). A Snort Story. Retrieved: January 5th, 2007. http://blogs.warwick.ac.uk/nataliebarton/entry/a_snort_story/\n** Retout, Tim: "Philosophy Of Software". Retrieved: January 5th, 2007. http://blogs.warwick.ac.uk/tretout/entry/philosophy_of_software/\n** Warwick Blogs: FAQ: Why is Warwick providing blogs? Retrieved: January 5th, 2007. http://www2.warwick.ac.uk/services/its/servicessupport/web/blogs/faqs/general/why\n* World of Spectrum (2007). Software - Educational. Retrieved: November 4th 2007. http://www.worldofspectrum.org/educatio.html \n\n[[Assignment index|IDEL Assignment]]
For PG's book: /ToP, Commemorating your ... and wishing you a long and happy retirement, just like another Great Investigator turned Bee-Keeper.
[[home|E-Learning]]<<search>><<closeAll>><<permaview>><<newTiddler>><<newJournal 'DD MMM YYYY' journal>><<saveChanges>><<upload>><<slider chkSliderOptionsPanel OptionsPanel 'options »' 'Change TiddlyWiki advanced options'>>
/***\n|''Name:''|SinglePageModePlugin|\n|''Source:''|http://www.TiddlyTools.com/#SinglePageModePlugin|\n|''Author:''|Eric Shulman - ELS Design Studios|\n|''License:''|[[Creative Commons Attribution-ShareAlike 2.5 License|http://creativecommons.org/licenses/by-sa/2.5/]]|\n|''~CoreVersion:''|2.0.10|\n\nNormally, as you click on the links in TiddlyWiki, more and more tiddlers are displayed on the page. The order of this tiddler display depends upon when and where you have clicked. Some people like this non-linear method of reading the document, while others have reported that when many tiddlers have been opened, it can get somewhat confusing.\n\n!!!!!Usage\n<<<\nSinglePageMode allows you to configure TiddlyWiki to navigate more like a traditional multipage web site with only one item displayed at a time. When SinglePageMode is enabled, the title of the current tiddler is automatically displayed in the browser window's titlebar and the browser's location URL is updated with a 'permalink' for the current tiddler so that it is easier to create a browser 'bookmark' for the current tiddler.\n\nEven when SinglePageMode is disabled (i.e., displaying multiple tiddlers is permitted), you can reduce the potential for confusion by enable TopOfPageMode, which forces tiddlers to always open at the top of the page instead of being displayed following the tiddler containing the link that was clicked.\n<<<\n!!!!!Configuration\n<<<\nWhen installed, this plugin automatically adds checkboxes in the AdvancedOptions tiddler so you can enable/disable the plugin behavior. For convenience, these checkboxes are also included here:\n\n<<option chkSinglePageMode>> Display one tiddler at a time\n<<option chkTopOfPageMode>> Always open tiddlers at the top of the page\n<<<\n!!!!!Installation\n<<<\nimport (or copy/paste) the following tiddlers into your document:\n''SinglePageModePlugin'' (tagged with <<tag systemConfig>>)\n^^documentation and javascript for SinglePageMode handling^^\n\nWhen installed, this plugin automatically adds checkboxes in the ''shadow'' AdvancedOptions tiddler so you can enable/disable this behavior. However, if you have customized your AdvancedOptions, you will need to ''manually add these checkboxes to your customized tiddler.''\n<<<\n!!!!!Revision History\n<<<\n''2006.07.04 [2.2.1]'' in hijack for displayTiddlers(), suspend TPM as well as SPM so that DefaultTiddlers displays in the correct order.\n''2006.06.01 [2.2.0]'' added chkTopOfPageMode (TPM) handling\n''2006.02.04 [2.1.1]'' moved global variable declarations to config.* to avoid FireFox 1.5.0.1 crash bug when assigning to globals\n''2005.12.27 [2.1.0]'' hijack displayTiddlers() so that SPM can be suspended during startup while displaying the DefaultTiddlers (or #hash list). Also, corrected initialization for undefined SPM flag to "false", so default behavior is to display multiple tiddlers\n''2005.12.27 [2.0.0]'' Update for TW2.0\n''2005.11.24 [1.1.2]'' When the back and forward buttons are used, the page now changes to match the URL. Based on code added by Clint Checketts\n''2005.10.14 [1.1.1]'' permalink creation now calls encodeTiddlyLink() to handle tiddler titles with spaces in them\n''2005.10.14 [1.1.0]'' added automatic setting of window title and location bar ('auto-permalink'). feature suggestion by David Dickens.\n''2005.10.09 [1.0.1]'' combined documentation and code in a single tiddler\n''2005.08.15 [1.0.0]'' Initial Release\n<<<\n!!!!!Credits\n<<<\nThis feature was developed by EricShulman from [[ELS Design Studios|http:/www.elsdesign.com]].\nSupport for BACK/FORWARD buttons adapted from code developed by Clint Checketts\n<<<\n!!!!!Code\n***/\n//{{{\nversion.extensions.SinglePageMode= {major: 2, minor: 2, revision: 1, date: new Date(2006,7,3)};\n\nif (config.options.chkSinglePageMode==undefined) config.options.chkSinglePageMode=false;\nconfig.shadowTiddlers.AdvancedOptions += "\sn<<option chkSinglePageMode>> Display one tiddler at a time";\n\nif (config.options.chkTopOfPageMode==undefined) config.options.chkTopOfPageMode=false;\nconfig.shadowTiddlers.AdvancedOptions += "\sn<<option chkTopOfPageMode>> Always open tiddlers at the top of the page";\n\nconfig.SPMTimer = 0;\nconfig.lastURL = window.location.hash;\nfunction checkLastURL()\n{\n if (!config.options.chkSinglePageMode)\n { window.clearInterval(config.SPMTimer); config.SPMTimer=0; return; }\n if (config.lastURL == window.location.hash)\n return;\n var tiddlerName = convertUTF8ToUnicode(decodeURI(window.location.hash.substr(1)));\n tiddlerName=tiddlerName.replace(/\s[\s[/,"").replace(/\s]\s]/,""); // strip any [[ ]] bracketing\n if (tiddlerName.length) story.displayTiddler(null,tiddlerName,1,null,null);\n}\n\nif (Story.prototype.SPM_coreDisplayTiddler==undefined) Story.prototype.SPM_coreDisplayTiddler=Story.prototype.displayTiddler;\nStory.prototype.displayTiddler = function(srcElement,title,template,animate,slowly)\n{\n if (config.options.chkSinglePageMode) {\n window.location.hash = encodeURIComponent(String.encodeTiddlyLink(title));\n config.lastURL = window.location.hash;\n document.title = wikifyPlain("SiteTitle") + " - " + title;\n story.closeAllTiddlers();\n if (!config.SPMTimer) config.SPMTimer=window.setInterval(function() {checkLastURL();},1000);\n }\n if (config.options.chkTopOfPageMode) { story.closeTiddler(title); window.scrollTo(0,0); srcElement=null; }\n this.SPM_coreDisplayTiddler(srcElement,title,template,animate,slowly)\n}\n\nif (Story.prototype.SPM_coreDisplayTiddlers==undefined) Story.prototype.SPM_coreDisplayTiddlers=Story.prototype.displayTiddlers;\nStory.prototype.displayTiddlers = function(srcElement,titles,template,unused1,unused2,animate,slowly)\n{\n // suspend single-page mode when displaying multiple tiddlers\n var saveSPM=config.options.chkSinglePageMode; config.options.chkSinglePageMode=false;\n var saveTPM=config.options.chkTopOfPageMode; config.options.chkTopOfPageMode=false;\n this.SPM_coreDisplayTiddlers(srcElement,titles,template,unused1,unused2,animate,slowly);\n config.options.chkSinglePageMode=saveSPM; config.options.chkTopOfPageMode=saveTPM;\n}\n//}}}
richard's personal on-line non-linear e-learning web notebook portfolio thing
R:e:learning
/***\n\n''Inspired by [[TiddlyPom|http://www.warwick.ac.uk/~tuspam/tiddlypom.html]]''\n\n|Name|SplashScreenPlugin|\n|Created by|SaqImtiaz|\n|Location|http://lewcid.googlepages.com/lewcid.html#SplashScreenPlugin|\n|Version|0.21 |\n|Requires|~TW2.08+|\n!Description:\nProvides a simple splash screen that is visible while the TW is loading.\n\n!Installation\nCopy the source text of this tiddler to your TW in a new tiddler, tag it with systemConfig and save and reload. The SplashScreen will now be installed and will be visible the next time you reload your TW.\n\n!Customizing\nOnce the SplashScreen has been installed and you have reloaded your TW, the splash screen html will be present in the MarkupPreHead tiddler. You can edit it and customize to your needs.\n\n!History\n* 20-07-06 : version 0.21, modified to hide contentWrapper while SplashScreen is displayed.\n* 26-06-06 : version 0.2, first release\n\n!Code\n***/\n//{{{\nvar old_lewcid_splash_restart=restart;\n\nrestart = function()\n{ if (document.getElementById("SplashScreen"))\n document.getElementById("SplashScreen").style.display = "none";\n if (document.getElementById("contentWrapper"))\n document.getElementById("contentWrapper").style.display = "block";\n \n old_lewcid_splash_restart();\n \n if (splashScreenInstall)\n {if(config.options.chkAutoSave)\n {saveChanges();}\n displayMessage("TW SplashScreen has been installed, please save and refresh your TW.");\n }\n}\n\n\nvar oldText = store.getTiddlerText("MarkupPreHead");\nif (oldText.indexOf("SplashScreen")==-1)\n {var siteTitle = store.getTiddlerText("SiteTitle");\n var splasher='\sn\sn<style type="text/css">#contentWrapper {display:none;}</style><div id="SplashScreen" style="border: 3px solid #ccc; display: block; text-align: center; width: 320px; margin: 100px auto; padding: 50px; color:#000; font-size: 28px; font-family:Tahoma; background-color:#eee;"><b>'+siteTitle +'</b> is loading<blink> ...</blink><br><br><span style="font-size: 14px; color:red;">Requires Javascript.</span></div>';\n if (! store.tiddlerExists("MarkupPreHead"))\n {var myTiddler = store.createTiddler("MarkupPreHead");}\n else\n {var myTiddler = store.getTiddler("MarkupPreHead");}\n myTiddler.set(myTiddler.title,oldText+splasher,config.options.txtUserName,null,null);\n store.setDirty(true);\n var splashScreenInstall = true;\n}\n//}}}
/*{{{*/\n/* New Style for ReLearning Tiddlywiki based on */\n/*Haemoglobin Theme for TiddlyWiki*/\n/*Design and CSS by Saq Imtiaz*/\n/*Version 1.0*/\n/*}}}*/\n/*{{{*/\n\n#sidebarTabs {font-family:arial,helvetica;}\n\nbody\n{background:#fefefe;}\n\n#contentWrapper {\n font-family: Verdana, Arial, Tahoma, Sans-Serif;\n color: #555555;\nmargin:1.9em auto 1em ; width:800px;}\n\n#header {background:#fefefe;}\n\n.headerShadow { padding: 1.4em 0em 0.5em 1em; }\n\n.siteTitle {\n font-family: 'Trebuchet MS' sans-serif;\n font-weight: bold;\n font-size: 36px;\n color: #292421;\n background-color: #FFF;\n}\n\n.siteSubtitle {\n font-size: 1.0em;\n display: block;\n margin: .5em 3em; color: #999;\n}\n\n.clearAll {clear:both;}\n.tagClear {clear:none;}\n#sidebar {position:relative; float:right; display:inline; right:0;}\n\na{\ncolor:#BF2323;\ntext-decoration: none; font-weight:normal;\n}\n\na:hover{\ncolor:#BF2323;\nbackground-color: #fefefe;\nborder-bottom:1px solid #BF2323;\n}\n\n.viewer .button, .editorFooter .button{\ncolor: #555;\nborder: 1px solid #BF2323;\n}\n\n.viewer .button:hover,\n.editorFooter .button:hover{\ncolor: #fff;\nbackground: #BF2323;\nborder-color: #BF2323;\n}\n\n.viewer .button:active, .viewer .highlight,.editorFooter .button:active, .editorFooter .highlight{color:#fff; background:#9F1313;border-color:#9F1313;}\n\n#topMenu br {display:none;}\n\n#topMenu {padding:0.45em 1em; background:#BF2323;}\n\n#topMenu a, #topMenu .tiddlyLink, #topMenu .button {color:#f1f1f1; padding:0.3em 0.45em; margin:0 4px;font-size:120%;font-weight:normal;font-variant: small-caps; border:none; background:#BF2323; text-decoration:none; }\n\n#topMenu a:hover, #topMenu .tiddlyLink:hover, #topMenu .button:hover, #topMenu .button:active, #topMenu .highlight {color:#fff;text-decoration:none; background:#9F1313; }\n\n\n\n#displayArea{margin:0 17em 2em 0.5em;}\n\n.tiddler {padding-left:0;}\n\n.title {color:#292421; border-bottom:1px solid#BF2323; }\n.subtitle, .subtitle a { color: #999999; font-size: 1.0em;margin:0.2em;}\n.shadow .title{color:#999;}\n\n.toolbar {font-size:85%;}\n.selected .toolbar a {color:#999999;}\n.selected .toolbar a:hover {color:#333; background:transparent;border:1px solid #fff;}\n\n.toolbar .button:hover, .toolbar .highlight, .toolbar .marked, .toolbar a.button:active{color:#333; background:transparent;border:1px solid #fff;}\n\n * html .viewer pre {\n\nmargin-left: 0em;\n}\n\n * html .editor textarea, * html .editor input {\n\nwidth: 98%;\n}\n\n/***\n!Sidebar\n***/\n#sidebar {position:relative;float:right; line-height: 1.4em; border-left:0px solid#000; display:inline; background:#fefefe; right:0; margin-bottom:2em !important; margin-bottom:1em;\nwidth: 16em;}\n\n/***\n!SidebarOptions\n***/\n#sidebarOptions {padding-left:0.5em; padding-top:2em;}\n\n#sidebarOptions a {\n color:#999;\n text-decoration: none;}\n\n#sidebarOptions a:hover, #sidebarOptions a:active {\n color:#CC0000;\n background-color:#f5f5f5;border:1px solid #f5f5f5;\n }\n\n#sidebarOptions input {border:1px solid #999; }\n\n\n\n .listTitle {color:#888;}\n\n#sidebarTabs .tabContents {background:#fefefe;}\n#sidebarTabs .tabContents .tiddlyLink, #sidebarTabs .tabContents .button{color:#999;}\n#sidebarTabs .tabContents .tiddlyLink:hover,#sidebarTabs .tabContents .button:hover{color:#CC0000;background:#fefefe; text-decoration:none;border:none;}\n\n#sidebarTabs .tabContents .button:hover, #sidebarTabs .tabContents .highlight, #sidebarTabs .tabContents .marked, #sidebarTabs .tabContents a.button:active{color:#CC0000;background:#fefefe}\n\n\n.tabSelected{color:#fefefe; background:#999;}\n\n\n\n .tabSelected, .tabSelected:hover {\n color: #555;\n background: #fefefe;\n border: solid 1px #ccc;\n\n}\n\n#sidebarTabs .tabUnselected:hover { border-bottom: none;padding-bottom:3px;color:#999;}\n\n .tabUnselected {\n color: #999;\n background: #eee;\n border: solid 1px #ccc;\n\n}\n\n.tabUnselected:hover {text-decoration:none; border:1px solid #ccc;}\n\n#sidebarTabs .tabUnselected { border-bottom: none;padding-bottom:3px;}\n#sidebarTabs .tabSelected{padding-bottom:3px;}\n\n#sidebarOptions .sliderPanel {\n background: #eee; border:1px solid#ccc;\n font-size: .9em;\n}\n\n#sidebarOptions .sliderPanel input {border:1px solid #999;}\n#sidebarOptions .sliderPanel .txtOptionInput {border:1px solid #999;width:9em;}\n\n#sidebarOptions .sliderPanel a {font-weight:normal; color:#555;background-color: #eee; border-bottom:1px dotted #333;}\n\n\n#sidebarOptions .sliderPanel a:hover {\ncolor:#111;\nbackground-color: #eee;\nborder:none;\nborder-bottom:1px dotted #111;\n}\n\n.tabContents {background:#fefefe;}\n\n\n\n\n.tagging, .tagged {\nborder: 1px solid #eee;\nbackground-color: #F7F7F7;\n}\n\n.selected .tagging, .selected .tagged {\nbackground-color: #f7f7f7;\nborder: 1px solid #ccc;\n}\n\n.tagging .listTitle, .tagged .listTitle {\ncolor: #bbb;\n}\n\n.selected .tagging .listTitle, .selected .tagged .listTitle {\ncolor: #666;\n}\n\n.tagging .button, .tagged .button {\ncolor:#ccc;\n}\n.selected .tagging .button, .selected .tagged .button {\ncolor:#aaa;\n}\n\n.highlight, .marked {background:transparent; color:#111; border:none; text-decoration:underline;}\n\n.tagging .button:hover, .tagged .button:hover, .tagging .button:active, .tagged .button:active {\nborder: none; background:transparent; text-decoration:underline; color:#333;\n}\n\n.popup {\nbackground: #BF2323;\nborder: 1px solid #BF2323;\n}\n\n.popup li.disabled {\ncolor: #000;\n}\n\n.popup li a, .popup li a:visited {\ncolor: #eee;\nborder: none;\n}\n\n.popup li a:hover {\nbackground: #bf1717;\ncolor: #fff;\nborder: none;\n}\n\n\n\n #messageArea {\n\nborder: 4px solid #BF2323;\nbackground: #fefefe;\ncolor: #555;\nfont-size:90%;\n}\n\n #messageArea a:hover { background:#f5f5f5; border:none;}\n\n\n #messageArea .button{\ncolor: #666;\nborder: 1px solid #BF2323;\n}\n\n #messageArea .button:hover {\ncolor: #fff;\nbackground: #BF2323;\nborder-color: #BF2323;\n}\n\n #contentFooter {background:#BF2323; color:#DF7D7D; clear: both; padding: 0.5em 1em; }\n\n\n#contentFooter a {\ncolor: #DF7D7D;\nborder-bottom: 1px dotted #DF7D7D; font-weight:normal;text-decoration:none;\n}\n\n\n\n#contentFooter a:hover {\ncolor: #FFFFFF;\nbackground-color:transparent;\nborder-bottom: 1px dotted #fff; text-decoration:none;\n}\n\n\n\n\n.searchBar {float:right;font-size: 1.0em;position:relative; margin-top:1.3em;}\n.searchBar .button {color:#999;display:block;}\n.searchBar .button:hover {border:1px solid #fefefe;color:#4F4B45;}\n.searchBar input { \n background-color: #fefefe;\n color: #999999;\n border: 1px solid #CCC; margin-right:3px;\n}\n\n.tiddler {padding-bottom:10px;}\n\n.viewer blockquote {\nborder-left: 5px solid #BF2323;\n}\n\n.viewer table, .viewer td {\nborder: 1px solid #BF2323;\n}\n\n.viewer th, thead td {\nbackground: #BF2323;\nborder: 1px solid #BF2323;\ncolor: #fff;\n}\n.viewer pre {\n border: 1px solid #ccc;\n background: #f5f5f5;\n}\n\n.viewer code {\ncolor: #111; background:#f5f5f5;\n}\n\n.viewer hr {\nborder-top: dashed 1px #555;\n}\n\n.editor input {\nborder: 1px solid #888; margin-top:5px;\n}\n\n.editor textarea {\nborder: 1px solid #888;\n}\n\nh1,h2,h3,h4,h5 { color: #292421; background: transparent; padding-bottom:2px; font-family: Arial, Helvetica, sans-serif; }\nh1 {font-size:18px;}\nh2 {font-size:16px;}\nh3 {font-size: 14px;}\n/*}}}*/\n\n.externalLink {\n text-decoration: none;\n}
/*{{{*/\n* html .tiddler {\n height: 1%;\n}\n\nbody {\n font-size: .75em;\n font-family: arial,helvetica;\n margin: 0;\n padding: 0;\n}\n\nh1,h2,h3,h4,h5 {\n font-weight: bold;\n text-decoration: none;\n padding-left: 0.4em;\n}\n\nh1 {font-size: 1.35em;}\nh2 {font-size: 1.25em;}\nh3 {font-size: 1.1em;}\nh4 {font-size: 1em;}\nh5 {font-size: .9em;}\n\nhr {\n height: 1px;\n}\n\na{\n text-decoration: none;\n}\n\ndt {font-weight: bold;}\n\nol { list-style-type: decimal }\nol ol { list-style-type: lower-alpha }\nol ol ol { list-style-type: lower-roman }\nol ol ol ol { list-style-type: decimal }\nol ol ol ol ol { list-style-type: lower-alpha }\nol ol ol ol ol ol { list-style-type: lower-roman }\nol ol ol ol ol ol ol { list-style-type: decimal }\n\n.txtOptionInput {\n width: 11em;\n}\n\n#contentWrapper .chkOptionInput {\n border: 0;\n}\n\n.externalLink {\n text-decoration: underline;\n}\n\n.indent {margin-left:3em;}\n.outdent {margin-left:3em; text-indent:-3em;}\ncode.escaped {white-space:nowrap;}\n\n.tiddlyLinkExisting {\n font-weight: bold;\n}\n\n.tiddlyLinkNonExisting {\n font-style: italic;\n}\n\n/* the 'a' is required for IE, otherwise it renders the whole tiddler a bold */\na.tiddlyLinkNonExisting.shadow {\n font-weight: bold;\n}\n\n#mainMenu .tiddlyLinkExisting, \n#mainMenu .tiddlyLinkNonExisting,\n#sidebarTabs .tiddlyLinkNonExisting{\n font-weight: normal;\n font-style: normal;\n}\n\n#sidebarTabs .tiddlyLinkExisting {\n font-weight: bold;\n font-style: normal;\n}\n\n.header {\n position: relative;\n}\n\n.header a:hover {\n background: transparent;\n}\n\n.headerShadow {\n position: relative;\n padding: 4.5em 0em 1em 1em;\n left: -1px;\n top: -1px;\n}\n\n.headerForeground {\n position: absolute;\n padding: 4.5em 0em 1em 1em;\n left: 0px;\n top: 0px;\n}\n\n.siteTitle {\n font-size: 3em;\n}\n\n.siteSubtitle {\n font-size: 1.2em;\n}\n\n#mainMenu {\n position: absolute;\n left: 0;\n width: 10em;\n text-align: right;\n line-height: 1.6em;\n padding: 1.5em 0.5em 0.5em 0.5em;\n font-size: 1.1em;\n}\n\n#sidebar {\n position: absolute;\n right: 3px;\n width: 16em;\n font-size: .9em;\n}\n\n#sidebarOptions {\n padding-top: 0.3em;\n}\n\n#sidebarOptions a {\n margin: 0em 0.2em;\n padding: 0.2em 0.3em;\n display: block;\n}\n\n#sidebarOptions input {\n margin: 0.4em 0.5em;\n}\n\n#sidebarOptions .sliderPanel {\n margin-left: 1em;\n padding: 0.5em;\n font-size: .85em;\n}\n\n#sidebarOptions .sliderPanel a {\n font-weight: bold;\n display: inline;\n padding: 0;\n}\n\n#sidebarOptions .sliderPanel input {\n margin: 0 0 .3em 0;\n}\n\n#sidebarTabs .tabContents {\n width: 15em;\n overflow: hidden;\n}\n\n.wizard {\n padding: 0.1em 0em 0em 2em;\n}\n\n.wizard h1 {\n font-size: 2em;\n font-weight: bold;\n background: none;\n padding: 0em 0em 0em 0em;\n margin: 0.4em 0em 0.2em 0em;\n}\n\n.wizard h2 {\n font-size: 1.2em;\n font-weight: bold;\n background: none;\n padding: 0em 0em 0em 0em;\n margin: 0.2em 0em 0.2em 0em;\n}\n\n.wizardStep {\n padding: 1em 1em 1em 1em;\n}\n\n.wizard .button {\n margin: 0.5em 0em 0em 0em;\n font-size: 1.2em;\n}\n\n#messageArea {\nposition:absolute; top:0; right:0; margin: 0.5em; padding: 0.5em;\n}\n\n*[id='messageArea'] {\nposition:fixed !important; z-index:99;}\n\n.messageToolbar {\ndisplay: block;\ntext-align: right;\n}\n\n#messageArea a{\n text-decoration: underline;\n}\n\n.popup {\n font-size: .9em;\n padding: 0.2em;\n list-style: none;\n margin: 0;\n}\n\n.popup hr {\n display: block;\n height: 1px;\n width: auto;\n padding: 0;\n margin: 0.2em 0em;\n}\n\n.listBreak {\n font-size: 1px;\n line-height: 1px;\n}\n\n.listBreak div {\n margin: 2px 0;\n}\n\n.popup li.disabled {\n padding: 0.2em;\n}\n\n.popup li a{\n display: block;\n padding: 0.2em;\n}\n\n.tabset {\n padding: 1em 0em 0em 0.5em;\n}\n\n.tab {\n margin: 0em 0em 0em 0.25em;\n padding: 2px;\n}\n\n.tabContents {\n padding: 0.5em;\n}\n\n.tabContents ul, .tabContents ol {\n margin: 0;\n padding: 0;\n}\n\n.txtMainTab .tabContents li {\n list-style: none;\n}\n\n.tabContents li.listLink {\n margin-left: .75em;\n}\n\n#displayArea {\n margin: 1em 17em 0em 14em;\n}\n\n\n.toolbar {\n text-align: right;\n font-size: .9em;\n visibility: hidden;\n}\n\n.selected .toolbar {\n visibility: visible;\n}\n\n.tiddler {\n padding: 1em 1em 0em 1em;\n}\n\n.missing .viewer,.missing .title {\n font-style: italic;\n}\n\n.title {\n font-size: 1.6em;\n font-weight: bold;\n}\n\n.missing .subtitle {\n display: none;\n}\n\n.subtitle {\n font-size: 0.9em;\n}\n\n.tiddler .button {\n padding: 0.2em 0.4em;\n}\n\n.tagging {\nmargin: 0.5em 0.5em 0.5em 0;\nfloat: left;\ndisplay: none;\n}\n\n.isTag .tagging {\ndisplay: block;\n}\n\n.tagged {\nmargin: 0.5em;\nfloat: right;\n}\n\n.tagging, .tagged {\nfont-size: 0.9em;\npadding: 0.25em;\n}\n\n.tagging ul, .tagged ul {\nlist-style: none;margin: 0.25em;\npadding: 0;\n}\n\n.tagClear {\nclear: both;\n}\n\n.footer {\n font-size: .9em;\n}\n\n.footer li {\ndisplay: inline;\n}\n\n* html .viewer pre {\n width: 99%;\n padding: 0 0 1em 0;\n}\n\n.viewer {\n line-height: 1.4em;\n padding-top: 0.5em;\n}\n\n.viewer .button {\n margin: 0em 0.25em;\n padding: 0em 0.25em;\n}\n\n.viewer blockquote {\n line-height: 1.5em;\n padding-left: 0.8em;\n margin-left: 2.5em;\n}\n\n.viewer ul, .viewer ol{\n margin-left: 0.5em;\n padding-left: 1.5em;\n}\n\n.viewer table {\n border-collapse: collapse;\n margin: 0.8em 1.0em;\n}\n\n.viewer th, .viewer td, .viewer tr,.viewer caption{\n padding: 3px;\n}\n\n.viewer table.listView {\n font-size: 0.85em;\n margin: 0.8em 1.0em;\n}\n\n.viewer table.listView th, .viewer table.listView td, .viewer table.listView tr {\n padding: 0px 3px 0px 3px;\n}\n\n.viewer pre {\n padding: 0.5em;\n margin-left: 0.5em;\n font-size: 1.2em;\n line-height: 1.4em;\n overflow: auto;\n}\n\n.viewer code {\n font-size: 1.2em;\n line-height: 1.4em;\n}\n\n.editor {\nfont-size: 1.1em;\n}\n\n.editor input, .editor textarea {\n display: block;\n width: 100%;\n font: inherit;\n}\n\n.editorFooter {\n padding: 0.25em 0em;\n font-size: .9em;\n}\n\n.editorFooter .button {\npadding-top: 0px; padding-bottom: 0px;}\n\n.fieldsetFix {border: 0;\npadding: 0;\nmargin: 1px 0px 1px 0px;\n}\n\n.sparkline {\n line-height: 1em;\n}\n\n.sparktick {\n outline: 0;\n}\n\n.zoomer {\n font-size: 1.1em;\n position: absolute;\n padding: 1em;\n}\n\n.cascade {\n font-size: 1.1em;\n position: absolute;\n overflow: hidden;\n}\n/*}}}*/
<<timeline better:true onlyTag:e-learning maxEntries:30>>
Some more rows for the scarf last night. One or two dropped stitches I think, but I think I've now got the hang of the three bits I need to know - casting on, main stitch, and ending a row.\n
<html>Excellent, seems I can add my little Synchronicity Table here. Not rocket science, but potentially useful for proving some of Feenberg's observations.\n<table style="width: 120px;" border="1"><tr><th></th><th>Synchronous</th><th>Asynchronous</th></tr><tr><th>One-To-One</th><td>Messaging, Chat</td><td>Email</td></tr><tr><th>One-To-Many</th><td>Messaging, Chat</td><td>Email Newsgroups, Discussion Boards</td></tr> </table>\nHere's another one that I thought of after another discussion. relating to technical skills: \n<table style="width: 120px;" border="1"><tr><th></th><th>Novice</th><th>Adept</th></tr><tr><th>Teacher</th><td><br/></td><td><br/></td></tr><tr><th>Student</th><td><br/></td><td><br/></td></tr></table>\nNext step might be to consider the different effects of intersections between these grids, e.g. one technically adept teacher communicating asynchronously with many technical novice students, etc.\n<br/><br/>\nMaybe.</html>
One of the original achievements of the World Wide Web, during its phenomenal growth after 1993 (the year CERN put the WWW code in the public domain, and NCSA launched the Mosaic browser), was a democratisation of the global information infrastructure: distribution and publishing was no longer the exclusive realm of broadcasters and publishers. (Publishers and broadcasters were nonetheless quick to exploit the new platform.) In education, as in other fields, the Web lowered the cost of entry, both financial and technical, to a wealth of networked, hypertextual possibilities, previously available only through proprietary and platform-dependent software solutions (e.g. Question Mark, ~StorySpace). \n\nMany study projects, in schools and universities, inspired and energised by this brave new world, achieved impressive results, and the Web is full of examples. One will suffice: [[The Decameron Web|http://www.brown.edu/Departments/Italian_Studies/dweb/]] at Brown University's Italian Studies Department, a superb online resource for teachers and students of Italian Literature, designed as “an experiment in a new form of scholarly and pedagogical communication aimed at renewing a living dialogue between a distant past and our present” ([[Brown University, 2000|References]]).\n\nHaving begun as a ~StorySpace hypertext, a Web version was an inevitable development. Many individuals contributed essays and other work. It must have been a fascinating project to develop: it is a monument to scholarly collaboration. But is it really a “living dialogue”? Contributions clearly require moderation, not only by reviewers/editors, but also by specialists in HTML markup and website management – significant overheads – and a look at the editing and markup instructions suggests that there was a lot for contributors to learn.\n\nThere are some core features that undoubtedly require special programming – the semantic markup of parallel texts in English and Italian, for example, with specialised search tools for marking and indexing place and character names. But the bulk of the content comprises essays, short and long, presented as a network of hyperlinked web pages. Managing such a web site, with multiple contributors, using a "Web 1.0" approach, is a non-trivial task, technically and administratively, even with a Content Management System. The costs of continuing to manage the growth of this website, are not trivial either, considering the technical and editorial requirements, and the amount of instruction contributors require.\n\nThere are some interactive/collaborative features included: \n* A [[Guest Book|http://www.brown.edu/Departments/Italian_Studies/dweb/subscribe/guestbook.shtml]] (actually a Feedback Form - I couldn't find a place where Guest Book comments were actually displayed, as is usual with Guest Books, not only online). \n* "[[Listserv|http://listserv.brown.edu/archives/decameron.html]]" (a mailing list with web-based archive).\n* An irregular [[web newsletter|http://www.brown.edu/Departments/Italian_Studies/dweb/newsletter/index.shtml]] (only two “issues” between 1997 and 2000).\nAll of these are standard “outreach” components among 1990s websites – tools that seemingly had the potential to create and bind an online community, but, in reality, frequently didn't. (I have been involved with several Web projects that had a similar experience: the overhead of maintaining them and keeping them fresh and relevant is often overlooked.) Contributions are invited, but only indirectly. Notwithstanding the Guest Book and invitations to contribute, the user of The Decameron Web who wants to do more than simply study the excellent online materials, is likely to feel less than completely and instantly included. Can one contribute, in an interactive way? How might one actively engage with the site, other than by adding it to an ever-groaning list of web bookmarks, and trying to remember to check it regularly? Could a teacher or student of the subject, coming across this over the web in 1997 or 2007, easily – instantly, even – become part of the community engaged in this "living dialogue"? [ [[1.|Notes]] ]\n\nCould this be achieved in any better way, with the tools available 2007? I believe it could, by using combinations of often free, yet powerful, applications for creating wikis, blogs, and repositories of information, that not only simplify the process of creating different types of content, and reduce the cost of maintenance and management (thereby enhancing the project's life-expectancy), but also establish a persistent and dynamic online community around such a great resource.\n\n<html><iframe style="width: 100%; height: 60ex; font-size: 80%;" src="http://www.brown.edu/Departments/Italian_Studies/dweb/" title="The Decameron Web at Brown University"/></html>//The Decameron Web at Brown University//\n\n\n<html><div class='viewer' macro='navigation tiddlers:{{store.getTiddlerText("PresentationIndex").readBracketedList()}}}'></div></html>\n
!Parts of an MCQ\n* stem (text of question\n* options\n* key (correct answer)\n* distracters\n!Some advice\n* Use whole, definite statement rather than unfinished sentences.\n* Don't overload with background information\n* Keep language clear: don't make the question a comprehension test!\n* Use negatives sparingly. Highlight negative words.\n\n!Distracters/Keys\n* Use plausible and attractive distracters\n* Avoid clues e.g. in m/f pronouns or "a", "an" in stem\n* Use "All of above" or "none of above" sparingly: they should be correct sometimes. \n* Use common student mistakes as distracters if possible\n* Correct answers to different questions are strong distracters\n
!External resources\n* [[MSc course library at Edinburgh|http://www.education.ed.ac.uk/on-line_campus/e-learning/library/eps/]] \n* My [[Delicious links|http://del.icio.us/bezbozhnik/uloe2008]]\n* My [[CiteuLike library|http://www.citeulike.org/user/bezbozhnik/tag/uloe]]\n!Journal\nThis is an occasional journal of my attempts to try to keep up with the [[course work|Course schedule]]. Entries are listed below in reverse order, latest on top. \n <<timeline better:true onlyTag:uloe excludeTag:menu sortBy:created>>
//last update: UploadPlugin v 3.4.5//\n\n!Description\nUploadPlugin with <<tag UploadService>> extend TiddlyWiki with @@upload@@ and @@save to web@@ commands. \nUploadPlugin uses Username and Password from UploadOptions stored in cookies to authenticate itself to [[store.php]] or [[store.cgi]].\nFrench translation available as a separate tiddler UploadPluginMsgFR\n\n!!UploadPlugin\n*If the TiddlyWiki is viewed from @@local disk@@ :\n**{{{<<saveChanges>>}}} \n***display as ''save to disk''\n***work as usual\n**{{{<<upload>>}}}\n***display as ''upload''\n***after saving to disk, upload in the storeUrl directory.\n*If the TiddlyWiki is viewed from @@website@@ and is @@readOnly@@ (in core TiddlyWiki since 2.0.6) :\n**{{{<<saveChanges>>}}} \n***print nothing\n***has been disabled\n**{{{<<upload>>}}}\n***display as '''save to web''\n***save in the uploadDir directory.\n*If GenerateAnRssFeed in AdvancedOptions is set :\n**generate the content of the RSSFeed \n**upload the RssFile in uploadDir directory\n**Caution : use the SiteUrl tiddler to specify the right url of the TiddlyWiki in the generated RssFile\n*DisplayMessage\n*Log upload action in UploadLog\nhint : if UploadLog is the first tiddler in the Timeline Tab, no tiddler has been updated since last upload.\n\n!![[store.php]]\n*UserVariables to set :\n//{{{\n$AUTHENTICATE_USER = true; // true | false\n$USERS = array(\n 'UserName1'=>'Password1', \n 'UserName2'=>'Password2', \n 'UserName3'=>'Password3'); // set usernames and strong passwords\n$DEBUG = false; // true | false\n//}}}\n*method GET\n**display an information page\n*method POST\n**if $~AUTHENTICATE_USER is ''true''\n***presence and value of user and password are checked with $USER and $PASSWORD \n**if toFilename already exists and backDir parameter specified\n***rename toFilename to backupDir/toFilename.AAAAMMDD.HHSS.html\n**copy temporaryUploadedFile to toFilename\n** return status\n\n!![[store.cgi]]\n*UserVariables to set :\n//{{{\nCONFIG = {\n :users => {\n 'UserName1'=>'Password1', \n 'UserName2'=>'Password2', \n 'UserName3'=>'Password3')\n },\n :authenticateUser => true,\n :backupExistingFile => true,\n :withUploadDir => true\n}\n//}}}\n*same processing as store.php above\n\n!Usage : \n{{{\n<<upload>>\n uses UploadOptions saved in cookies :\n txtUploadUserName: username\n pasUploadPassword : password\n txtUploadStoreUrl : store script\n txtUploadDir : relative path for upload directory\n txtUploadFilename : upload filename\n txtUploadBackupDir : relative path for backup directory\n\n<<upload [storeUrl [toFilename [backupDir [uploadDir [username]]]]]>>\n Optional positional parameters can be passed to overwrite \n UploadOptions. \n}}}\n\nInstall the {{{<<upload ... >>}}} macro in SideBarOptions just below {{{<<saveChanges>>}}} macro.\n\n\n!User manual\nSee HowToUpload\n\n!Installation :\n*Install the UploadPlugin as usual\n*Upload the [[store.php]] file on your php aware webserver in your TiddlyWiki directory\n*Protect your server against malicious upload. Two approaches :\n**set $~AUTHENTICATE_USER to true in the [[store.php]] script\n***configure $USER and $PASSWORD in the [[store.php]] script on your webserver\n***set UploadOptions in conformity with [[store.php]]\n**Use server protection :\n***for Apache web server ([[for detail see Apache documentation|http://httpd.apache.org/docs/1.3/howto/htaccess.html]]) : \n****configure and upload the [[.htaccess]] [[.passwd]]\n***for other web servers see the appropriate documentation\n*Configure an upload button, for example in the SideBarOptions\n!Suppported Browser\n*Firefox and Gecko based browser: tested Ok\n*Internet Explorer : tested Ok\n*Safari : tested ok on OS X\n*Others : Not tested, please report status.\n\n!Revision history\n*V 3.4.5 (2006/10/15)\n**Force checkAutoSave to false for http protocol only (thanks to SimonBaird)\n*V 3.4.4 (30/09/2006)\n**PasswordTweak V 1.0.3\n***add class attribute specific on each option input (thanks to ClintChecketts)\n**UploadOptions width set by styleSheet\n*V 3.4.3 (19/09/2006)\n**Add classname to input for options (thanks to ClintChecketts)\n**Force checkAutoSave to false\n**Alert if password is empty before Uploading\n*V 3.4.2 (04/09/2006)\n**add functions to format displayMessages (thanks to LucDeschenaux)\n**take return values from store.cgi of destfile and backupfile for displayMessages \n*V 3.4.1 (19/08/2006)\n**Error management improvement\n*V 3.4.0 (25/07/2006)\n**Manage Lock parameters for GroupAuthoring\n**Small code refactoring for new PluginFormat in TW 2.1\n+++[previous revisions]\n*V 3.3.3 (30/06/2006)\n**reinstall saveChanges Hijacking\n*V 3.3.2 (26/06/2006)\n** make "save to disk" disappear when TiddlyWiki is located on the web\n** small reformatting of post headers for store.cgi compatibility\n*V 3.3.1 (30/03/2006)\n**bug in backup folder when uploading rssfile fixed\n*V 3.3.0 (12/03/2006)\n**Code refactoring\n**suppress saveChanges hijacking\n*V3.2.2 (25/02/2006)\n**Use PasswordTweak 1.0.1\n**uploaddir is a relative path\n**backupdir is a relative path\n*V3.2.1 (13/02/2006)\n**name and password added to open.request (Thanks to TedPavlic)\n*V3.2.0 (14/02/2006)\n**Use PassworDTweak (http://tiddlyWiki.bidix.info/#PasswordTweak) for password\n*V3.1.0 (12/02/2006)\n**UploadOptions in Cookies\n**Username and password from UploadOptions pass to store.php script for authentification check\n*V3.0.3 (03/02/2006)\n**Firefox 1.5.0.1 crashes due to global var fixed\n*V3.0.2 (25-Jan-2006)\n**HTTPS compatible\n*V3.0.1 (18-Jan-2006)\n**UTF8toUnicode conversion problem in Firefox\n*V3.0.0 (15-Jan-2006)\n**Asynchronous upload\n**Synchronous upload before unload of the page\n**All strings extracted in macro config\n**Compatibility checked with TW 2.0.2 & TW 1.2.39 for both FF 1.5 and IE 6\n*V2.0.2 (8-Jan-2006)\n**conversion of SiteTitle and SiteSubtitle in web page Title\n*V2.0.1 (8-Jan-2006)\n**Compatibilty with TiddlyWiki 2.0.1\n*V2.0.0 (3-Jan-2006)\n**Save to web\n**Compatibilty with TiddlyWiki 1.2.39 and TiddlyWiki 2.0.0 Beta 6\n*v1.1.0 (27-Dec-2005)\n**Upload RSS File\n*v1.0.3 (26-Dec-2005)\n**UploadLog tiddler\n*v1.0.2 (24-Dec-2005)\n**Optional parameter toFilename\n**Optional parameter backupDir\n*v1.0.1 (23-Dec-2005)\n**reformatting code\n* v1.0.0 (17-Dec-2005)\n** first public working version\n===\n\n
This form upload any file with an UploadService describe in [[Upload]]\n----\n<html><center>\n<form enctype="multipart/form-data" action="store.cgi" method="post" target="_blank">\n <input type="hidden" name="MAX_FILE_SIZE" value="3000000" />\nThis file : <input name="userfile" type="file" /><p>\nOptions* : <input type="text" name="UploadPlugin" size=70 value="backupDir=BACKUP_DIR;user=UPLOAD_USER;password=UPLOAD_PASSWORD;" /><p>\n <input type="submit" value="Upload" />\n</form></center>\n</html>\n----\n * Substitute BACKUP_DIR, UPLOAD_USER and UPLOAD_PASSWORD with your values. See UploadPlugin for option details. \nFor security reason, don't save your password in a tiddler.
| !date | !user | !location | !storeUrl | !uploadDir | !toFilename | !backupdir | !origin |\n| 28/2/2007 23:8:2 | Richard | [[/|http://richard.relocution.com/elearning/#%5B%5BMore%20on%20plagiarism%5D%5D]] | [[store.php|http://richard.relocution.com/elearning/store.php]] | | index.html | |\n| 1/3/2007 16:43:34 | Richard | [[/|http://richard.relocution.com/elearning/#UploadOptions]] | [[store.php|http://richard.relocution.com/elearning/store.php]] | | index.html | |\n| 1/3/2007 16:44:50 | Richard | [[index.html|http://richard.relocution.com/elearning/index.html#%5B%5BHello%20World%5D%5D]] | [[store.php|http://richard.relocution.com/elearning/store.php]] | | index.html | | Ok |\n| 1/3/2007 17:56:41 | Richard | [[index.html|http://richard.relocution.com/elearning/index.html#About]] | [[store.php|http://richard.relocution.com/elearning/store.php]] | | index.html | | Ok |\n| 1/3/2007 17:57:11 | Richard | [[index.html|http://richard.relocution.com/elearning/index.html#About]] | [[store.php|http://richard.relocution.com/elearning/store.php]] | | index.html | |\n| 2/3/2007 0:16:29 | Richard | [[/|http://richard.relocution.com/elearning/#%5B%5BHello%20World%5D%5D]] | [[store.php|http://richard.relocution.com/elearning/store.php]] | | index.html | |\n| 2/3/2007 12:37:3 | Richard | [[/|http://richard.relocution.com/elearning/#%5B%5BHello%20World%5D%5D]] | [[store.php|http://richard.relocution.com/elearning/store.php]] | | index.html | |\n| 2/3/2007 12:37:33 | Richard | [[index.html|http://richard.relocution.com/elearning/index.html#About]] | [[store.php|http://richard.relocution.com/elearning/store.php]] | | index.html | |\n| 4/3/2007 20:32:3 | Richard | [[/|http://richard.relocution.com/elearning/#%5B%5BComputer%20Aided%20Cheating%5D%5D]] | [[store.php|http://richard.relocution.com/elearning/store.php]] | | index.html | | Ok |\n| 4/3/2007 20:36:21 | Richard | [[/|http://richard.relocution.com/elearning/#%5B%5BComputer%20Aided%20Cheating%5D%5D]] | [[store.php|http://richard.relocution.com/elearning/store.php]] | | index.html | |\n| 6/3/2007 22:57:1 | Richard | [[/|http://richard.relocution.com/elearning/#ImportTiddlers]] | [[store.php|http://richard.relocution.com/elearning/store.php]] | | index.html | |\n| 6/3/2007 23:4:46 | Richard | [[index.html|file:///Users/richard/Desktop/TiddlyWikis/index.html#RSSReaderPlugin]] | [[store.php|http://richard.relocution.com/repoman/store.php]] | | index.html | |\n| 6/3/2007 23:4:57 | Richard | [[index.html|file:///Users/richard/Desktop/TiddlyWikis/index.html#RSSReaderPlugin]] | [[store.php|http://richard.relocution.com/repoman/store.php]] | | index.html | | Ok | Ok |\n| 6/3/2007 23:5:23 | Richard | [[index.html|file:///Users/richard/Desktop/TiddlyWikis/index.html#UploadOptions]] | [[store.php|http://richard.relocution.com/e-learning/store.php]] | | index.html | |\n| 6/3/2007 23:5:54 | Richard | [[index.html|file:///Users/richard/Desktop/TiddlyWikis/index.html#UploadOptions]] | [[store.php|http://richard.relocution.com/e-learning/store.php]] | | index.html | |\n| 6/3/2007 23:6:3 | Richard | [[index.html|file:///Users/richard/Desktop/TiddlyWikis/index.html#UploadOptions]] | [[store.php|http://richard.relocution.com/e-learning/store.php]] | | index.html | |\n| 6/3/2007 23:6:30 | Richard | [[index.html|file:///Users/richard/Desktop/TiddlyWikis/index.html#UploadOptions]] | [[store.php|http://richard.relocution.com/e-learning/store.php]] | | index.html | |\n| 6/3/2007 23:7:5 | Richard | [[index.html|file:///Users/richard/Desktop/TiddlyWikis/index.html#%5B%5BHello%20World%5D%5D]] | [[store.php|http://richard.relocution.com/e-learning/store.php]] | | index.html | |\n| 6/3/2007 23:7:36 | Richard | [[index.html|file:///Users/richard/Desktop/TiddlyWikis/index.html#UploadOptions]] | [[store.php|http://richard.relocution.com/elearning/store.php]] | | index.html | |\n| 7/3/2007 13:25:58 | Richard | [[/|http://richard.relocution.com/elearning/#%5B%5B7%20March%202007%5D%5D]] | [[store.php|http://richard.relocution.com/elearning/store.php]] | | index.html | | Ok |\n| 7/3/2007 13:26:22 | Richard | [[/|http://richard.relocution.com/elearning/#AdvancedOptions]] | [[store.php|http://richard.relocution.com/elearning/store.php]] | | index.html | | Ok |\n| 7/3/2007 13:27:13 | Richard | [[/|http://richard.relocution.com/elearning/#Notes]] | [[store.php|http://richard.relocution.com/elearning/store.php]] | | index.html | |\n| 7/3/2007 17:37:56 | Richard | [[/|http://richard.relocution.com/elearning/#%5B%5BMore%20on%20plagiarism%5D%5D]] | [[store.php|http://richard.relocution.com/elearning/store.php]] | | index.html | |\n| 7/3/2007 21:27:56 | Richard | [[/|http://richard.relocution.com/elearning/#%5B%5BHello%20World%5D%5D]] | [[store.php|http://richard.relocution.com/elearning/store.php]] | | index.html | |\n| 8/3/2007 23:15:7 | Richard | [[/|http://richard.relocution.com/elearning/#%5B%5BIDEL%20Assignment%5D%5D]] | [[store.php|http://richard.relocution.com/elearning/store.php]] | | index.html | | Ok |\n| 8/3/2007 23:41:58 | Richard | [[/|http://richard.relocution.com/elearning/#%5B%5B30%20October%202006%3A%20Web%202.0%20then%20onward%5D%5D]] | [[store.php|http://richard.relocution.com/elearning/store.php]] | | index.html | |\n| 11/3/2007 23:9:2 | Richard | [[/|http://richard.relocution.com/elearning/#%5B%5BHello%20World%5D%5D]] | [[store.php|http://richard.relocution.com/elearning/store.php]] | | index.html | |\n| 11/3/2007 23:26:18 | Richard | [[/|http://richard.relocution.com/elearning/#%5B%5BHello%20World%5D%5D]] | [[store.php|http://richard.relocution.com/elearning/store.php]] | | index.html | |\n| 12/3/2007 2:58:47 | Richard | [[/|http://richard.relocution.com/elearning/#%5B%5BCatch%2022.0%5D%5D]] | [[store.php|http://richard.relocution.com/elearning/store.php]] | | index.html | |\n| 12/3/2007 3:16:44 | Richard | [[/|http://richard.relocution.com/elearning/#%5B%5BCatch%2022.0%5D%5D]] | [[store.php|http://richard.relocution.com/elearning/store.php]] | | index.html | |\n| 12/3/2007 3:36:8 | Richard | [[/|http://richard.relocution.com/elearning/#%5B%5BCatch%2022.0%5D%5D]] | [[store.php|http://richard.relocution.com/elearning/store.php]] | | index.html | |\n| 12/3/2007 23:11:21 | Richard | [[/|http://richard.relocution.com/elearning/#%5B%5BHello%20World%5D%5D]] | [[store.php|http://richard.relocution.com/elearning/store.php]] | | index.html | | Ok |\n| 12/3/2007 23:11:56 | Richard | [[/|http://richard.relocution.com/elearning/#AdvancedOptions]] | [[store.php|http://richard.relocution.com/elearning/store.php]] | | index.html | |\n| 14/3/2007 17:43:29 | Richard | [[/|http://richard.relocution.com/elearning/#%5B%5BOnline%20Assessment%20assignment%5D%5D]] | [[store.php|http://richard.relocution.com/elearning/store.php]] | | index.html | |\n| 19/3/2007 1:2:6 | Richard | [[/|http://richard.relocution.com/elearning/#%5B%5BHello%20World%5D%5D]] | [[store.php|http://richard.relocution.com/elearning/store.php]] | | index.html | |\n| 20/9/2007 21:26:43 | YourName | [[/|http://richard.relocution.com/elearning/#UploadOptions]] | [[store.php|http://richard.relocution.com/elearning/store.php]] | | | |\n| 20/9/2007 21:27:37 | YourName | [[/|http://richard.relocution.com/elearning/#UploadOptions]] | [[store.php|http://richard.relocution.com/elearning/store.php]] | | | |\n| 20/9/2007 21:29:8 | YourName | [[/|http://richard.relocution.com/elearning/#UploadOptions]] | [[store.php|http://richard.relocution.com/elearning/store.php]] | | | |\n| 20/9/2007 21:29:32 | YourName | [[/|http://richard.relocution.com/elearning/#UploadOptions]] | [[store.php|http://richard.relocution.com/elearning/store.php]] | | | |\n| 20/9/2007 21:30:43 | YourName | [[/|http://richard.relocution.com/elearning/#UploadOptions]] | [[store.php|http://richard.relocution.com/elearning/store.php]] | | | |\n| 20/9/2007 21:31:8 | YourName | [[/|http://richard.relocution.com/elearning/#UploadOptions]] | [[store.php|http://richard.relocution.com/elearning/store.php]] | | index.html | |\n| 20/9/2007 21:45:48 | richard | [[/|http://richard.relocution.com/elearning/#%5B%5BE-learning%2C%20Politics%20and%20Society%20Journal%5D%5D]] | [[store.php|http://richard.relocution.com/elearning/store.php]] | | index.html | |\n| 24/9/2007 15:46:56 | YourName | [[/|http://richard.relocution.com/elearning/#UploadOptions]] | [[store.php|http://richard.relocution.com/elearning/store.php]] | | index.html | |\n| 24/9/2007 15:47:48 | richard | [[/|http://richard.relocution.com/elearning/#AdvancedOptions]] | [[store.php|http://richard.relocution.com/elearning/store.php]] | | index.html | |\n| 24/9/2007 15:58:34 | richard | [[/|http://richard.relocution.com/elearning/#%5B%5BE-learning%2C%20Politics%20and%20Society%5D%5D]] | [[store.php|http://richard.relocution.com/elearning/store.php]] | | index.html | |\n| 24/9/2007 16:1:3 | YourName | [[index.html|file:///tmp/index.html]] | [[store.php|file:///tmp/store.php]] | | index.html | |\n| 24/9/2007 16:1:31 | YourName | [[index.html|file:///tmp/index.html]] | [[store.php|http://richard.relocution.com/elearning/store.php]] | | index.html | |\n| 24/9/2007 16:6:43 | richard | [[/|http://richard.relocution.com/elearning/#%5B%5BE-learning%2C%20Politics%20and%20Society%5D%5D]] | [[store.php|http://richard.relocution.com/elearning/store.php]] | | index.html | | Ok |\n| 24/9/2007 16:8:32 | richard | [[/|http://richard.relocution.com/elearning/#%5B%5BE-learning%2C%20Politics%20and%20Society%5D%5D]] | [[store.php|http://richard.relocution.com/elearning/store.php]] | | index.html | |\n| 25/9/2007 17:20:49 | richard | [[/|http://richard.relocution.com/elearning/#%5B%5BE-learning%2C%20Politics%20and%20Society%5D%5D]] | [[store.php|http://richard.relocution.com/elearning/store.php]] | | index.html | |\n| 26/9/2007 16:44:59 | richard | [[/|http://richard.relocution.com/elearning/#%5B%5BNew%20Tiddler%5D%5D]] | [[store.php|http://richard.relocution.com/elearning/store.php]] | | index.html | | Ok |\n| 26/9/2007 16:45:34 | richard | [[/|http://richard.relocution.com/elearning/#%5B%5BNew%20Tiddler%5D%5D]] | [[store.php|http://richard.relocution.com/elearning/store.php]] | | index.html | | Ok |\n| 26/9/2007 16:48:50 | richard | [[/|http://richard.relocution.com/elearning/#%5B%5BNew%20Tiddler%5D%5D]] | [[store.php|http://richard.relocution.com/elearning/store.php]] | | index.html | | Ok |\n| 26/9/2007 18:27:3 | richard | [[/|http://richard.relocution.com/elearning/#ScrapBook]] | [[store.php|http://richard.relocution.com/elearning/store.php]] | | index.html | |\n| 1/10/2007 0:15:45 | richard | [[/|http://richard.relocution.com/elearning/#%5B%5BE-learning%2C%20Politics%20and%20Society%5D%5D]] | [[store.php|http://richard.relocution.com/elearning/store.php]] | | index.html | |\n| 1/10/2007 15:44:44 | richard | [[/|http://richard.relocution.com/elearning/#%5B%5BE-learning%2C%20Politics%20and%20Society%5D%5D]] | [[store.php|http://richard.relocution.com/elearning/store.php]] | | index.html | | Ok |\n| 1/10/2007 15:49:40 | richard | [[/|http://richard.relocution.com/elearning/#%5B%5BWeek%202%3A%20Globalisation%5D%5D]] | [[store.php|http://richard.relocution.com/elearning/store.php]] | | index.html | | Ok |\n| 1/10/2007 15:59:54 | richard | [[/|http://richard.relocution.com/elearning/#%5B%5BMustn't%20grumble%5D%5D]] | [[store.php|http://richard.relocution.com/elearning/store.php]] | | index.html | | Ok |\n| 1/10/2007 18:1:55 | richard | [[/|http://richard.relocution.com/elearning/#%5B%5BReading%20Naughton%2C%20%22The%20Poor%20Man's%20Arpanet%22%5D%5D]] | [[store.php|http://richard.relocution.com/elearning/store.php]] | | index.html | |\n| 1/10/2007 22:30:39 | richard | [[/|http://richard.relocution.com/elearning/#%5B%5BE-learning%2C%20Politics%20and%20Society%5D%5D]] | [[store.php|http://richard.relocution.com/elearning/store.php]] | | index.html | |\n| 29/10/2007 21:28:10 | Richard | [[/|http://richard.relocution.com/elearning/#AdvancedOptions]] | [[store.php|http://richard.relocution.com/elearning/store.php]] | | index.html | |\n| 4/11/2007 23:30:10 | richard | [[/|http://richard.relocution.com/elearning/#References]] | [[store.php|http://richard.relocution.com/elearning/store.php]] | | index.html | | Ok |\n| 4/11/2007 23:32:6 | richard | [[/|http://richard.relocution.com/elearning/#%5B%5BAspects%20of%20Online%20Identity%20Studies%5D%5D]] | [[store.php|http://richard.relocution.com/elearning/store.php]] | | index.html | | Ok |\n| 4/11/2007 23:34:0 | richard | [[/|http://richard.relocution.com/elearning/#%5B%5BAspects%20of%20Online%20Identity%20Studies%20(2)%3A%20Blogging%20and%20identity%5D%5D]] | [[store.php|http://richard.relocution.com/elearning/store.php]] | | index.html | |\n| 11/11/2007 18:32:48 | richard | [[/|http://richard.relocution.com/elearning/#%5B%5BHello%20World%5D%5D]] | [[store.php|http://richard.relocution.com/elearning/store.php]] | | index.html | |\n| 14/11/2007 0:15:28 | Richard | [[/|http://richard.relocution.com/elearning/#%5B%5BOnline%20ideologies%3A%20Cyberspace%20and%20democracy%5D%5D]] | [[store.php|http://richard.relocution.com/elearning/store.php]] | | index.html | |\n| 18/11/2007 23:15:52 | richard | [[/|http://richard.relocution.com/elearning/#%5B%5BE-learning%2C%20Politics%20and%20Society%5D%5D]] | [[store.php|http://richard.relocution.com/elearning/store.php]] | | index.html | | Ok |\n| 18/11/2007 23:31:26 | richard | [[/|http://richard.relocution.com/elearning/#%5B%5BDigital%20Citizenship%3A%20%22Help%2C%20they're%20knocking%20down%20my%20Ivory%20Tower!%22%5D%5D]] | [[store.php|http://richard.relocution.com/elearning/store.php]] | | index.html | |\n| 18/11/2007 23:38:20 | richard | [[index.html|http://richard.relocution.com/elearning/index.html#%5B%5BCourse%20schedule%5D%5D]] | [[store.php|http://richard.relocution.com/elearning/store.php]] | | index.html | | Ok |\n| 18/11/2007 23:41:53 | richard | [[index.html|http://richard.relocution.com/elearning/index.html#%5B%5BOnline%20Identities%3A%20Blogging%20and%20identity%5D%5D]] | [[store.php|http://richard.relocution.com/elearning/store.php]] | | index.html | |\n| 18/11/2007 23:42:13 | richard | [[index.html|http://richard.relocution.com/elearning/index.html#%5B%5BOnline%20Identities%3A%20Blogging%20and%20identity%5D%5D]] | [[store.php|http://richard.relocution.com/elearning/store.php]] | | index.html | | Ok | Ok |\n| 18/11/2007 23:52:46 | richard | [[index.html|http://richard.relocution.com/elearning/index.html#%5B%5BOnline%20Identities%3A%20Blogging%20and%20identity%5D%5D]] | [[store.php|http://richard.relocution.com/elearning/store.php]] | | index.html | |\n| 21/11/2007 23:37:5 | richard | [[/|http://richard.relocution.com/elearning/#%5B%5BOpen%20Source%3A%20the%20hacker%20ethic%20isn't%20always%20aesthetic%5D%5D]] | [[store.php|http://richard.relocution.com/elearning/store.php]] | | index.html | | Ok |\n| 21/11/2007 23:38:36 | richard | [[/|http://richard.relocution.com/elearning/#%5B%5BOpen%20Source%3A%20the%20hacker%20ethic%20isn't%20always%20aesthetic%5D%5D]] | [[store.php|http://richard.relocution.com/elearning/store.php]] | | index.html | | Ok |\n| 21/11/2007 23:41:14 | richard | [[/|http://richard.relocution.com/elearning/#%5B%5BOpen%20Source%3A%20the%20hacker%20ethic%20isn't%20always%20aesthetic%5D%5D]] | [[store.php|http://richard.relocution.com/elearning/store.php]] | | index.html | |\n| 21/11/2007 23:41:38 | richard | [[/|http://richard.relocution.com/elearning/#%5B%5BOpen%20Source%3A%20the%20hacker%20ethic%20isn't%20always%20aesthetic%5D%5D]] | [[store.php|http://richard.relocution.com/elearning/store.php]] | | index.html | | Ok | Ok |\n| 22/11/2007 0:42:10 | richard | [[/|http://richard.relocution.com/elearning/#%5B%5BCourse%20schedule%5D%5D]] | [[store.php|http://richard.relocution.com/elearning/store.php]] | | index.html | |\n| 1/7/2008 11:15:31 | Richard | [[/|http://richard.relocution.com/elearning/]] | [[store.php|http://richard.relocution.com/elearning/store.php]] | | | |\n| 1/7/2008 11:16:9 | Richard | [[/|http://richard.relocution.com/elearning/]] | [[store.php|http://richard.relocution.com/elearning/store.php]] | | index.html | | Ok |\n| 1/7/2008 11:18:38 | Richard | [[/|http://richard.relocution.com/elearning/#%5B%5BHello%20World%5D%5D]] | [[store.php|http://richard.relocution.com/elearning/store.php]] | | index.html | |\n| 3/7/2008 22:12:24 | Richard | [[/|http://richard.relocution.com/elearning/#%5B%5BMore%20on%20plagiarism%5D%5D]] | [[store.php|http://richard.relocution.com/elearning/store.php]] | | index.html | |\n| 20/9/2008 10:23:1 | YourName | [[/|http://richard.relocution.com/elearning/]] | [[store.php|http://richard.relocution.com/elearning/store.php]] | | index.html | |\n| 20/9/2008 10:25:46 | YourName | [[/|http://richard.relocution.com/elearning/]] | [[store.php|http://richard.relocution.com/elearning/store.php]] | | index.html | |\n| 20/9/2008 10:37:31 | Richard | [[index.html|http://richard.relocution.com/elearning/index.html#%5B%5BNo%20MyEd%20this%20Saturday%20morning%5D%5D]] | [[store.php|http://richard.relocution.com/elearning/store.php]] | | index.html | |\n| 20/9/2008 14:45:19 | Richard | [[index.html|http://richard.relocution.com/elearning/index.html#%5B%5BHello%20World%5D%5D]] | [[store.php|http://richard.relocution.com/elearning/store.php]] | | index.html | |\n| 21/9/2008 18:48:57 | Richard | [[index.html|http://richard.relocution.com/elearning/index.html#%5B%5BUnderstanding%20Learning%20in%20the%20Online%20Environment%5D%5D]] | [[store.php|http://richard.relocution.com/elearning/store.php]] | | index.html | |\n| 21/9/2008 21:52:12 | Richard | [[index.html|http://richard.relocution.com/elearning/index.html#%5B%5BPapert%3A%20A%20word%20for%20learning%5D%5D]] | [[store.php|http://richard.relocution.com/elearning/store.php]] | | index.html | | Ok |\n| 21/9/2008 21:56:7 | Richard | [[index.html|http://richard.relocution.com/elearning/index.html#%5B%5BE-learning%2C%20Politics%20and%20Society%5D%5D]] | [[store.php|http://richard.relocution.com/elearning/store.php]] | | index.html | |\n| 22/9/2008 0:54:5 | Richard | [[/|http://richard.relocution.com/elearning/#%5B%5BHello%20World%5D%5D]] | [[store.php|http://richard.relocution.com/elearning/store.php]] | | index.html | |\n| 23/9/2008 11:45:18 | Richard | [[/|http://richard.relocution.com/elearning/#%5B%5BA%20metaphor%20for%20learning%5D%5D]] | [[store.php|http://richard.relocution.com/elearning/store.php]] | | index.html | |\n| 20/10/2008 15:26:12 | YourName | [[/|http://richard.relocution.com/elearning/#UploadOptions]] | [[store.php|http://richard.relocution.com/elearning/store.php]] | | index.html | |\n| 20/10/2008 15:50:56 | Richard | [[/|http://richard.relocution.com/elearning/#%5B%5BBriefing%20digest%3A%20Human%20cognition%20(3%2F10)%5D%5D]] | [[store.php|http://richard.relocution.com/elearning/store.php]] | | index.html | | Ok |\n| 20/10/2008 15:51:51 | Richard | [[/|http://richard.relocution.com/elearning/#%5B%5BBriefing%20digest%3A%20Human%20cognition%20(3%2F10)%5D%5D]] | [[store.php|http://richard.relocution.com/elearning/store.php]] | | index.html | | Ok |\n| 20/10/2008 16:27:57 | Richard | [[/|http://richard.relocution.com/elearning/#%5B%5B20%20October%202008%5D%5D]] | [[store.php|http://richard.relocution.com/elearning/store.php]] | | index.html | |\n| 20/10/2008 16:28:6 | Richard | [[/|http://richard.relocution.com/elearning/#%5B%5BBriefing%20digest%3A%20Learning%20as%20Active%20Construction%20(15%2F10)%5D%5D]] | [[store.php|http://richard.relocution.com/elearning/store.php]] | | index.html | | Ok | Ok |\n| 20/10/2008 16:38:6 | Richard | [[/|http://richard.relocution.com/elearning/#%5B%5BBriefing%20digest%3A%20Learning%20as%20Active%20Construction%20(15%2F10)%5D%5D]] | [[store.php|http://richard.relocution.com/elearning/store.php]] | | index.html | | Ok |\n| 20/10/2008 16:58:56 | Richard | [[/|http://richard.relocution.com/elearning/#%5B%5BBriefing%20digest%3A%20Distributed%20cognition%5D%5D]] | [[store.php|http://richard.relocution.com/elearning/store.php]] | | index.html | |\n| 20/10/2008 17:3:34 | Richard | [[/|http://richard.relocution.com/elearning/#%5B%5BBriefing%20digest%3A%20Human%20cognition%5D%5D]] | [[store.php|http://richard.relocution.com/elearning/store.php]] | | index.html | | Ok |\n| 20/10/2008 17:15:54 | Richard | [[/|http://richard.relocution.com/elearning/#%5B%5BBriefing%20digest%3A%20Distributed%20cognition%5D%5D]] | [[store.php|http://richard.relocution.com/elearning/store.php]] | | index.html | | Ok |\n| 20/10/2008 17:23:58 | Richard | [[/|http://richard.relocution.com/elearning/#%5B%5BHello%20World%5D%5D]] | [[store.php|http://richard.relocution.com/elearning/store.php]] | | index.html | | Ok |\n| 20/10/2008 17:27:31 | Richard | [[/|http://richard.relocution.com/elearning/#%5B%5BHello%20World%5D%5D]] | [[store.php|http://richard.relocution.com/elearning/store.php]] | | index.html | |\n| 20/10/2008 23:3:49 | Richard | [[index.html|http://richard.relocution.com/elearning/index.html#%5B%5BPlagiarise%2C%20plagiarise%5D%5D]] | [[store.php|http://richard.relocution.com/elearning/store.php]] | | index.html | |\n| 18/11/2008 22:12:31 | Richard | [[/|http://richard.relocution.com/elearning/#UploadOptions]] | [[store.php|http://richard.relocution.com/elearning/store.php]] | | index.html | |\n| 18/11/2008 22:13:2 | Richard | [[/|http://richard.relocution.com/elearning/#UploadOptions]] | [[store.php|http://richard.relocution.com/elearning/store.php]] | | index.html | |\n| 18/11/2008 23:38:4 | Richard | [[index.html|http://richard.relocution.com/elearning/index.html#%5B%5BThe%20Knitting%20Report%5D%5D]] | [[store.php|http://richard.relocution.com/elearning/store.php]] | | index.html | |\n| 20/1/2009 23:5:33 | YourName | [[/|http://richard.relocution.com/elearning/]] | [[store.php|http://richard.relocution.com/elearning/store.php]] | | index.html | | Ok |\n| 20/1/2009 23:6:42 | Richard | [[/|http://richard.relocution.com/elearning/]] | [[store.php|http://richard.relocution.com/elearning/store.php]] | | index.html | |\n| 20/1/2009 23:13:39 | Richard | [[index.html|http://richard.relocution.com/elearning/index.html#%5B%5BHello%20World%5D%5D]] | [[store.php|http://richard.relocution.com/elearning/store.php]] | | index.html | | Ok |\n| 20/1/2009 23:54:46 | Richard | [[index.html|http://richard.relocution.com/elearning/index.html#%5B%5BInformation%20Literacies%20for%20Online%20Learning%5D%5D]] | [[store.php|http://richard.relocution.com/elearning/store.php]] | | index.html | |\n| 25/1/2009 18:47:5 | Richard | [[/|http://richard.relocution.com/elearning/#%5B%5BVARK%20Questionnaire%20Results%5D%5D]] | [[store.php|http://richard.relocution.com/elearning/store.php]] | | index.html | | Ok |\n| 25/1/2009 19:51:10 | Richard | [[/|http://richard.relocution.com/elearning/#%5B%5BVARK%20Questionnaire%20Results%5D%5D]] | [[store.php|http://richard.relocution.com/elearning/store.php]] | | index.html | | Ok |\n| 25/1/2009 21:25:5 | Richard | [[/|http://richard.relocution.com/elearning/#%5B%5BVARK%20Questionnaire%20Results%5D%5D]] | [[store.php|http://richard.relocution.com/elearning/store.php]] | | index.html | | Ok |\n| 25/1/2009 21:42:29 | Richard | [[/|http://richard.relocution.com/elearning/#%5B%5BVARK%20Questionnaire%20Results%5D%5D]] | [[store.php|http://richard.relocution.com/elearning/store.php]] | | index.html | | Ok |\n| 25/1/2009 22:18:32 | Richard | [[/|http://richard.relocution.com/elearning/#%5B%5BInformation%20Literacies%20for%20Online%20Learning%5D%5D]] | [[store.php|http://richard.relocution.com/elearning/store.php]] | | index.html | | Ok |\n| 25/1/2009 23:3:21 | Richard | [[/|http://richard.relocution.com/elearning/#%5B%5BOn%20reading%20Bundy%20on%20IL%20definitions%5D%5D]] | [[store.php|http://richard.relocution.com/elearning/store.php]] | | index.html | |\n| 27/1/2009 10:31:10 | Richard | [[/|http://richard.relocution.com/elearning/#%5B%5BWeek%202%20Aide%20Memoire%5D%5D]] | [[store.php|http://richard.relocution.com/elearning/store.php]] | | index.html | | Ok |\n| 27/1/2009 10:32:21 | Richard | [[/|http://richard.relocution.com/elearning/#%5B%5BWeb%20Links%20(20090127)%5D%5D]] | [[store.php|http://richard.relocution.com/elearning/store.php]] | | index.html | | Ok |\n| 27/1/2009 10:33:7 | Richard | [[/|http://richard.relocution.com/elearning/#%5B%5BWeb%20Links%20(20090127)%5D%5D]] | [[store.php|http://richard.relocution.com/elearning/store.php]] | | index.html | | Ok |\n| 27/1/2009 23:30:15 | Richard | [[/|http://richard.relocution.com/elearning/#%5B%5BWeb%20Links%20(20090127)%5D%5D]] | [[store.php|http://richard.relocution.com/elearning/store.php]] | | index.html | |\n| 27/1/2009 23:30:52 | Richard | [[/|http://richard.relocution.com/elearning/#%5B%5BWeb%20Links%20(20090127)%5D%5D]] | [[store.php|http://richard.relocution.com/elearning/store.php]] | | index.html | | Ok | Ok |\n| 27/1/2009 23:36:36 | Richard | [[/|http://richard.relocution.com/elearning/#%5B%5BWeb%20Links%20(20090127)%5D%5D]] | [[store.php|http://richard.relocution.com/elearning/store.php]] | | index.html | |
!Options used by UploadPlugin\nUsername: <<option txtUploadUserName>>\nPassword: <<option pasUploadPassword>>\n\nUrl of the UploadService script^^(1)^^: <<option txtUploadStoreUrl 50>>\nRelative Directory where to store the file^^(2)^^: <<option txtUploadDir 50>>\nFilename of the uploaded file^^(3)^^: <<option txtUploadFilename 40>>\nDirectory to backup file on webserver^^(4)^^: <<option txtUploadBackupDir>>\n\n^^(1)^^Mandatory either in UploadOptions or in macro parameter\n^^(2)^^If empty stores in the script directory\n^^(3)^^If empty takes the actual filename\n^^(4)^^If empty existing file with same name on webserver will be overwritten\n\n<<upload>> with these options.\n\n!Upload Macro parameters\n{{{\n<<upload [storeUrl [toFilename [backupDir [uploadDir [username]]]]]>>\n Optional positional parameters can be passed to overwrite \n UploadOptions. \n}}}\n\n
/***\n|''Name:''|UploadPlugin|\n|''Description:''|Save to web a TiddlyWiki|\n|''Version:''|3.4.5|\n|''Date:''|Oct 15, 2006|\n|''Source:''|http://tiddlywiki.bidix.info/#UploadPlugin|\n|''Documentation:''|http://tiddlywiki.bidix.info/#UploadDoc|\n|''Author:''|BidiX (BidiX (at) bidix (dot) info)|\n|''License:''|[[BSD open source license|http://tiddlywiki.bidix.info/#%5B%5BBSD%20open%20source%20license%5D%5D ]]|\n|''~CoreVersion:''|2.0.0|\n|''Browser:''|Firefox 1.5; InternetExplorer 6.0; Safari|\n|''Include:''|config.lib.file; config.lib.log; config.lib.options; PasswordTweak|\n|''Require:''|[[UploadService|http://tiddlywiki.bidix.info/#UploadService]]|\n***/\n//{{{\nversion.extensions.UploadPlugin = {\n major: 3, minor: 4, revision: 5, \n date: new Date(2006,9,15),\n source: 'http://tiddlywiki.bidix.info/#UploadPlugin',\n documentation: 'http://tiddlywiki.bidix.info/#UploadDoc',\n author: 'BidiX (BidiX (at) bidix (dot) info',\n license: '[[BSD open source license|http://tiddlywiki.bidix.info/#%5B%5BBSD%20open%20source%20license%5D%5D]]',\n coreVersion: '2.0.0',\n browser: 'Firefox 1.5; InternetExplorer 6.0; Safari'\n};\n//}}}\n\n////+++!![config.lib.file]\n\n//{{{\nif (!config.lib) config.lib = {};\nif (!config.lib.file) config.lib.file= {\n author: 'BidiX',\n version: {major: 0, minor: 1, revision: 0}, \n date: new Date(2006,3,9)\n};\nconfig.lib.file.dirname = function (filePath) {\n var lastpos;\n if ((lastpos = filePath.lastIndexOf("/")) != -1) {\n return filePath.substring(0, lastpos);\n } else {\n return filePath.substring(0, filePath.lastIndexOf("\s\s"));\n }\n};\nconfig.lib.file.basename = function (filePath) {\n var lastpos;\n if ((lastpos = filePath.lastIndexOf("#")) != -1) \n filePath = filePath.substring(0, lastpos);\n if ((lastpos = filePath.lastIndexOf("/")) != -1) {\n return filePath.substring(lastpos + 1);\n } else\n return filePath.substring(filePath.lastIndexOf("\s\s")+1);\n};\nwindow.basename = function() {return "@@deprecated@@";};\n//}}}\n////===\n\n////+++!![config.lib.log]\n\n//{{{\nif (!config.lib) config.lib = {};\nif (!config.lib.log) config.lib.log= {\n author: 'BidiX',\n version: {major: 0, minor: 1, revision: 1}, \n date: new Date(2006,8,19)\n};\nconfig.lib.Log = function(tiddlerTitle, logHeader) {\n if (version.major < 2)\n this.tiddler = store.tiddlers[tiddlerTitle];\n else\n this.tiddler = store.getTiddler(tiddlerTitle);\n if (!this.tiddler) {\n this.tiddler = new Tiddler();\n this.tiddler.title = tiddlerTitle;\n this.tiddler.text = "| !date | !user | !location |" + logHeader;\n this.tiddler.created = new Date();\n this.tiddler.modifier = config.options.txtUserName;\n this.tiddler.modified = new Date();\n if (version.major < 2)\n store.tiddlers[tiddlerTitle] = this.tiddler;\n else\n store.addTiddler(this.tiddler);\n }\n return this;\n};\n\nconfig.lib.Log.prototype.newLine = function (line) {\n var now = new Date();\n var newText = "| ";\n newText += now.getDate()+"/"+(now.getMonth()+1)+"/"+now.getFullYear() + " ";\n newText += now.getHours()+":"+now.getMinutes()+":"+now.getSeconds()+" | ";\n newText += config.options.txtUserName + " | ";\n var location = document.location.toString();\n var filename = config.lib.file.basename(location);\n if (!filename) filename = '/';\n newText += "[["+filename+"|"+location + "]] |";\n this.tiddler.text = this.tiddler.text + "\sn" + newText;\n this.addToLine(line);\n};\n\nconfig.lib.Log.prototype.addToLine = function (text) {\n this.tiddler.text = this.tiddler.text + text;\n this.tiddler.modifier = config.options.txtUserName;\n this.tiddler.modified = new Date();\n if (version.major < 2)\n store.tiddlers[this.tiddler.tittle] = this.tiddler;\n else {\n store.addTiddler(this.tiddler);\n story.refreshTiddler(this.tiddler.title);\n store.notify(this.tiddler.title, true);\n }\n if (version.major < 2)\n store.notifyAll(); \n};\n//}}}\n////===\n\n////+++!![config.lib.options]\n\n//{{{\nif (!config.lib) config.lib = {};\nif (!config.lib.options) config.lib.options = {\n author: 'BidiX',\n version: {major: 0, minor: 1, revision: 0}, \n date: new Date(2006,3,9)\n};\n\nconfig.lib.options.init = function (name, defaultValue) {\n if (!config.options[name]) {\n config.options[name] = defaultValue;\n saveOptionCookie(name);\n }\n};\n//}}}\n////===\n\n////+++!![PasswordTweak]\n\n//{{{\nversion.extensions.PasswordTweak = {\n major: 1, minor: 0, revision: 3, date: new Date(2006,8,30),\n type: 'tweak',\n source: 'http://tiddlywiki.bidix.info/#PasswordTweak'\n};\n//}}}\n/***\n!!config.macros.option\n***/\n//{{{\nconfig.macros.option.passwordCheckboxLabel = "Save this password on this computer";\nconfig.macros.option.passwordType = "password"; // password | text\n\nconfig.macros.option.onChangeOption = function(e)\n{\n var opt = this.getAttribute("option");\n var elementType,valueField;\n if(opt) {\n switch(opt.substr(0,3)) {\n case "txt":\n elementType = "input";\n valueField = "value";\n break;\n case "pas":\n elementType = "input";\n valueField = "value";\n break;\n case "chk":\n elementType = "input";\n valueField = "checked";\n break;\n }\n config.options[opt] = this[valueField];\n saveOptionCookie(opt);\n var nodes = document.getElementsByTagName(elementType);\n for(var t=0; t<nodes.length; t++) \n {\n var optNode = nodes[t].getAttribute("option");\n if (opt == optNode) \n nodes[t][valueField] = this[valueField];\n }\n }\n return(true);\n};\n\nconfig.macros.option.handler = function(place,macroName,params)\n{\n var opt = params[0];\n if(config.options[opt] === undefined) {\n return;}\n var c;\n switch(opt.substr(0,3)) {\n case "txt":\n c = document.createElement("input");\n c.onkeyup = this.onChangeOption;\n c.setAttribute ("option",opt);\n c.className = "txtOptionInput "+opt;\n place.appendChild(c);\n c.value = config.options[opt];\n break;\n case "pas":\n // input password\n c = document.createElement ("input");\n c.setAttribute("type",config.macros.option.passwordType);\n c.onkeyup = this.onChangeOption;\n c.setAttribute("option",opt);\n c.className = "pasOptionInput "+opt;\n place.appendChild(c);\n c.value = config.options[opt];\n // checkbox link with this password "save this password on this computer"\n c = document.createElement("input");\n c.setAttribute("type","checkbox");\n c.onclick = this.onChangeOption;\n c.setAttribute("option","chk"+opt);\n c.className = "chkOptionInput "+opt;\n place.appendChild(c);\n c.checked = config.options["chk"+opt];\n // text savePasswordCheckboxLabel\n place.appendChild(document.createTextNode(config.macros.option.passwordCheckboxLabel));\n break;\n case "chk":\n c = document.createElement("input");\n c.setAttribute("type","checkbox");\n c.onclick = this.onChangeOption;\n c.setAttribute("option",opt);\n c.className = "chkOptionInput "+opt;\n place.appendChild(c);\n c.checked = config.options[opt];\n break;\n }\n};\n//}}}\n/***\n!! Option cookie stuff\n***/\n//{{{\nwindow.loadOptionsCookie_orig_PasswordTweak = window.loadOptionsCookie;\nwindow.loadOptionsCookie = function()\n{\n var cookies = document.cookie.split(";");\n for(var c=0; c<cookies.length; c++) {\n var p = cookies[c].indexOf("=");\n if(p != -1) {\n var name = cookies[c].substr(0,p).trim();\n var value = cookies[c].substr(p+1).trim();\n switch(name.substr(0,3)) {\n case "txt":\n config.options[name] = unescape(value);\n break;\n case "pas":\n config.options[name] = unescape(value);\n break;\n case "chk":\n config.options[name] = value == "true";\n break;\n }\n }\n }\n};\n\nwindow.saveOptionCookie_orig_PasswordTweak = window.saveOptionCookie;\nwindow.saveOptionCookie = function(name)\n{\n var c = name + "=";\n switch(name.substr(0,3)) {\n case "txt":\n c += escape(config.options[name].toString());\n break;\n case "chk":\n c += config.options[name] ? "true" : "false";\n // is there an option link with this chk ?\n if (config.options[name.substr(3)]) {\n saveOptionCookie(name.substr(3));\n }\n break;\n case "pas":\n if (config.options["chk"+name]) {\n c += escape(config.options[name].toString());\n } else {\n c += "";\n }\n break;\n }\n c += "; expires=Fri, 1 Jan 2038 12:00:00 UTC; path=/";\n document.cookie = c;\n};\n//}}}\n/***\n!! Initializations\n***/\n//{{{\n// define config.options.pasPassword\nif (!config.options.pasPassword) {\n config.options.pasPassword = 'defaultPassword';\n window.saveOptionCookie('pasPassword');\n}\n// since loadCookies is first called befor password definition\n// we need to reload cookies\nwindow.loadOptionsCookie();\n//}}}\n////===\n\n////+++!![config.macros.upload]\n\n//{{{\nconfig.macros.upload = {\n accessKey: "U",\n formName: "UploadPlugin",\n contentType: "text/html;charset=UTF-8",\n defaultStoreScript: "store.php"\n};\n\n// only this two configs need to be translated\nconfig.macros.upload.messages = {\n aboutToUpload: "About to upload TiddlyWiki to %0",\n backupFileStored: "Previous file backuped in %0",\n crossDomain: "Certainly a cross-domain isue: access to an other site isn't allowed",\n errorDownloading: "Error downloading",\n errorUploadingContent: "Error uploading content",\n fileLocked: "Files is locked: You are not allowed to Upload",\n fileNotFound: "file to upload not found",\n fileNotUploaded: "File %0 NOT uploaded",\n mainFileUploaded: "Main TiddlyWiki file uploaded to %0",\n passwordEmpty: "Unable to upload, your password is empty",\n urlParamMissing: "url param missing",\n rssFileNotUploaded: "RssFile %0 NOT uploaded",\n rssFileUploaded: "Rss File uploaded to %0"\n};\n\nconfig.macros.upload.label = {\n promptOption: "Save and Upload this TiddlyWiki with UploadOptions",\n promptParamMacro: "Save and Upload this TiddlyWiki in %0",\n saveLabel: "save to web", \n saveToDisk: "save to disk",\n uploadLabel: "upload" \n};\n\nconfig.macros.upload.handler = function(place,macroName,params){\n // parameters initialization\n var storeUrl = params[0];\n var toFilename = params[1];\n var backupDir = params[2];\n var uploadDir = params[3];\n var username = params[4];\n var password; // for security reason no password as macro parameter\n var label;\n if (document.location.toString().substr(0,4) == "http")\n label = this.label.saveLabel;\n else\n label = this.label.uploadLabel;\n var prompt;\n if (storeUrl) {\n prompt = this.label.promptParamMacro.toString().format([this.toDirUrl(storeUrl, uploadDir, username)]);\n }\n else {\n prompt = this.label.promptOption;\n }\n createTiddlyButton(place, label, prompt, \n function () {\n config.macros.upload.upload(storeUrl, toFilename, uploadDir, backupDir, username, password); \n return false;}, \n null, null, this.accessKey);\n};\nconfig.macros.upload.UploadLog = function() {\n return new config.lib.Log('UploadLog', " !storeUrl | !uploadDir | !toFilename | !backupdir | !origin |" );\n};\nconfig.macros.upload.UploadLog.prototype = config.lib.Log.prototype;\nconfig.macros.upload.UploadLog.prototype.startUpload = function(storeUrl, toFilename, uploadDir, backupDir) {\n var line = " [[" + config.lib.file.basename(storeUrl) + "|" + storeUrl + "]] | ";\n line += uploadDir + " | " + toFilename + " | " + backupDir + " |";\n this.newLine(line);\n};\nconfig.macros.upload.UploadLog.prototype.endUpload = function() {\n this.addToLine(" Ok |");\n};\nconfig.macros.upload.basename = config.lib.file.basename;\nconfig.macros.upload.dirname = config.lib.file.dirname;\nconfig.macros.upload.toRootUrl = function (storeUrl, username)\n{\n return root = (this.dirname(storeUrl)?this.dirname(storeUrl):this.dirname(document.location.toString()));\n}\nconfig.macros.upload.toDirUrl = function (storeUrl, uploadDir, username)\n{\n var root = this.toRootUrl(storeUrl, username);\n if (uploadDir && uploadDir != '.')\n root = root + '/' + uploadDir;\n return root;\n}\nconfig.macros.upload.toFileUrl = function (storeUrl, toFilename, uploadDir, username)\n{\n return this.toDirUrl(storeUrl, uploadDir, username) + '/' + toFilename;\n}\nconfig.macros.upload.upload = function(storeUrl, toFilename, uploadDir, backupDir, username, password)\n{\n // parameters initialization\n storeUrl = (storeUrl ? storeUrl : config.options.txtUploadStoreUrl);\n toFilename = (toFilename ? toFilename : config.options.txtUploadFilename);\n backupDir = (backupDir ? backupDir : config.options.txtUploadBackupDir);\n uploadDir = (uploadDir ? uploadDir : config.options.txtUploadDir);\n username = (username ? username : config.options.txtUploadUserName);\n password = config.options.pasUploadPassword; // for security reason no password as macro parameter\n if (!password || password === '') {\n alert(config.macros.upload.messages.passwordEmpty);\n return;\n }\n if (storeUrl === '') {\n storeUrl = config.macros.upload.defaultStoreScript;\n }\n if (config.lib.file.dirname(storeUrl) === '') {\n storeUrl = config.lib.file.dirname(document.location.toString())+'/'+storeUrl;\n }\n if (toFilename === '') {\n toFilename = config.lib.file.basename(document.location.toString());\n }\n\n clearMessage();\n // only for forcing the message to display\n if (version.major < 2)\n store.notifyAll();\n if (!storeUrl) {\n alert(config.macros.upload.messages.urlParamMissing);\n return;\n }\n // Check that file is not locked\n if (window.BidiX && BidiX.GroupAuthoring && BidiX.GroupAuthoring.lock) {\n if (BidiX.GroupAuthoring.lock.isLocked() && !BidiX.GroupAuthoring.lock.isMyLock()) {\n alert(config.macros.upload.messages.fileLocked);\n return;\n }\n }\n \n var log = new this.UploadLog();\n log.startUpload(storeUrl, toFilename, uploadDir, backupDir);\n if (document.location.toString().substr(0,5) == "file:") {\n saveChanges();\n }\n var toDir = config.macros.upload.toDirUrl(storeUrl, toFilename, uploadDir, username);\n displayMessage(config.macros.upload.messages.aboutToUpload.format([toDir]), toDir);\n this.uploadChanges(storeUrl, toFilename, uploadDir, backupDir, username, password);\n if(config.options.chkGenerateAnRssFeed) {\n //var rssContent = convertUnicodeToUTF8(generateRss());\n var rssContent = generateRss();\n var rssPath = toFilename.substr(0,toFilename.lastIndexOf(".")) + ".xml";\n this.uploadContent(rssContent, storeUrl, rssPath, uploadDir, '', username, password, \n function (responseText) {\n if (responseText.substring(0,1) != '0') {\n displayMessage(config.macros.upload.messages.rssFileNotUploaded.format([rssPath]));\n }\n else {\n var toFileUrl = config.macros.upload.toFileUrl(storeUrl, rssPath, uploadDir, username);\n displayMessage(config.macros.upload.messages.rssFileUploaded.format(\n [toFileUrl]), toFileUrl);\n }\n // for debugging store.php uncomment last line\n //DEBUG alert(responseText);\n });\n }\n return;\n};\n\nconfig.macros.upload.uploadChanges = function(storeUrl, toFilename, uploadDir, backupDir, \n username, password) {\n var original;\n if (document.location.toString().substr(0,4) == "http") {\n original = this.download(storeUrl, toFilename, uploadDir, backupDir, username, password);\n return;\n }\n else {\n // standard way : Local file\n \n original = loadFile(getLocalPath(document.location.toString()));\n if(window.Components) {\n // it's a mozilla browser\n try {\n netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");\n var converter = Components.classes["@mozilla.org/intl/scriptableunicodeconverter"]\n .createInstance(Components.interfaces.nsIScriptableUnicodeConverter);\n converter.charset = "UTF-8";\n original = converter.ConvertToUnicode(original);\n }\n catch(e) {\n }\n }\n }\n //DEBUG alert(original);\n this.uploadChangesFrom(original, storeUrl, toFilename, uploadDir, backupDir, \n username, password);\n};\n\nconfig.macros.upload.uploadChangesFrom = function(original, storeUrl, toFilename, uploadDir, backupDir, \n username, password) {\n var startSaveArea = '<div id="' + 'storeArea">'; // Split up into two so that indexOf() of this source doesn't find it\n var endSaveArea = '</d' + 'iv>';\n // Locate the storeArea div's\n var posOpeningDiv = original.indexOf(startSaveArea);\n var posClosingDiv = original.lastIndexOf(endSaveArea);\n if((posOpeningDiv == -1) || (posClosingDiv == -1))\n {\n alert(config.messages.invalidFileError.format([document.location.toString()]));\n return;\n }\n var revised = original.substr(0,posOpeningDiv + startSaveArea.length) + \n allTiddlersAsHtml() + "\sn\st\st" +\n original.substr(posClosingDiv);\n var newSiteTitle;\n if(version.major < 2){\n newSiteTitle = (getElementText("siteTitle") + " - " + getElementText("siteSubtitle")).htmlEncode();\n } else {\n newSiteTitle = (wikifyPlain ("SiteTitle") + " - " + wikifyPlain ("SiteSubtitle")).htmlEncode();\n }\n\n revised = revised.replaceChunk("<title"+">","</title"+">"," " + newSiteTitle + " ");\n revised = revised.replaceChunk("<!--PRE-HEAD-START--"+">","<!--PRE-HEAD-END--"+">","\sn" + store.getTiddlerText("MarkupPreHead","") + "\sn");\n revised = revised.replaceChunk("<!--POST-HEAD-START--"+">","<!--POST-HEAD-END--"+">","\sn" + store.getTiddlerText("MarkupPostHead","") + "\sn");\n revised = revised.replaceChunk("<!--PRE-BODY-START--"+">","<!--PRE-BODY-END--"+">","\sn" + store.getTiddlerText("MarkupPreBody","") + "\sn");\n revised = revised.replaceChunk("<!--POST-BODY-START--"+">","<!--POST-BODY-END--"+">","\sn" + store.getTiddlerText("MarkupPostBody","") + "\sn");\n\n var response = this.uploadContent(revised, storeUrl, toFilename, uploadDir, backupDir, \n username, password, function (responseText) {\n if (responseText.substring(0,1) != '0') {\n alert(responseText);\n displayMessage(config.macros.upload.messages.fileNotUploaded.format([getLocalPath(document.location.toString())]));\n }\n else {\n if (uploadDir !== '') {\n toFilename = uploadDir + "/" + config.macros.upload.basename(toFilename);\n } else {\n toFilename = config.macros.upload.basename(toFilename);\n }\n var toFileUrl = config.macros.upload.toFileUrl(storeUrl, toFilename, uploadDir, username);\n if (responseText.indexOf("destfile:") > 0) {\n var destfile = responseText.substring(responseText.indexOf("destfile:")+9, \n responseText.indexOf("\sn", responseText.indexOf("destfile:")));\n toFileUrl = config.macros.upload.toRootUrl(storeUrl, username) + '/' + destfile;\n }\n else {\n toFileUrl = config.macros.upload.toFileUrl(storeUrl, toFilename, uploadDir, username);\n }\n displayMessage(config.macros.upload.messages.mainFileUploaded.format(\n [toFileUrl]), toFileUrl);\n if (backupDir && responseText.indexOf("backupfile:") > 0) {\n var backupFile = responseText.substring(responseText.indexOf("backupfile:")+11, \n responseText.indexOf("\sn", responseText.indexOf("backupfile:")));\n toBackupUrl = config.macros.upload.toRootUrl(storeUrl, username) + '/' + backupFile;\n displayMessage(config.macros.upload.messages.backupFileStored.format(\n [toBackupUrl]), toBackupUrl);\n }\n var log = new config.macros.upload.UploadLog();\n log.endUpload();\n store.setDirty(false);\n // erase local lock\n if (window.BidiX && BidiX.GroupAuthoring && BidiX.GroupAuthoring.lock) {\n BidiX.GroupAuthoring.lock.eraseLock();\n // change mtime with new mtime after upload\n var mtime = responseText.substr(responseText.indexOf("mtime:")+6);\n BidiX.GroupAuthoring.lock.mtime = mtime;\n }\n \n \n }\n // for debugging store.php uncomment last line\n //DEBUG alert(responseText);\n }\n );\n};\n\nconfig.macros.upload.uploadContent = function(content, storeUrl, toFilename, uploadDir, backupDir, \n username, password, callbackFn) {\n var boundary = "---------------------------"+"AaB03x"; \n var request;\n try {\n request = new XMLHttpRequest();\n } \n catch (e) { \n request = new ActiveXObject("Msxml2.XMLHTTP"); \n }\n if (window.netscape){\n try {\n if (document.location.toString().substr(0,4) != "http") {\n netscape.security.PrivilegeManager.enablePrivilege('UniversalBrowserRead');}\n }\n catch (e) {}\n } \n //DEBUG alert("user["+config.options.txtUploadUserName+"] password[" + config.options.pasUploadPassword + "]");\n // compose headers data\n var sheader = "";\n sheader += "--" + boundary + "\sr\snContent-disposition: form-data; name=\s"";\n sheader += config.macros.upload.formName +"\s"\sr\sn\sr\sn";\n sheader += "backupDir="+backupDir\n +";user=" + username \n +";password=" + password\n +";uploaddir=" + uploadDir;\n // add lock attributes to sheader\n if (window.BidiX && BidiX.GroupAuthoring && BidiX.GroupAuthoring.lock) {\n var l = BidiX.GroupAuthoring.lock.myLock;\n sheader += ";lockuser=" + l.user\n + ";mtime=" + l.mtime\n + ";locktime=" + l.locktime;\n }\n sheader += ";;\sr\sn"; \n sheader += "\sr\sn" + "--" + boundary + "\sr\sn";\n sheader += "Content-disposition: form-data; name=\s"userfile\s"; filename=\s""+toFilename+"\s"\sr\sn";\n sheader += "Content-Type: " + config.macros.upload.contentType + "\sr\sn";\n sheader += "Content-Length: " + content.length + "\sr\sn\sr\sn";\n // compose trailer data\n var strailer = new String();\n strailer = "\sr\sn--" + boundary + "--\sr\sn";\n //strailer = "--" + boundary + "--\sr\sn";\n var data;\n data = sheader + content + strailer;\n //request.open("POST", storeUrl, true, username, password);\n try {\n request.open("POST", storeUrl, true); \n }\n catch(e) {\n alert(config.macros.upload.messages.crossDomain + "\snError:" +e);\n exit;\n }\n request.onreadystatechange = function () {\n if (request.readyState == 4) {\n if (request.status == 200)\n callbackFn(request.responseText);\n else\n alert(config.macros.upload.messages.errorUploadingContent + "\snStatus: "+request.status.statusText);\n }\n };\n request.setRequestHeader("Content-Length",data.length);\n request.setRequestHeader("Content-Type","multipart/form-data; boundary="+boundary);\n request.send(data); \n};\n\n\nconfig.macros.upload.download = function(uploadUrl, uploadToFilename, uploadDir, uploadBackupDir, \n username, password) {\n var request;\n try {\n request = new XMLHttpRequest();\n } \n catch (e) { \n request = new ActiveXObject("Msxml2.XMLHTTP"); \n }\n try {\n if (uploadUrl.substr(0,4) == "http") {\n netscape.security.PrivilegeManager.enablePrivilege("UniversalBrowserRead");\n }\n else {\n netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");\n }\n } catch (e) { }\n //request.open("GET", document.location.toString(), true, username, password);\n try {\n request.open("GET", document.location.toString(), true);\n }\n catch(e) {\n alert(config.macros.upload.messages.crossDomain + "\snError:" +e);\n exit;\n }\n \n request.onreadystatechange = function () {\n if (request.readyState == 4) {\n if(request.status == 200) {\n config.macros.upload.uploadChangesFrom(request.responseText, uploadUrl, \n uploadToFilename, uploadDir, uploadBackupDir, username, password);\n }\n else\n alert(config.macros.upload.messages.errorDownloading.format(\n [document.location.toString()]) + "\snStatus: "+request.status.statusText);\n }\n };\n request.send(null);\n};\n\n//}}}\n////===\n\n////+++!![Initializations]\n\n//{{{\nconfig.lib.options.init('txtUploadStoreUrl','store.php');\nconfig.lib.options.init('txtUploadFilename','');\nconfig.lib.options.init('txtUploadDir','');\nconfig.lib.options.init('txtUploadBackupDir','');\nconfig.lib.options.init('txtUploadUserName',config.options.txtUserName);\nconfig.lib.options.init('pasUploadPassword','');\nsetStylesheet(\n ".pasOptionInput {width: 11em;}\sn"+\n ".txtOptionInput.txtUploadStoreUrl {width: 25em;}\sn"+\n ".txtOptionInput.txtUploadFilename {width: 25em;}\sn"+\n ".txtOptionInput.txtUploadDir {width: 25em;}\sn"+\n ".txtOptionInput.txtUploadBackupDir {width: 25em;}\sn"+\n "",\n "UploadOptionsStyles");\nif (document.location.toString().substr(0,4) == "http") {\n config.options.chkAutoSave = false; \n saveOptionCookie('chkAutoSave');\n}\nconfig.shadowTiddlers.UploadDoc = "[[Full Documentation|http://tiddlywiki.bidix.info/l#UploadDoc ]]\sn"; \n\n//}}}\n////===\n\n////+++!![Core Hijacking]\n\n//{{{\nconfig.macros.saveChanges.label_orig_UploadPlugin = config.macros.saveChanges.label;\nconfig.macros.saveChanges.label = config.macros.upload.label.saveToDisk;\n\nconfig.macros.saveChanges.handler_orig_UploadPlugin = config.macros.saveChanges.handler;\n\nconfig.macros.saveChanges.handler = function(place)\n{\n if ((!readOnly) && (document.location.toString().substr(0,4) != "http"))\n createTiddlyButton(place,this.label,this.prompt,this.onClick,null,null,this.accessKey);\n};\n\n//}}}\n////===\n
<<tiddler UploadDoc>>
/***\n|''Name:''|UploadPluginMsgEN|\n|''Description:''|English Translation|\n|''Date:''|Sep 20, 2006|\n|''Source:''|http://tiddlywiki.bidix.info/#UploadPluginMsgEN|\n|''Author:''|BidiX (BidiX (at) bidix (dot) info) with modifications by YannPerrin|\n|''License:''|[[BSD open source license|http://tiddlywiki.bidix.info/#%5B%5BBSD%20open%20source%20license%5D%5D ]]|\n|''Include:''|none|\n|''Require:''|UploadPlugin 3.4.3|\n***/\n/***\n!Usage : \nFor an english translation of UploadPlugin Message when using PolyGlotPlugin, import this tiddler in the TiddlyWiki. Make sure it is tagged with {{{en}}} and {{{linguo}}}. \nComments and suggestions are welcome.\n***/\n//{{{\nconfig.macros.upload.messages = {\n aboutToUpload: "About to upload TiddlyWiki to %0",\n backupFileStored: "Previous file backuped in %0",\n crossDomain: "Certainly a cross-domain issue: access to an other site isn't allowed",\n errorDownloading: "Error downloading",\n errorUploadingContent: "Error uploading content",\n fileLocked: "Files is locked: You are not allowed to Upload",\n fileNotFound: "file to upload not found",\n fileNotUploaded: "File %0 NOT uploaded",\n mainFileUploaded: "Main TiddlyWiki file uploaded to %0",\n passwordEmpty: "Unable to upload, your password is empty",\n urlParamMissing: "url param missing",\n rssFileNotUploaded: "RssFile %0 NOT uploaded",\n rssFileUploaded: "Rss File uploaded to %0"\n};\n\nconfig.macros.upload.label = {\n promptOption: "Save and Upload this TiddlyWiki with UploadOptions",\n promptParamMacro: "Save and Upload this TiddlyWiki in %0",\n saveLabel: "save to web", \n saveToDisk: "save to disk",\n uploadLabel: "upload" \n};\n\nconfig.macros.saveChanges.label = config.macros.upload.label.saveToDisk;\n//}}}\n
//last update: UploadToFileMacro v 1.4.0//\n\n!Description\nUpload a tiddler as a file using UploadPlugin context. \n\nUsed with the SimonBaird's RunMacroIfTagged in [[ViewTemplate]] provides a new command in the tiddler toolbar.\n\n!Usage\n{{{\n <<uploadToFile>>\n <<uploadTofile [filename [tiddlerTitle]]>>\n \n tiddlerTitle: if omitted the title of the current tiddler \n filename: if omitted the title of the current tiddler\n\n}}}\n\n!Revision history\n* v1.0.0 (14/03/2006)\n** initial release\n
"Tiddlers" are the building blocks of [[TiddlyWiki|http://www.tiddlywiki.com]]. Each "entry" or "post" is a Tiddler. There are also special Tiddlers that control the MainMenu, SiteTitle, SiteSubtitle, and list of DefaultTiddlers that display on start up. \n\nYou can edit entries, or "Tiddlers", by clicking "edit" or double clicking anywhere on the Tiddler. When you click "done" or press [ctrl+enter] your changes are stored (but not saved - you can only save changes to a local copy you have downloaded).\n\nMore help on using ~TiddlyWiki all over the web, for example [[TiddlyWiki for the rest of us|http://www.giffmex.org/twfortherestofus.html]].
My scores were:\n\nFirst time (trying to be straight, even on irrelevant/ill-conceived questions):\n\n * Visual: 7\n * Aural: 10\n * Read/Write: 13\n * Kinesthetic: 12\n\nSecond time (selecting ALL options for irrelevant questions, so that the program accepted them)\n\n * Visual: 2\n * Aural: 8\n * Read/Write: 10\n * Kinesthetic: 10\n\nMore Information...\n\n"You have a multimodal (VARK) learning preference." (But predominantly RK. I'll go along with that. Not sure about the results for aural and visual: depends on the purpose, and the questionnaire is over-contrived.)\n\nhttp://www.vark-learn.com/english/page.asp?p=multimodal\n\nSome of the questions are supremely flawed. For example\n\nYou are about to purchase a digital camera or mobile phone. Other than price, what would most influence your decision?\n* Reading the details about its features.\n* Trying or testing it\n* The salesperson telling me about its features.\n* It is a modern design and looks good.\n\nNow, we know what the thrust of each of those questions is (in order: R, K, A, V) but the scenario is simply daft. The fact that "the salesperson telling me about its features" would not influence me has nothing to do with my preferred stimulus, but my natural suspicion of salesmen. Similarly, being unmoved by whether it "is a modern design and looks good" seems to me nothing to do with "learning style", but rather my experience of the gulf between how such electronic devices are styled and marketed and whether they are any bloody good. A mobile phone or digital camera is a functional, tactile, kinetic device, and if you don't try it out first /and/ thoroughly study the spec, you may well be wasting a lot of money.\n\nOther flawed questions, where something more than just VARK is going on include:\n"what would most influence your decision to buy a new non-fiction book"; "you want to learn a new program, skill or game on a computer..."; "you are not sure whether a word should be spelled `dependent' or `dependant'". As for whether I care how a doctor describes my hypothetical knee problem...!\n\nI'm surprised they didn't also ask: You want to know the time. Do you: Phone the speaking clock; look at your watch; ask someone to write it down for you; something "kinetic" I can't immediately think of.\n\nSo, all-in-all, an interesting get-you-thinking exercise, that might throw up a few indicators, but a bit too superficial for me to think too much of it. I am mixed modality because I look up a word in a dictionary but use a map to find directions. A useful insight?
<!--{{{-->\n<div class='toolbar' macro='toolbar closeTiddler closeOthers +editTiddler permalink references jump'></div>\n<div class='title' macro='view title'></div>\n<div class='subtitle' style='font-size: x-small;'><span macro='view modifier link'></span>, <span macro='view created date [[DD MMM YYYY]]'></span></div>\n<div class='tagging' macro='tagging'></div>\n<div class='tagged' macro='tags'></div>\n<div class='viewer' macro='view text wikified'></div>\n<div class="subtitle" style="text-align: right; margin-top: 2ex; font-size: x-small; font-style: italic;">modified: <span macro='view modified date [[DD MMM YYYY]]'></div>\n<div class='tagClear'></div>\n<!--}}}-->
Warwick University has been running a blogging server, Warwick Blogs (http://blogs.warwick.ac.uk), for all its students, since October 2004, and it seems to be well used. Warwick recommends use of blogs by students, regardless of their field of study, to “find their “authorial voice” and “personal prose style”. It goes on: “Blogs make it simple for anyone at Warwick to have their own web presence. We've always offered students their own web home page, but only the small fraction of students who know how to make a web site from scratch use this facility. We'd like everyone who wants a web presence to be able to have one, regardless of technical expertise” ([[Warwick Blogs FAQ, 2006|References]]). The results make intriguing reading - a fascinating collection of personal experiences of student life on any date one cares to choose.\n\nAs John Dale, Warwick's IT Manager, explained in the Guardian article, [[Just do it... blog it!|http://technology.guardian.co.uk/online/story/0,3605,1476175,00.html]] (The Guardian, 5 May 2006) , a great deal of thought went into designing the system to meet the university's requirements. One oft-repeated reservation about this sort of exercise is that it is too much dominated by inconsequential student chatter - boy/girlfriend troubles, pop music, sport - to the potential detriment of a university's academic reputation. This bias may be further exaggerated by the fact that those with more worthy uses - academic research groups or student societies - may choose to limit access to their blogs. Yet it's hard to see why this is more of a concern than many better-established features of campus life - Student Union activities, campus newspapers, radio stations, notice boards - which many would see as positive evidence of thriving activity - social and intellectual; good, bad and ugly - and Warwick Blogs is no different. It's easy to find examples of sophisticated, playful, creative writing (e.g. "[[A Snort Story|http://blogs.warwick.ac.uk/nataliebarton/entry/a_snort_story/]]" on Natalie Barton's Blog) or measured, thoughtful, articulate discussion (e.g. "[[Philosophy Of Software|http://blogs.warwick.ac.uk/tretout/entry/philosophy_of_software/]]" on Tim Retout's Blog), that convince me that Warwick has achieved something of great and lasting value.\n\n<html><iframe name="iframe1" style="width: 100%; height: 60ex; font-size: 80%;" src="http://blogs.warwick.ac.uk/nataliebarton/entry/a_snort_story/" title="Natalie Barton's Blog at Warwick"/></html>//A Snort Story by Natalie Barton, on Warwick Blogs//\n\n<html><div class='viewer' macro='navigation tiddlers:{{store.getTiddlerText("PresentationIndex").readBracketedList()}}}'></div></html>
Rebecca Blood ([[2000|References]]) observed that, originally, "weblogs could only be created by people who already knew how to make a website", and we have seen that much the same goes for the kind of encyclopaedic, hypertextual undertaking typified by The Decameron Web and its ilk. Even though the success of the World Wide Web was driven by the relative simplicity and cheapness of creating web pages using HTML, anyone who has tried it knows the complexity of managing large-scale, multi-authored sets of web documents. Despite originating in that resolutely "Web 1.0" environment ^^[[2|Notes]]^^, wikis and blogs represent a different way of engaging with the Web, and their potential usefulness is further enhanced by three other features that put the ultimate stamp of "Web 2.0" on these applications:\n\n''Comments/discussions''. In addition to making it easy to edit wiki pages or blog posts, most blogging software also provides facilities for readers to add their own comments to posts, while many wiki applications allow users (readers and authors) to discuss particular pages or sections. The association of discussions directly with the pages or posts to which they relate offers much stronger context and immediacy than if a completely separate discussion board, listserv, or newsgroup were used. \n\n''Tagging.'' Many Web 2.0 applications provide features for users to "tag" with keywords the content they create (and sometimes others' content too). This allows users to easily create loose subsets, groups or categories within their online materials. This approach has come to be known as "folksonomy", and is much more flexible than more traditional methods of formal, hierarchical arrangement and taxonomic systems, that tend to fall into disuse unless under the constant supervision and support of records managers, librarians, archivists). In addition, tags can be used for searching or association of resources among a group of users. \n\nBy way of a simple example, at last year's ~DSpace User Group (DSUG) in Norway, delegates, including myself, agreed to post their photos on photo-blogging service Flickr, and tag them with the keyword "dspacebergen2006". These photos can all be retrieved using the self-explanatory URL: http://www.flickr.com/photos/tags/dspacebergen2006. Similarly, links to relevant web resources were posted to social bookmarking site, Del.icio.us, using the same tag, and similarly retrievable, at http://del.icio.us/tag/dspacebergen2006. (This latter exercise was not as conspicuously successful as the photo blogging; nevertheless both demonstrate how an ad hoc online, information-sharing community can be created with minimal effort.) \n\n<html><iframe style="width: 100%; height: 60ex; font-size: 80%;" src="http://www.flickr.com/photos/tags/dspacebergen2006" title="dspacebergen2006: a shared tag on Flickr"/></html>//dspacebergen2006: a shared tag on Flickr//\n\n''News feeds.'' News feeds are little more than a kind of electronic ticker-tape - a simple XML file, containing core data and metadata (date, title, descripton, tags) for each sequential entry. Encoded using the RSS standard, they are easy for software to create, often as a side-effect of creating blog entries, and they are also easy for software to read. The variety of uses this simple data format can be put to seems boundless. Readers of blogs can "subscribe" to the feeds, and be notified of new entries as they are posted (many find this preferable to email notifications in this age of inboxes bursting with spam). News feeds can be generated for the comments on blog entries, so blog authors and readers can easily track comments across a blog, as soon as they are posted. Wiki users can subscribe to feeds notifying them of changes to pages or sections within the wiki. RSS feeds drive dynamic activity and interactivity behind photo-blogs such as Flickr, audio and video blogs (i.e. podcasting), and can even be used to feed live, dynamic, customised search results from commercial systems, like Ebay, media systems, like the BBC, or academic information systems, like libraries and repositiories. If I were keen to know if any further photos from DSUG in Bergen were being posted on Flickr, I can continue to monitor (subscribe to) the [[Flickr newsfeed for the "dspacebergen2006" tag|http://api.flickr.com/services/feeds/photos_public.gne?tags=dspacebergen2006&format=rss_200" ]]. In many ways RSS is the real driving force and work-horse of Web 2.0, much as HTML was to the original growth of the Web. \n\nThe result is increasingly a World Wide Web where interactivity is almost mandatory. Tim O'Reilly ([[2006|References]]) sums up the differences in a small comparative table, of which the following items are sufficient for our purposes here:\n\n<html>\n<table>\n<tr><th>Web 1.0</th><th>Web 2.0</th></tr>\n<tr><td>Britannica Online</td><td>Wikipedia</td></tr>\n<tr><td>personal websites</td><td>blogging</td></tr>\n<tr><td>screen scraping</td><td>web services</td></tr>\n<tr><td>publishing</td><td>participation</td></tr>\n<tr><td>content management systems</td><td>wikis</td></tr>\n<tr><td>directories (taxonomy)</td><td>tagging ("folksonomy")</td></tr>\n</table>\n</html>\nWhile, inevitably, many skeptics sense something of the emperor’s new clothes about Web 2.0, it nevertheless represents a well-articulated shift in wider attitudes and approaches to using the web, and, significantly, one that has reached a critical mass of acceptance. Unsurprisingly, this acceptance is most notable among the latest generations of school and university students, digital natives already accustomed to features of sites like ~MySpace or Flickr that are driven by the technologies and paradigms of Web 2.0. The result is undeniably "a move from the solitary to the social, from finished products to processes and ongoing, many-to-many communication" ([[Walker, 2006|References]]).\n\n<html><div class='viewer' macro='navigation tiddlers:{{store.getTiddlerText("PresentationIndex").readBracketedList()}}}'></div></html>\n
It's been a lot quieter discussion wise, regarding Web 2.0. I thought that it might have moved to the Wiki discussion, but only a few comments there apart from my own! Maybe everyone's too dazed!\n\nWeb 2.0 is a funny old thing. It both matters and doesn't. It's the state of the art, for sure, so one should be aware of what's significant. On the other hand, as Wendy observed, many people have been happily using it without knowing there's anything different. A good sign of success. \n\nLike I suggested in discussion, many of the ideas are not new, but are being revisited within a new "contextual matrix"! Not going to rehash the significance or nature of that here - Tim O'Reilly and others have set out the store well enough. My view is simply that this latest cycle of technological evolution - this platform - is part of a process of making the web more responsive, more of a natural home for the things we are increasingly drawn to do through the Web. \n\nWiki, after all, is new-old, no less than HTML. Reading about hypertext, I came across [[StorySpace|http://www.eastgate.com/storyspace/]]. You can do the same sort of things that you can do in SS in a Wiki, or with plain-old-HTML. It's not quite the same as having a nice /dedicated tool/ with a responsive GUI to boot. It looks like a great creative space. Some interesting [[examples of using it for creative teaching|http://www.georgetown.edu/faculty/bassr/511/projects/ceruzzi/final/title.htm]], at Georgetown Uni. Shame about the $300 price tag (for a bit of antiquated software that could probably be rewritten fairly easily).\n\nOff to reread Espen Aarseth's article about Nonlinearity and Literary Theory - try and get to the bottom of the distinction between hypertext and cybertext!
Playgrounds\n* [[copyright - online interactive activity|http://restricted.jisc.ac.uk/freearea/copyright2/0000.html]]\n* [[Creative Commons|http://creativecommons.org/]]\n* [[Dihydrogen Monoxide Research Division|http://www.dhmo.org/]]\n* [[Getting to know a database|http://www.lib.ed.ac.uk/howto/Database.pdf]]\n* [[Holyrood Park WIKI|http://holyroodpark.pbwiki.com/Information+Literacies+for+Online+Learning+(ILOL)]] (Password: edinburgh) For Block 3 - Playground project on intellectual property\n* [[Library Timeline|http://www.acadia.org/competition-98/sites/integrus.com/html/library/time.html]]\n* [[The Machine is Us/ing Us|http://uk.youtube.com/watch?v=NLlGopyXT_g]]\n* [[Medieval Helpdesk|http://www.youtube.com/watch?v=pQHX-SjgQvQ]]\n* [[Microsoft (R) Firefox|http://www.msfirefox.com/]]\n* [[Mothers Against Videogame Addiction and Violence|http://www.mavav.org/]]\n* [[Pacific Northwest Tree Octopus|http://zapatopi.net/treeoctopus/]]\n* [[Scholarly Communication Toolkit|http://www.ala.org/ala/acrl/acrlissues/scholarlycomm/scholarlycommunicationtoolkit/toolkit.htm]]\n* [[Turnitin|http://www.elearn.malts.ed.ac.uk/services/plagiarism/]]\n* [[VARK : a guide to learning styles|http://www.vark-learn.com/english/page.asp?p=questionnaire]]\n* [[Wesch, M. (2007) A Vision of students today - What teachers must do. (Video recording).|http://uk.youtube.com/watch?v=dGCJ46vyR9o]]\n* [[WingMakers|http://www.wingmakers.com/]]\n\nReadings\n\n* [[Barrett, Andy (2005) The Information-Seeking Habits of Graduate Student Researchers in the Humanities The Journal of Academic Librarianship Vol 31 No 4 p324-331 (Block 1 Additional Reading)|http://www.sciencedirect.com.ezproxy.webfeat.lib.ed.ac.uk/science?_ob=MImg&_imagekey=B6W50-4GMS9B6-3-1&_cdi=6556&_user=809099&_orig=browse&_coverDate=07%2F31%2F2005&_sk=999689995&view=c&wchp=dGLbVzW-zSkWz&md5=e4a3b325342e2a19d3b023b320e76bf0&ie=/sdarticle.pdf]]\n* [[Bundy, Alan (2004) One essential direction; information literacy; information technology fluency. Journal of eLiteracy. Vol 1 No 1 p7-22 (Block 1)|http://www.jelit.org/archive/00000006/01/JeLit_Paper_1.pdf]]\n* [[Dewar, Tammy (2000) Online learners and their learning strategies Journal of Educational Computing Research Vol 23 No 4 p385-403 (Block 1 Additional reading)|http://www.calliopelearning.com/resources/papers/learn.pdf]]\n* [[Esposito, Joseph J. (2004) The devil you don’t know. First Monday. Vol 9 No 8. (Block 3)|http://www.firstmonday.org/ISSUES/issue9_8/esposito/]]\n* [[Hedstrom, Margaret (1998) Digital Preservation: A Time Bomb for Digital Libraries. Computers and the Humanities. Vol 31 No 3 p189-202 (Block 2)|http://www.springerlink.com.ezproxy.webfeat.lib.ed.ac.uk/content/h73v57h6587k4l7n/fulltext.pdf]]\n* [[Heinstrom, Jannica (2005) Fast surfing, broad scanning and deep diving: The influence of personality and study approach on students' information-seeking behavior. Journal of Documentation. Vol 61 No 2 p228-247. (Block 1)|http://www.emeraldinsight.com/Insight/viewPDF.jsp?Filename=html/Output/Published/EmeraldFullTextArticle/Pdf/2780610204.pdf]]\n* [[Hilton, James The future for higher education; sunrise or perfect storm. Educause Review. Vol 41 No 2 p58-71. (Block 2 - Additional Reading)|http://connect.educause.edu/library/abstract/TheFutureforHigherEd/40619]]\n* [[Hine, C. (2006) Databases as scientific instruments and their role in the ordering of scientific work. Social Studies of Science. Vol 36 No 2 p269-298 (Block 1)|http://sss.sagepub.com.ezproxy.webfeat.lib.ed.ac.uk/cgi/content/abstract/36/2/269]]\n* [[Johnson, L., Levine, A., & Smith, R. (2009). The 2009 Horizon Report. Austin, Texas: The New Media Consortium. (Block 4)|http://www.nmc.org/pdf/2009-Horizon-Report.pdf]]\n* [[Joint, Nicholas (2007) Digital information and the ‘‘privatisation of knowledge’’. Library Review. Vol 56 No 8 p659-665 (Block 3)|http://www.emeraldinsight.com.ezproxy.webfeat.lib.ed.ac.uk/Insight/viewPDF.jsp?contentType=Article&Filename=html/Output/Published/EmeraldFullTextArticle/Pdf/0350560802.pdf]]\n* [[Land, Frank (2007) The ethics of knowledge management. International Journal of Knowledge Management Vol 3 No 1 p1-9. (Block 3)|http://is2.lse.ac.uk/wp/pdf/WP152.PDF]]\n* [[Lippincott, Joan K. (2005) Net Generation Students and Libraries Educause Review. Vol 40 No 2 p56-66 (Block 1 - Additional Reading)|http://www.educause.edu/ir/library/pdf/erm0523.pdf]]\n* [[OCLC (2007) Sharing privacy and trust in our networked world. Dublin, Ohio: OCLC. (Block 4 - Additional reading)|http://www.oclc.org/reports/sharing/]]\n* [[Roush, (2005) The infinite library Technology Review Vol 5 No 5 (Block 2 Additional Reading)|http://www.technologyreview.com/articles/05/05/issue/feature_library.asp]]\n* [[Suthersanen, Uma (2007) Creative Commons - the other way? Learned Publishing. Vol 20 No 1 p59-68 (Block 3)|http://www.ingentaconnect.com/search/download?pub=infobike%3a%2f%2falpsp%2flp%2f2007%2f00000020%2f00000001%2fart00011&mimetype=application%2fpdf]]\n* [[Wang, Yu-Mei (2007) Riding to the future - an investigation of information literacy skills of students at an urban university as applied to the web environment. International Journal of E-Learning. Vol 6 No 4 p593-603 (Block 1 - Additional Reading)|http://www.editlib.org.ezproxy.webfeat.lib.ed.ac.uk/index.cfm?fuseaction=Reader.ViewFullText&paper_id=21802]]\n* [[Warschauer, Mark (2007) The paradoxical future of digital learning. Learning Inquiry. Vol 1 No 1 p41-49 (Block 1)|http://www.springerlink.com.ezproxy.webfeat.lib.ed.ac.uk/content/v248t7q8t4738487/fulltext.pdf]]\n* [[Willinsky, John (2002) Copyright contradictions in scholarly publishing. First Monday. Vol 7 No 11 (Block 3)|http://firstmonday.org/htbin/cgiwrap/bin/ojs/index.php/fm/article/view/1006/927]]
Block 1 Week 2 Starter Message\n\nPoints for discussion\n\n * Is scholarship being shaped by new information technologies? (Hine p. 272 quotes Monovich on ‘the projection of the ontology of a computer onto culture itself’\n * Consider the ‘trading zones’ (Hine p. 285) between creators and users of databases.\n * What are the challenges for us as learners, researchers and practioners in ‘the late age of print’ (Warschauer quotes Bolter p. 42)\n\nReadings\n\nHine, C. (2006) Databases as scientific instruments and their role in the ordering of scientific work. Social Studies of Science. Vol. 36 No. 2 p 269-298 \nWarschauer, Mark (2007) The paradoxical future of digital learning Learning Enquiry Vol. 1 No. 1 p41-49 \n\nPlayground activity\n\nQuite a few of last year’s students fell and got skinned knees in this playground - it’s normal to get stuck and a bit frustrated….share it on the discussion board! \n\n Exploring databases - the subject query approach\n\nThis is Playground Activity 2.2 and is related to the one below. It is approaching a literature search from a subject-based query - we hope this sort of approach may be helpful for you later in the course, and when you are doing your dissertation, but we are happy to be contradicted! Try this exercise with just one database.\n\nWe would like you to share your ideas on:\n\n * Is this a useful way to introduce literature searching to your students or clients?\n * Reflect on your own previous experience of doing subject query searches for study or work. Does this approach seem logical and allow you to feel in control of the literature searching or does it make you feel constrained? Do you have a method that works better for you?\n\nExploring databases - the "snowballing" approach\n\nBy "snowballing" we mean the techniques of starting with one key reference and using it to find additional relevant sources.\n\nWe would like you to explore some databases on Library Online using the Hine article from the readings as a starting point.
Feeling a bit sheepish about not contributing to the latter part of the discussions for week 2, but the discussions were already quite extensive by the time I got back from my trip - so grateful for Sian and Hamish's summaries.\n\nJust saved them for printing out (Hamish posted his summaries as PDF; Sian as plain DB posts - hurrah for Mac "Save As PDF"). Will read through them over the next few days and hope to summarise my own thoughts here (in the absence of an imminent "Essay" assignment).
//''(rather than what teaching can do with technology)''//\n\n"Of course I'm not saying that 'cyberspace' is entirely separate from the social, cultural, economic, material etc factors which surround every technology. Just that I think in the context of education, its differences are often downplayed in favour of its continuities with existing practice - and that this can be unhelpful when we are trying to think about what technology actually ''does to'' teaching (rather than what teaching can do with technology)."\n\nI'm just sticking this spiel from Sian here because I think I might want to chew this over more, at length. And because I'm a creep....
\n''Partial credit, hints and feedback'' seems at first a lot to get the old gulliver round, but comprises mainly tests which give the candidate a //hint// (possibly at cost of some points - hence //partial credit//). Not sure about the //feedback// yet - we'll come back to that.\n\nM Youngson's paper describes an interesting study of the use of partial credit in advanced (school) maths tests. Seems very clever: student may get (say) 4 points by answering the full question straight away, or a maximum of 3 by choosing to solve the problem in steps.\n
Q: When is an eportfolio not an eportfolio?\nA: When it's an assessment.\n\nI'm wondering at what point an eportfolio (or a blog, public or private, such as we used for IDEL) becomes an assessment? Is it always an assessment, once it has been declared "assessable"? Or is it the act of assessing it (cp. "marking") that is assessment? Or is it the teacher's assessment ("grade", "mark") of the merits of the work?\n\nIf an eportfolio or a blog is an assessment, is it computer-aided or online assessment because that is the medium in which they are created, viewed and shared with the teacher or assessor?
The origins and mythology of Wikis are widely recorded on the web, and many implementations of the model are now available. The most significant feature of any instance of a wiki - a "wiki web" - is that it enables a user to effectively create editable web-pages, and, moreover, create further web pages easily, without recourse to the web server's file system, file transfer programs, or any separate text or web page editor. In effect, a wiki provides simple tools for one or more users to create a complete hypertext, whether self-contained or linked to the wider Web.\n\nIn many ways, wikis fulfil the original vision of Tim ~Berners-Lee for the World Wide Web. Web pages were supposed not only to be easily retrievable, but easily editable as well. (The Hypertext Transfer Protocol defines both GET and PUT functions, but the latter is rarely enabled in standard web server configurations, leaving users to manage their files manually using File Transfer Protocol (FTP) or via a web editing application, such as Front Page or Dreamweaver.) As do blogs, a key feature of wikis is that they support the user in focusing on the content they are creating, automating key tasks (like tracking the date and time of update, creating index and menu items) and relieving all but the adminstrator of responsibility for the overall look and feel of the site.\n\nWikipedia is the most widely known, and probably the most ambitious, application of the wiki model, but wikis can be useful on a much smaller scale, to build, collaboratively, a hypertext or network of documents and web pages. In both real and virtual classrooms, wikis have a number of potentially exciting applications: for hypertext/web essays and writing projects, particularly those encouraging collaboration among students. There are some practical pitfalls to be avoided, for example: “the age-old issue of one student doing all the work on a collaborative project. Teachers should closely watch changes to the wiki (through the wiki history feature) to get a clear understanding of student contributions” ([[Jakes 2006|References]]).\n\n<html><div class='viewer' macro='navigation tiddlers:{{store.getTiddlerText("PresentationIndex").readBracketedList()}}}'></div></html>
<html><table style="border: 0; margin: 0; padding: 0; width: 100%;"><tr><td style="border: 0; margin: 0; padding: 0; width: 50%;"><a href="mailto:r.m.davis@sms.ed.ac.uk">Contact me</a></td><td style="border: 0; margin: 0; padding: 0; width: 50%; text-align: right;">\n <a href="http://jigsaw.w3.org/css-validator/">\n <img style="border:0;width:88px;height:31px"\n src="http://jigsaw.w3.org/css-validator/images/vcss" \n alt="Valid CSS!" />\n </a>\n</td></tr></table></html>