<!--{{{-->
<link rel='alternate' type='application/rss+xml' title='RSS' href='index.xml' />
<!--}}}-->
Background: #fff
Foreground: #000
PrimaryPale: #8cf
PrimaryLight: #18f
PrimaryMid: #04b
PrimaryDark: #014
SecondaryPale: #ffc
SecondaryLight: #fe8
SecondaryMid: #db4
SecondaryDark: #841
TertiaryPale: #eee
TertiaryLight: #ccc
TertiaryMid: #999
TertiaryDark: #666
Error: #f88
/*{{{*/
body {background:[[ColorPalette::Background]]; color:[[ColorPalette::Foreground]];}

a {color:[[ColorPalette::PrimaryMid]];}
a:hover {background-color:[[ColorPalette::PrimaryMid]]; color:[[ColorPalette::Background]];}
a img {border:0;}

h1,h2,h3,h4,h5,h6 {color:[[ColorPalette::SecondaryDark]]; background:transparent;}
h1 {border-bottom:2px solid [[ColorPalette::TertiaryLight]];}
h2,h3 {border-bottom:1px solid [[ColorPalette::TertiaryLight]];}

.button {color:[[ColorPalette::PrimaryDark]]; border:1px solid [[ColorPalette::Background]];}
.button:hover {color:[[ColorPalette::PrimaryDark]]; background:[[ColorPalette::SecondaryLight]]; border-color:[[ColorPalette::SecondaryMid]];}
.button:active {color:[[ColorPalette::Background]]; background:[[ColorPalette::SecondaryMid]]; border:1px solid [[ColorPalette::SecondaryDark]];}

.header {background:[[ColorPalette::PrimaryMid]];}
.headerShadow {color:[[ColorPalette::Foreground]];}
.headerShadow a {font-weight:normal; color:[[ColorPalette::Foreground]];}
.headerForeground {color:[[ColorPalette::Background]];}
.headerForeground a {font-weight:normal; color:[[ColorPalette::PrimaryPale]];}

.tabSelected {color:[[ColorPalette::PrimaryDark]];
	background:[[ColorPalette::TertiaryPale]];
	border-left:1px solid [[ColorPalette::TertiaryLight]];
	border-top:1px solid [[ColorPalette::TertiaryLight]];
	border-right:1px solid [[ColorPalette::TertiaryLight]];
}
.tabUnselected {color:[[ColorPalette::Background]]; background:[[ColorPalette::TertiaryMid]];}
.tabContents {color:[[ColorPalette::PrimaryDark]]; background:[[ColorPalette::TertiaryPale]]; border:1px solid [[ColorPalette::TertiaryLight]];}
.tabContents .button {border:0;}

#sidebar {}
#sidebarOptions input {border:1px solid [[ColorPalette::PrimaryMid]];}
#sidebarOptions .sliderPanel {background:[[ColorPalette::PrimaryPale]];}
#sidebarOptions .sliderPanel a {border:none;color:[[ColorPalette::PrimaryMid]];}
#sidebarOptions .sliderPanel a:hover {color:[[ColorPalette::Background]]; background:[[ColorPalette::PrimaryMid]];}
#sidebarOptions .sliderPanel a:active {color:[[ColorPalette::PrimaryMid]]; background:[[ColorPalette::Background]];}

.wizard {background:[[ColorPalette::PrimaryPale]]; border:1px solid [[ColorPalette::PrimaryMid]];}
.wizard h1 {color:[[ColorPalette::PrimaryDark]]; border:none;}
.wizard h2 {color:[[ColorPalette::Foreground]]; border:none;}
.wizardStep {background:[[ColorPalette::Background]]; color:[[ColorPalette::Foreground]];
	border:1px solid [[ColorPalette::PrimaryMid]];}
.wizardStep.wizardStepDone {background:[[ColorPalette::TertiaryLight]];}
.wizardFooter {background:[[ColorPalette::PrimaryPale]];}
.wizardFooter .status {background:[[ColorPalette::PrimaryDark]]; color:[[ColorPalette::Background]];}
.wizard .button {color:[[ColorPalette::Foreground]]; background:[[ColorPalette::SecondaryLight]]; border: 1px solid;
	border-color:[[ColorPalette::SecondaryPale]] [[ColorPalette::SecondaryDark]] [[ColorPalette::SecondaryDark]] [[ColorPalette::SecondaryPale]];}
.wizard .button:hover {color:[[ColorPalette::Foreground]]; background:[[ColorPalette::Background]];}
.wizard .button:active {color:[[ColorPalette::Background]]; background:[[ColorPalette::Foreground]]; border: 1px solid;
	border-color:[[ColorPalette::PrimaryDark]] [[ColorPalette::PrimaryPale]] [[ColorPalette::PrimaryPale]] [[ColorPalette::PrimaryDark]];}

.wizard .notChanged {background:transparent;}
.wizard .changedLocally {background:#80ff80;}
.wizard .changedServer {background:#8080ff;}
.wizard .changedBoth {background:#ff8080;}
.wizard .notFound {background:#ffff80;}
.wizard .putToServer {background:#ff80ff;}
.wizard .gotFromServer {background:#80ffff;}

#messageArea {border:1px solid [[ColorPalette::SecondaryMid]]; background:[[ColorPalette::SecondaryLight]]; color:[[ColorPalette::Foreground]];}
#messageArea .button {color:[[ColorPalette::PrimaryMid]]; background:[[ColorPalette::SecondaryPale]]; border:none;}

.popupTiddler {background:[[ColorPalette::TertiaryPale]]; border:2px solid [[ColorPalette::TertiaryMid]];}

.popup {background:[[ColorPalette::TertiaryPale]]; color:[[ColorPalette::TertiaryDark]]; border-left:1px solid [[ColorPalette::TertiaryMid]]; border-top:1px solid [[ColorPalette::TertiaryMid]]; border-right:2px solid [[ColorPalette::TertiaryDark]]; border-bottom:2px solid [[ColorPalette::TertiaryDark]];}
.popup hr {color:[[ColorPalette::PrimaryDark]]; background:[[ColorPalette::PrimaryDark]]; border-bottom:1px;}
.popup li.disabled {color:[[ColorPalette::TertiaryMid]];}
.popup li a, .popup li a:visited {color:[[ColorPalette::Foreground]]; border: none;}
.popup li a:hover {background:[[ColorPalette::SecondaryLight]]; color:[[ColorPalette::Foreground]]; border: none;}
.popup li a:active {background:[[ColorPalette::SecondaryPale]]; color:[[ColorPalette::Foreground]]; border: none;}
.popupHighlight {background:[[ColorPalette::Background]]; color:[[ColorPalette::Foreground]];}
.listBreak div {border-bottom:1px solid [[ColorPalette::TertiaryDark]];}

.tiddler .defaultCommand {font-weight:bold;}

.shadow .title {color:[[ColorPalette::TertiaryDark]];}

.title {color:[[ColorPalette::SecondaryDark]];}
.subtitle {color:[[ColorPalette::TertiaryDark]];}

.toolbar {color:[[ColorPalette::PrimaryMid]];}
.toolbar a {color:[[ColorPalette::TertiaryLight]];}
.selected .toolbar a {color:[[ColorPalette::TertiaryMid]];}
.selected .toolbar a:hover {color:[[ColorPalette::Foreground]];}

.tagging, .tagged {border:1px solid [[ColorPalette::TertiaryPale]]; background-color:[[ColorPalette::TertiaryPale]];}
.selected .tagging, .selected .tagged {background-color:[[ColorPalette::TertiaryLight]]; border:1px solid [[ColorPalette::TertiaryMid]];}
.tagging .listTitle, .tagged .listTitle {color:[[ColorPalette::PrimaryDark]];}
.tagging .button, .tagged .button {border:none;}

.footer {color:[[ColorPalette::TertiaryLight]];}
.selected .footer {color:[[ColorPalette::TertiaryMid]];}

.error, .errorButton {color:[[ColorPalette::Foreground]]; background:[[ColorPalette::Error]];}
.warning {color:[[ColorPalette::Foreground]]; background:[[ColorPalette::SecondaryPale]];}
.lowlight {background:[[ColorPalette::TertiaryLight]];}

.zoomer {background:none; color:[[ColorPalette::TertiaryMid]]; border:3px solid [[ColorPalette::TertiaryMid]];}

.imageLink, #displayArea .imageLink {background:transparent;}

.annotation {background:[[ColorPalette::SecondaryLight]]; color:[[ColorPalette::Foreground]]; border:2px solid [[ColorPalette::SecondaryMid]];}

.viewer .listTitle {list-style-type:none; margin-left:-2em;}
.viewer .button {border:1px solid [[ColorPalette::SecondaryMid]];}
.viewer blockquote {border-left:3px solid [[ColorPalette::TertiaryDark]];}

.viewer table, table.twtable {border:2px solid [[ColorPalette::TertiaryDark]];}
.viewer th, .viewer thead td, .twtable th, .twtable thead td {background:[[ColorPalette::SecondaryMid]]; border:1px solid [[ColorPalette::TertiaryDark]]; color:[[ColorPalette::Background]];}
.viewer td, .viewer tr, .twtable td, .twtable tr {border:1px solid [[ColorPalette::TertiaryDark]];}

.viewer pre {border:1px solid [[ColorPalette::SecondaryLight]]; background:[[ColorPalette::SecondaryPale]];}
.viewer code {color:[[ColorPalette::SecondaryDark]];}
.viewer hr {border:0; border-top:dashed 1px [[ColorPalette::TertiaryDark]]; color:[[ColorPalette::TertiaryDark]];}

.highlight, .marked {background:[[ColorPalette::SecondaryLight]];}

.editor input {border:1px solid [[ColorPalette::PrimaryMid]];}
.editor textarea {border:1px solid [[ColorPalette::PrimaryMid]]; width:100%;}
.editorFooter {color:[[ColorPalette::TertiaryMid]];}
.readOnly {background:[[ColorPalette::TertiaryPale]];}

#backstageArea {background:[[ColorPalette::Foreground]]; color:[[ColorPalette::TertiaryMid]];}
#backstageArea a {background:[[ColorPalette::Foreground]]; color:[[ColorPalette::Background]]; border:none;}
#backstageArea a:hover {background:[[ColorPalette::SecondaryLight]]; color:[[ColorPalette::Foreground]]; }
#backstageArea a.backstageSelTab {background:[[ColorPalette::Background]]; color:[[ColorPalette::Foreground]];}
#backstageButton a {background:none; color:[[ColorPalette::Background]]; border:none;}
#backstageButton a:hover {background:[[ColorPalette::Foreground]]; color:[[ColorPalette::Background]]; border:none;}
#backstagePanel {background:[[ColorPalette::Background]]; border-color: [[ColorPalette::Background]] [[ColorPalette::TertiaryDark]] [[ColorPalette::TertiaryDark]] [[ColorPalette::TertiaryDark]];}
.backstagePanelFooter .button {border:none; color:[[ColorPalette::Background]];}
.backstagePanelFooter .button:hover {color:[[ColorPalette::Foreground]];}
#backstageCloak {background:[[ColorPalette::Foreground]]; opacity:0.6; filter:alpha(opacity=60);}
/*}}}*/
/*{{{*/
* html .tiddler {height:1%;}

body {font-size:.75em; font-family:arial,helvetica; margin:0; padding:0;}

h1,h2,h3,h4,h5,h6 {font-weight:bold; text-decoration:none;}
h1,h2,h3 {padding-bottom:1px; margin-top:1.2em;margin-bottom:0.3em;}
h4,h5,h6 {margin-top:1em;}
h1 {font-size:1.35em;}
h2 {font-size:1.25em;}
h3 {font-size:1.1em;}
h4 {font-size:1em;}
h5 {font-size:.9em;}

hr {height:1px;}

a {text-decoration:none;}

dt {font-weight:bold;}

ol {list-style-type:decimal;}
ol ol {list-style-type:lower-alpha;}
ol ol ol {list-style-type:lower-roman;}
ol ol ol ol {list-style-type:decimal;}
ol ol ol ol ol {list-style-type:lower-alpha;}
ol ol ol ol ol ol {list-style-type:lower-roman;}
ol ol ol ol ol ol ol {list-style-type:decimal;}

.txtOptionInput {width:11em;}

#contentWrapper .chkOptionInput {border:0;}

.externalLink {text-decoration:underline;}

.indent {margin-left:3em;}
.outdent {margin-left:3em; text-indent:-3em;}
code.escaped {white-space:nowrap;}

.tiddlyLinkExisting {font-weight:bold;}
.tiddlyLinkNonExisting {font-style:italic;}

/* the 'a' is required for IE, otherwise it renders the whole tiddler in bold */
a.tiddlyLinkNonExisting.shadow {font-weight:bold;}

#mainMenu .tiddlyLinkExisting,
	#mainMenu .tiddlyLinkNonExisting,
	#sidebarTabs .tiddlyLinkNonExisting {font-weight:normal; font-style:normal;}
#sidebarTabs .tiddlyLinkExisting {font-weight:bold; font-style:normal;}

.header {position:relative;}
.header a:hover {background:transparent;}
.headerShadow {position:relative; padding:4.5em 0 1em 1em; left:-1px; top:-1px;}
.headerForeground {position:absolute; padding:4.5em 0 1em 1em; left:0; top:0;}

.siteTitle {font-size:3em;}
.siteSubtitle {font-size:1.2em;}

#mainMenu {position:absolute; left:0; width:10em; text-align:right; line-height:1.6em; padding:1.5em 0.5em 0.5em 0.5em; font-size:1.1em;}

#sidebar {position:absolute; right:3px; width:16em; font-size:.9em;}
#sidebarOptions {padding-top:0.3em;}
#sidebarOptions a {margin:0 0.2em; padding:0.2em 0.3em; display:block;}
#sidebarOptions input {margin:0.4em 0.5em;}
#sidebarOptions .sliderPanel {margin-left:1em; padding:0.5em; font-size:.85em;}
#sidebarOptions .sliderPanel a {font-weight:bold; display:inline; padding:0;}
#sidebarOptions .sliderPanel input {margin:0 0 0.3em 0;}
#sidebarTabs .tabContents {width:15em; overflow:hidden;}

.wizard {padding:0.1em 1em 0 2em;}
.wizard h1 {font-size:2em; font-weight:bold; background:none; padding:0; margin:0.4em 0 0.2em;}
.wizard h2 {font-size:1.2em; font-weight:bold; background:none; padding:0; margin:0.4em 0 0.2em;}
.wizardStep {padding:1em 1em 1em 1em;}
.wizard .button {margin:0.5em 0 0; font-size:1.2em;}
.wizardFooter {padding:0.8em 0.4em 0.8em 0;}
.wizardFooter .status {padding:0 0.4em; margin-left:1em;}
.wizard .button {padding:0.1em 0.2em;}

#messageArea {position:fixed; top:2em; right:0; margin:0.5em; padding:0.5em; z-index:2000; _position:absolute;}
.messageToolbar {display:block; text-align:right; padding:0.2em;}
#messageArea a {text-decoration:underline;}

.tiddlerPopupButton {padding:0.2em;}
.popupTiddler {position: absolute; z-index:300; padding:1em; margin:0;}

.popup {position:absolute; z-index:300; font-size:.9em; padding:0; list-style:none; margin:0;}
.popup .popupMessage {padding:0.4em;}
.popup hr {display:block; height:1px; width:auto; padding:0; margin:0.2em 0;}
.popup li.disabled {padding:0.4em;}
.popup li a {display:block; padding:0.4em; font-weight:normal; cursor:pointer;}
.listBreak {font-size:1px; line-height:1px;}
.listBreak div {margin:2px 0;}

.tabset {padding:1em 0 0 0.5em;}
.tab {margin:0 0 0 0.25em; padding:2px;}
.tabContents {padding:0.5em;}
.tabContents ul, .tabContents ol {margin:0; padding:0;}
.txtMainTab .tabContents li {list-style:none;}
.tabContents li.listLink { margin-left:.75em;}

#contentWrapper {display:block;}
#splashScreen {display:none;}

#displayArea {margin:1em 17em 0 14em;}

.toolbar {text-align:right; font-size:.9em;}

.tiddler {padding:1em 1em 0;}

.missing .viewer,.missing .title {font-style:italic;}

.title {font-size:1.6em; font-weight:bold;}

.missing .subtitle {display:none;}
.subtitle {font-size:1.1em;}

.tiddler .button {padding:0.2em 0.4em;}

.tagging {margin:0.5em 0.5em 0.5em 0; float:left; display:none;}
.isTag .tagging {display:block;}
.tagged {margin:0.5em; float:right;}
.tagging, .tagged {font-size:0.9em; padding:0.25em;}
.tagging ul, .tagged ul {list-style:none; margin:0.25em; padding:0;}
.tagClear {clear:both;}

.footer {font-size:.9em;}
.footer li {display:inline;}

.annotation {padding:0.5em; margin:0.5em;}

* html .viewer pre {width:99%; padding:0 0 1em 0;}
.viewer {line-height:1.4em; padding-top:0.5em;}
.viewer .button {margin:0 0.25em; padding:0 0.25em;}
.viewer blockquote {line-height:1.5em; padding-left:0.8em;margin-left:2.5em;}
.viewer ul, .viewer ol {margin-left:0.5em; padding-left:1.5em;}

.viewer table, table.twtable {border-collapse:collapse; margin:0.8em 1.0em;}
.viewer th, .viewer td, .viewer tr,.viewer caption,.twtable th, .twtable td, .twtable tr,.twtable caption {padding:3px;}
table.listView {font-size:0.85em; margin:0.8em 1.0em;}
table.listView th, table.listView td, table.listView tr {padding:0 3px 0 3px;}

.viewer pre {padding:0.5em; margin-left:0.5em; font-size:1.2em; line-height:1.4em; overflow:auto;}
.viewer code {font-size:1.2em; line-height:1.4em;}

.editor {font-size:1.1em;}
.editor input, .editor textarea {display:block; width:100%; font:inherit;}
.editorFooter {padding:0.25em 0; font-size:.9em;}
.editorFooter .button {padding-top:0; padding-bottom:0;}

.fieldsetFix {border:0; padding:0; margin:1px 0px;}

.zoomer {font-size:1.1em; position:absolute; overflow:hidden;}
.zoomer div {padding:1em;}

* html #backstage {width:99%;}
* html #backstageArea {width:99%;}
#backstageArea {display:none; position:relative; overflow: hidden; z-index:150; padding:0.3em 0.5em;}
#backstageToolbar {position:relative;}
#backstageArea a {font-weight:bold; margin-left:0.5em; padding:0.3em 0.5em;}
#backstageButton {display:none; position:absolute; z-index:175; top:0; right:0;}
#backstageButton a {padding:0.1em 0.4em; margin:0.1em;}
#backstage {position:relative; width:100%; z-index:50;}
#backstagePanel {display:none; z-index:100; position:absolute; width:90%; margin-left:3em; padding:1em;}
.backstagePanelFooter {padding-top:0.2em; float:right;}
.backstagePanelFooter a {padding:0.2em 0.4em;}
#backstageCloak {display:none; z-index:20; position:absolute; width:100%; height:100px;}

.whenBackstage {display:none;}
.backstageVisible .whenBackstage {display:block;}
/*}}}*/
/***
StyleSheet for use when a translation requires any css style changes.
This StyleSheet can be used directly by languages such as Chinese, Japanese and Korean which need larger font sizes.
***/
/*{{{*/
body {font-size:0.8em;}
#sidebarOptions {font-size:1.05em;}
#sidebarOptions a {font-style:normal;}
#sidebarOptions .sliderPanel {font-size:0.95em;}
.subtitle {font-size:0.8em;}
.viewer table.listView {font-size:0.95em;}
/*}}}*/
/*{{{*/
@media print {
#mainMenu, #sidebar, #messageArea, .toolbar, #backstageButton, #backstageArea {display: none !important;}
#displayArea {margin: 1em 1em 0em;}
noscript {display:none;} /* Fixes a feature in Firefox 1.5.0.2 where print preview displays the noscript content */
}
/*}}}*/
<!--{{{-->
<div class='header' macro='gradient vert [[ColorPalette::PrimaryLight]] [[ColorPalette::PrimaryMid]]'>
<div class='headerShadow'>
<span class='siteTitle' refresh='content' tiddler='SiteTitle'></span>&nbsp;
<span class='siteSubtitle' refresh='content' tiddler='SiteSubtitle'></span>
</div>
<div class='headerForeground'>
<span class='siteTitle' refresh='content' tiddler='SiteTitle'></span>&nbsp;
<span class='siteSubtitle' refresh='content' tiddler='SiteSubtitle'></span>
</div>
</div>
<div id='mainMenu' refresh='content' tiddler='MainMenu'></div>
<div id='sidebar'>
<div id='sidebarOptions' refresh='content' tiddler='SideBarOptions'></div>
<div id='sidebarTabs' refresh='content' force='true' tiddler='SideBarTabs'></div>
</div>
<div id='displayArea'>
<div id='messageArea'></div>
<div id='tiddlerDisplay'></div>
</div>
<!--}}}-->
<!--{{{-->
<div class='toolbar' macro='toolbar [[ToolbarCommands::ViewToolbar]]'></div>
<div class='title' macro='view title'></div>
<div class='subtitle'><span macro='view modifier link'></span>, <span macro='view modified date'></span> (<span macro='message views.wikified.createdPrompt'></span> <span macro='view created date'></span>)</div>
<div class='tagging' macro='tagging'></div>
<div class='tagged' macro='tags'></div>
<div class='viewer' macro='view text wikified'></div>
<div class='tagClear'></div>
<!--}}}-->
<!--{{{-->
<div class='toolbar' macro='toolbar [[ToolbarCommands::EditToolbar]]'></div>
<div class='title' macro='view title'></div>
<div class='editor' macro='edit title'></div>
<div macro='annotations'></div>
<div class='editor' macro='edit text'></div>
<div class='editor' macro='edit tags'></div><div class='editorFooter'><span macro='message views.editor.tagPrompt'></span><span macro='tagChooser excludeLists'></span></div>
<!--}}}-->
To get started with this blank [[TiddlyWiki]], you'll need to modify the following tiddlers:
* [[SiteTitle]] & [[SiteSubtitle]]: The title and subtitle of the site, as shown above (after saving, they will also appear in the browser title bar)
* [[MainMenu]]: The menu (usually on the left)
* [[DefaultTiddlers]]: Contains the names of the tiddlers that you want to appear when the TiddlyWiki is opened
You'll also need to enter your username for signing your edits: <<option txtUserName>>
These [[InterfaceOptions]] for customising [[TiddlyWiki]] are saved in your browser

Your username for signing your edits. Write it as a [[WikiWord]] (eg [[JoeBloggs]])

<<option txtUserName>>
<<option chkSaveBackups>> [[SaveBackups]]
<<option chkAutoSave>> [[AutoSave]]
<<option chkRegExpSearch>> [[RegExpSearch]]
<<option chkCaseSensitiveSearch>> [[CaseSensitiveSearch]]
<<option chkAnimate>> [[EnableAnimations]]

----
Also see [[AdvancedOptions]]
<<importTiddlers>>
* Phonons 
* The Cooper Problem
* BCS wavefunction
* Bogoliubov Excitation Spectrum
* Majorana Physics
Here are the most recent notes

[[ CLICK HERE  |  http://www-thphys.physics.ox.ac.uk/people/SteveSimon/QCM2020/QuantumMatterMostRecent.pdf ]] 

Most recent updates:   Finished chapter on Majoranas.   Added small paragraph on Caroli-de Gennes-Matricon states. 

Here are older versions 

[[ April 29 2020  |  http://www-thphys.physics.ox.ac.uk/people/SteveSimon/QCM2020/QuantumMatterApr292020.pdf ]] 

Removes some typos.   Adds sections addressing some of the questions that arose during class.   Removes a few minor mistakes (a few discussed in the class).  Started the chapter on Majoranas but not finished yet. 


[[ April 20 2020  |  http://www-thphys.physics.ox.ac.uk/people/SteveSimon/QCM2020/QuantumMatterApril202020.pdf ]] 


[[ April 1 2020  |  http://www-thphys.physics.ox.ac.uk/people/SteveSimon/QCM2019/QuantumMatterFullSummer.pdf ]] 

I will update the notes as we go (although I don't expect huge changes)
[[Oxford Quantum Matter 2020]]
Type the text for 'Easter Egg Lecture 2'
1. appearance and disappearance of earphones
2. compared to Lecture 1, the video is mirror imaged
Tie comes off in the middle, then goes back on.
!! The exam will be a several hour open-book take-home !!

This is meant to roughly replace the usual two hour written exam.  This should be fairly similar to the experience of sitting a normal exam except that you have access to your notes and whatever else you want (except other people) and you are not required to wear subfusc. 

Time is listed as 08 June 14:30  (See [[ here | https://www.ox.ac.uk/sites/files/oxford/field/field_document/DMTP1920T_1.pdf ]]). 

[[ Here | https://www.ox.ac.uk/students/academic/exams/open-book?wssl=1 ]] is the official info about taking open book exams. 
The exercises still might be updated before the start of term depending on what else 

The first few exercises are [[ Here | http://www-thphys.physics.ox.ac.uk/people/SteveSimon/QCM2020/Superfluids.pdf]].   After the first lecture you can get started on the first four.    The due date for these first four exercises  is Friday 2nd week.   NOTE: There was an extra factor of V in the denominator of the last equation of the last problem in an earlier version of this assignment.  It has now been fixed. 

The homeworks must be uploaded to the mmathphys website in the usual way.  

Second homework assignment is [[ Here | http://www-thphys.physics.ox.ac.uk/people/SteveSimon/QCM2020/Superfluids2.pdf]]. 

The second homework will be due Friday 3rd week. 

Final homework assignment is [[ Here | http://www-thphys.physics.ox.ac.uk/people/SteveSimon/QCM2019/Superfluids3.pdf]]

The final homework assignment will be due  Friday 4th week. 

The questions on BCS from this assignment is optional.    BCS is not on the exam. 
* Introduction
* Weakly Interacting Fermions
** Perturbation Theory
** Hartree Fock
** Effective Mass
* Response Functions and Screening
** Thomas Fermi
** RPA
** Plasmons
* Landau Fermi Liquid Theory
Classes will be in 3rd, 4th, 5th week.

You should have received email from the TA discussing scheduling. 
This information might be useful for others who want to make lecture recordings.

Oxford university uses a system called [[Panopto | https://www.panopto.com/ ]] for lecture capture.   Delightfully, it does not run on linux.   I'm not sure what its capabilities are.   But since I am fully linux, I needed another solution.  

For writing on an ipad, I use [[Good Notes | https://apps.apple.com/us/app/goodnotes-5/id1444383602 ]], but  any writing program would be fine. 

The ipad is mirrored to the linux box using one of several apps.  For the first two lectures I used [[AirbeamTV  | https://www.airbeam.tv/ ]].  This may not be the best program of its kind, but it works OK.  It dropped several times during the recording of the second lecture, so I tried [[ tvee.app | https://tvee.app/screen-mirroring ]]  mirroring next.  It suffered the exact same problems.  Apparently this is a known problem of IOS.   Next I tried skype screen sharing.    This seemed to work well.

The screen is then captured using [[Vokoscreen | http://www.kohaupt-online.de/hp/ ]]

The recording is processed (cut, spliced, and reformatted) using [[Openshot | https://www.openshot.org/ ]].  I messed around with a few video processing programs and this is the only one that seemed to work in any intuitive way.

Finally, I upload to youtube
Information coming!!!!  
[[ Lecture 1 Video |  https://www.youtube.com/watch?v=-_9Jf75exnc ]]
[[ Lecture 1 blackboard file |    http://www-thphys.physics.ox.ac.uk/people/SteveSimon/QCM2020/Lecture1.pdf ]] 
[[ More treats for Lecture 1 ]]
Lecture 1 covers course notes up to the end of section 2.1

[[  Lecture 2 Video  | https://www.youtube.com/watch?v=RpqQvOKHIPs ]]
[[ Lecture 2 blackboard file |     http://www-thphys.physics.ox.ac.uk/people/SteveSimon/QCM2020/Lecture2.pdf ]] 
[[ More treats for Lecture 2 ]]
Lecture 2 finishes at the end of course notes section 2.2

[[ Lecture 3 Video | https://www.youtube.com/watch?v=Kg9bkO5Z57M ]]
[[ Lecture 3 blackboard file | http://www-thphys.physics.ox.ac.uk/people/SteveSimon/QCM2020/Lecture3.pdf ]] 
[[ More treats for Lecture 3]]
Lecture 3 finishes at the end of chapter 2 of the notes. 

[[Lecture 4 Video | https://www.youtube.com/watch?v=wLHvv1ScnbM ]]
[[ Lecture 4 blackboard file |  http://www-thphys.physics.ox.ac.uk/people/SteveSimon/QCM2020/Lecture4.pdf ]] 
[[ More treats for Lecture 4]]
Lecture 4 covers notes chapter 3

[[Lecture 5 Video   | https://www.youtube.com/watch?v=kOC3SZzEMVE ]]
[[ Lecture 5 blackboard file |  http://www-thphys.physics.ox.ac.uk/people/SteveSimon/QCM2020/Lecture5.pdf ]] 
[[ More treats for Lecture 5]]
Lecture 5 covers notes sections 4.1-4.3

[[ Lecture 6 Video | https://www.youtube.com/watch?v=K_aWAjFvMw4 ]]
[[ Lecture 6 blackboard file  | http://www-thphys.physics.ox.ac.uk/people/SteveSimon/QCM2020/Lecture6.pdf ]] 
[[ More treats for Lecture 6]]
Lecture 6 covers notes section 4.4-4.5

[[ Lecture 7 Video | https://www.youtube.com/watch?v=D9gRWNSwyk4 ]]
[[ Lecture 7 blackboard file  | http://www-thphys.physics.ox.ac.uk/people/SteveSimon/QCM2020/Lecture7.pdf ]] 
[[ More treats for Lecture 7]]
Lecture 7 covers notes chapter 5

[[ Lecture 8 Video | https://www.youtube.com/watch?v=PJ7gnZ7L7VQ ]]
[[ Lecture 8 blackboard file  | http://www-thphys.physics.ox.ac.uk/people/SteveSimon/QCM2020/Lecture8.pdf ]] 
[[ More treats for Lecture 8]]
Lecture 8 covers notes sections 6 - 6.2.1

[[ Lecture 9 Video | https://www.youtube.com/watch?v=Fzbq8G66lO4 ]]
[[ Lecture 9 blackboard file  | http://www-thphys.physics.ox.ac.uk/people/SteveSimon/QCM2020/Lecture9.pdf ]] 
[[ More treats for Lecture 9]]
Lecture 9 covers notes sections 6.2.2 - 6.2.3

[[ Lecture 10 Video | https://www.youtube.com/watch?v=PqS0Y8WWW5k ]]
[[ Lecture 10 blackboard file  | http://www-thphys.physics.ox.ac.uk/people/SteveSimon/QCM2020/Lecture10.pdf ]] 
[[ Link to 2019 Exam | https://mmathphys.physics.ox.ac.uk/sites/default/files/QuantumMatterRevised.pdf ]]
Lecture 10 covers question 1 of 2019 Exam

[[ Lecture 11 Video | https://www.youtube.com/watch?v=jlPgwXSgnnw ]]
[[ Lecture 11 blackboard file  | http://www-thphys.physics.ox.ac.uk/people/SteveSimon/QCM2020/Lecture11.pdf ]] 
[[ More treats for Lecture 11]]
Lecture 11 covers notes sections 7-7.3.1

[[ Lecture 12 Video | https://www.youtube.com/watch?v=MxhWrhS2hP0 ]]
[[ Lecture 12 blackboard file  | http://www-thphys.physics.ox.ac.uk/people/SteveSimon/QCM2020/Lecture12.pdf ]] 
[[ More treats for Lecture 12]]
Lecture 11 covers notes sections 7.4-7.4.1


[[ Lecture 13 Video | https://www.youtube.com/watch?v=YCRPYjlk4KY  ]]
[[ Lecture 13 blackboard file  | http://www-thphys.physics.ox.ac.uk/people/SteveSimon/QCM2020/Lecture13.pdf ]] 
[[ More treats for Lecture 13]]
Lecture 11 covers notes sections 7.5-7.6

[[ Lecture 14 Video |  https://www.youtube.com/watch?v=_VRiq634g6U ]]
[[ Lecture 14 blackboard file  | http://www-thphys.physics.ox.ac.uk/people/SteveSimon/QCM2020/Lecture14.pdf ]] 
[[ Link to 2019 Exam | https://mmathphys.physics.ox.ac.uk/sites/default/files/QuantumMatterRevised.pdf ]]
Lecture 14 covers question 2 of 2019 Exam


[[ Lecture 15 Video | https://www.youtube.com/watch?v=uwIRRmoSLBY ]]
[[ Lecture 15 blackboard file  | http://www-thphys.physics.ox.ac.uk/people/SteveSimon/QCM2020/Lecture15.pdf ]] 
[[ More treats for Lecture 15]]
Lecture 15 covers notes sections 8.1-8.2

[[ Lecture 16 Video | https://www.youtube.com/watch?v=Q3q1PzGPDBg  ]]
[[ Lecture 16 blackboard file  | http://www-thphys.physics.ox.ac.uk/people/SteveSimon/QCM2020/Lecture16.pdf ]] 
[[ More treats for Lecture 16]]
Lecture 16 covers notes sections 8.3-8.5

[[ Lecture 17 Video | https://www.youtube.com/watch?v=f2PtEcTEAX8 ]]
[[ Lecture 17 blackboard file  | http://www-thphys.physics.ox.ac.uk/people/SteveSimon/QCM2020/Lecture17.pdf ]] 
[[ More treats for Lecture 17]]
Lecture 17 covers notes sections 9.1-9.4

[[ Lecture 18 Video | https://www.youtube.com/watch?v=hk7AUPuZ_jE ]]
[[ Lecture 18 blackboard file  | http://www-thphys.physics.ox.ac.uk/people/SteveSimon/QCM2020/Lecture18.pdf ]] 
[[ More treats for Lecture 18]]
Lecture 18 covers notes sections 9.5-9.6

Nonexaminable material follows: 

[[ Lecture 19 Video | https://www.youtube.com/watch?v=MhzXnKXF1dM ]]
[[ Lecture 19 blackboard file  | http://www-thphys.physics.ox.ac.uk/people/SteveSimon/QCM2020/Lecture19.pdf ]] 
[[ More treats for Lecture 19]]
Lecture 19 covers notes chapter 10

[[ Lecture 20 Video |  https://www.youtube.com/watch?v=et1cne2N2wI ]]
[[ Lecture 20 blackboard file  | http://www-thphys.physics.ox.ac.uk/people/SteveSimon/QCM2020/Lecture20.pdf ]] 
[[ More treats for Lecture 20]]
Lecture 20 covers notes section 11.1 - 11.3

[[ Lecture 21 Video  | https://www.youtube.com/watch?v=ux_tP6HApkU ]] 
[[ Lecture 21 blackboard file  | http://www-thphys.physics.ox.ac.uk/people/SteveSimon/QCM2020/Lecture21.pdf ]] 
[[ More treats for Lecture 21]]
Lecture 21 covers notes section 11.4 - 11.7

[[ Lecture 22 Video  | https://www.youtube.com/watch?v=XmqewzdnBBk ]] 
[[ Lecture 21 blackboard file  | http://www-thphys.physics.ox.ac.uk/people/SteveSimon/QCM2020/Lecture22.pdf ]] 
[[ More treats for Lecture 22 ]]
Lecture 22 is not in the notes 

The end. 
/***
|''Name:''|LoadRemoteFileThroughProxy (previous LoadRemoteFileHijack)|
|''Description:''|When the TiddlyWiki file is located on the web (view over http) the content of [[SiteProxy]] tiddler is added in front of the file url. If [[SiteProxy]] does not exist "/proxy/" is added. |
|''Version:''|1.1.0|
|''Date:''|mar 17, 2007|
|''Source:''|http://tiddlywiki.bidix.info/#LoadRemoteFileHijack|
|''Author:''|BidiX (BidiX (at) bidix (dot) info)|
|''License:''|[[BSD open source license|http://tiddlywiki.bidix.info/#%5B%5BBSD%20open%20source%20license%5D%5D ]]|
|''~CoreVersion:''|2.2.0|
***/
//{{{
version.extensions.LoadRemoteFileThroughProxy = {
 major: 1, minor: 1, revision: 0, 
 date: new Date("mar 17, 2007"), 
 source: "http://tiddlywiki.bidix.info/#LoadRemoteFileThroughProxy"};

if (!window.bidix) window.bidix = {}; // bidix namespace
if (!bidix.core) bidix.core = {};

bidix.core.loadRemoteFile = loadRemoteFile;
loadRemoteFile = function(url,callback,params)
{
 if ((document.location.toString().substr(0,4) == "http") && (url.substr(0,4) == "http")){ 
 url = store.getTiddlerText("SiteProxy", "/proxy/") + url;
 }
 return bidix.core.loadRemoteFile(url,callback,params);
}
//}}}
[[Home | Oxford Quantum Matter 2020]]
[[Syllabus]]
[[Lectures]]
[[Course Notes]]
[[Office Hour Notes]]
[[Exercises]]
[[Homework Classes]]
[[Exam Info]]
[[References]]

[[This Video | https://www.youtube.com/watch?v=WretrG5uYdI ]] shows Helium 4 being cooled through the superfluid transition.   Notice how the boiling suddenly stops. 

[[This article | https://physicstoday.scitation.org/doi/10.1063/1.3490499 ]] shows Kamerlingh Onnes' notebook where he noted the discovery of superconductivity and discusses his comment about "something interesting happening" at 2.2 Kelvin. 
Look in  [[ these | https://sites.google.com/site/sidparameswaran/teaching/c6-aqt-mt2019 ]] lecture notes for a review of 2nd quantization. 
[[This Video | https://www.youtube.com/watch?v=dvKtv3QABlg]] shows the fountain effect in superfluid Helium. 
[[This Video | https://www.youtube.com/watch?v=YVMuI_shltE ]] also shows the fountain effect, with a detailed explanation. 

[[Easter Eggs in Lecture 2]]
[[Visualization | https://www.youtube.com/watch?v=wgqUBqPWU_0 ]]  of superfluid helium vortices.  And a quick [[discussion | https://www.youtube.com/watch?v=wUZ52oWu7Xc ]] of what you are watching  (starts with discussion of superfluid creep). 

[[ Here  | https://www.youtube.com/watch?v=a227cynswSk ]] is a song called "Vortex" by a band called "Superfluid".  They also have a song called [[Second State | https://www.youtube.com/watch?v=AeRlCXmXI5Y ]].   I'm not sure if they are physicists...
[[ Video | https://www.youtube.com/watch?v=l0jEbWfFAXU ]] of Levitation with Superconductors

[[ Easter Eggs in Lecture 4]]
Look in  [[ these | https://sites.google.com/site/sidparameswaran/teaching/c6-aqt-mt2019 ]] lecture notes for a review of 2nd quantization. 
Crying baby half way through (not so much of a treat)

The bogoliubov spectrum is calculated a bit more carefully in [[these | https://sites.google.com/site/sidparameswaran/teaching/c6-aqt-mt2019 ]] lecture notes. 
[[This | https://authors.library.caltech.edu/3539/1/FEYpr54a.pdf ]] is Feynman's original paper deriving the excitation spectrum (and he has a number of other interesting discussions in these papers as well). 

[[ This | http://www.w2agz.com/Library/Classic%20Papers%20in%20Superconductivity/Feynman,%20(1957)%20APPLICATION%20OF%20QUANTUM%20MECHANICS%20TO%20LIQUID%20HELIUM.pdf ]] Is a very beautiful paper by Feynman discussing many aspects of superfluidity (although not the detailed calculation of the excitation spectrum). 
[[ Vitali Ginzburg's Nobel Autobiography | https://www.nobelprize.org/prizes/physics/2003/ginzburg/biographical/ ]] . He mentions several times when he narrowly skirted death. 

[[ Higgs' paper | https://journals.aps.org/prl/pdf/10.1103/PhysRevLett.13.508 ]] citing Anderson in the first paragraph.
No treats.  Sorry
These are handwritten notes addressing the questions asked during office hours. 

[[ Monday Week 1 | http://www-thphys.physics.ox.ac.uk/people/SteveSimon/QCM2020/ClassNotesMonWeek1.pdf ]]
[[ Monday Week 2 | http://www-thphys.physics.ox.ac.uk/people/SteveSimon/QCM2020/ClassMonWeek2.pdf ]]
[[ Monday Week 3 | http://www-thphys.physics.ox.ac.uk/people/SteveSimon/QCM2020/ClassWeek3.pdf ]]
[[ Monday Week 4 | http://www-thphys.physics.ox.ac.uk/people/SteveSimon/QCM2020/ClassWeek4.pdf ]]
This is the official web site for Quantum Matter course being taught by [[Steve Simon  |   http://oxfordquantummatter2020.tiddlyspot.com/ ]] in Trinity term 2020 as part of the [[ MMathPhys | http://mmathphys.physics.ox.ac.uk/ ]] program.   

!! [[ Lectures ]] are posted [[ here | Lectures ]]!!!
For Oxford students, I believe the lectures will also be uploaded to Panopto.   I'll post the link when I have it.     If you want to know why I am prerecording lectures see [[ here |  Why Recorded Lectures ]] .  

'' If you want to take this course for credit make sure that we have your name on our list''.   Contact me if you are unsure if your name is on the list. (If you received an email from me saying that your name is on our list, then you do not need to contact me). 

There will be question-answer sessions ("office hours") 9 am mondays (as well as the usual homework classes held by the TA).   Email me questions in advance if you want intelligent answers.   Handwritten notes from these office hours are posted [[ here  | Office Hour Notes ]]. 

!! Additional Information 

Assessment:   You can take this course in either (a) Homework only mode or (b) Exam only mode. See  [[Exam Info]].     You are welcome (and encouraged) to hand in homeworks if you choose (b), however, they will not count for anything.     


Course Prerequisites:   Officially one should have a background in field theory (such as [[Advanced Quantum Theory | https://sites.google.com/site/sidparameswaran/teaching/c6-aqt-mt2019 ]]  from MT2018).    However, I am well aware that many people either did not attend this course (or perhaps did attend the course but didn't pay attention).  At any rate, while I will use some of the material taught in that course, I hope to make much of this course self contained so that a wider audience may be able to benefit. 

If you are in the [[ MMathPhys | http://mmathphys.physics.ox.ac.uk/ ]], your TA is [[Matthew Steggles | https://www2.physics.ox.ac.uk/contacts/people/steggles]] 

This page is a [[ TiddlyWiki | http://tiddlywiki.com/  ]].  It can be edited by anyone, but you can only save the edits if you have the password. 
/***
|''Name:''|PasswordOptionPlugin|
|''Description:''|Extends TiddlyWiki options with non encrypted password option.|
|''Version:''|1.0.2|
|''Date:''|Apr 19, 2007|
|''Source:''|http://tiddlywiki.bidix.info/#PasswordOptionPlugin|
|''Author:''|BidiX (BidiX (at) bidix (dot) info)|
|''License:''|[[BSD open source license|http://tiddlywiki.bidix.info/#%5B%5BBSD%20open%20source%20license%5D%5D ]]|
|''~CoreVersion:''|2.2.0 (Beta 5)|
***/
//{{{
version.extensions.PasswordOptionPlugin = {
	major: 1, minor: 0, revision: 2, 
	date: new Date("Apr 19, 2007"),
	source: 'http://tiddlywiki.bidix.info/#PasswordOptionPlugin',
	author: 'BidiX (BidiX (at) bidix (dot) info',
	license: '[[BSD open source license|http://tiddlywiki.bidix.info/#%5B%5BBSD%20open%20source%20license%5D%5D]]',
	coreVersion: '2.2.0 (Beta 5)'
};

config.macros.option.passwordCheckboxLabel = "Save this password on this computer";
config.macros.option.passwordInputType = "password"; // password | text
setStylesheet(".pasOptionInput {width: 11em;}\n","passwordInputTypeStyle");

merge(config.macros.option.types, {
	'pas': {
		elementType: "input",
		valueField: "value",
		eventName: "onkeyup",
		className: "pasOptionInput",
		typeValue: config.macros.option.passwordInputType,
		create: function(place,type,opt,className,desc) {
			// password field
			config.macros.option.genericCreate(place,'pas',opt,className,desc);
			// checkbox linked with this password "save this password on this computer"
			config.macros.option.genericCreate(place,'chk','chk'+opt,className,desc);			
			// text savePasswordCheckboxLabel
			place.appendChild(document.createTextNode(config.macros.option.passwordCheckboxLabel));
		},
		onChange: config.macros.option.genericOnChange
	}
});

merge(config.optionHandlers['chk'], {
	get: function(name) {
		// is there an option linked with this chk ?
		var opt = name.substr(3);
		if (config.options[opt]) 
			saveOptionCookie(opt);
		return config.options[name] ? "true" : "false";
	}
});

merge(config.optionHandlers, {
	'pas': {
 		get: function(name) {
			if (config.options["chk"+name]) {
				return encodeCookie(config.options[name].toString());
			} else {
				return "";
			}
		},
		set: function(name,value) {config.options[name] = decodeCookie(value);}
	}
});

// need to reload options to load passwordOptions
loadOptionsCookie();

/*
if (!config.options['pasPassword'])
	config.options['pasPassword'] = '';

merge(config.optionsDesc,{
		pasPassword: "Test password"
	});
*/
//}}}
* For Superfluidity and Superconductivity
**  [[ James Annette, "Superconductivity, Superfluids, And Condensates"  | http://www.amazon.com/Superconductivity-Superfluids-Condensates-Condensed-Physics/dp/0198507569 ]]
* For Fermi Liquids
** [[ Pines and Nozieres, "Theory of Quantum Liquids v1" | http://www.amazon.com/Theory-Of-Quantum-Liquids-Advanced/dp/0201407744]].  Note, this considered THE classic text, but is not easy to read in my opinion.   
** [[Notes by Peter Hirshfeld, Univesity of Florida, Click on Lecture Notes, Chapter 2 |  http://www.phys.ufl.edu/~pjh/teaching/phz7427/ ]]

Taught Trinity Term 2020 in the Age of COVID19
Part of the [[ MMathPhys | http://mmathphys.physics.ox.ac.uk/ ]]  courses.   Also open for DPhil students from any department. 
Oxford Quantum Matter 2020
body {
font: 1em/1.4em "Bitstream Vera Sans", Verdana, Helvetica, Arial, sans-serif;
/*"Lucida Sans Unicode", "Lucida Grande","Trebuchet MS", */
}


mainMenu{
position:left;
width: auto;
background: #eee;
border-right: 3px solid #003;
padding: 1.5em 0 1.5em 2m;
text-align: left;
font-size: 1.2em;
margin-left: 1em;
}

.subtitle {display: all; padding: 0em 0em 0em 3em; }
.subtitle {display: none; padding: 0em 0em 0em 3em; }
.subtitle {display: name; padding: 0em 0em 0em 3em; }
.subtitle {display: modification-date; padding: 0em 0em 0em 3em; }
.subtitle {display: creation-date; padding: 0em 0em 0em 3em; }
[[Theory of Superfluidity]]
[[Fermi Liquids]]
[[BCS Theory of Superconductors]]   (nonexaminable)
* Introduction to Superfluids and Superconductors
** Two Fluid Model and Quantized Circulation
** Landau Criterion for Superfluidity
** Two Fluid Model for Superconductors
*** London Theory
*** Flux Vortices
*** Type I and Type II superconductors
* Microscopic Superfluidity 
** Coherent States 
** Bose Condensation
** Gross Pitaevskii Equation
** Off Diagonal Long Range Order
** Feynman Theory of Superfluidity  (might skip this)
*Ginzburg Landau Theory of Superfluids   
** Neutral Superfluids
** Charged Superfluids
** Anderson - Higgs Mechanism
** Rederviation of London Equations
** Ginzburg - Landau Parameter and Type I/II revisited
** Vortex Structure
/***
Description: Contains the stuff you need to use Tiddlyspot
Note, you also need UploadPlugin, PasswordOptionPlugin and LoadRemoteFileThroughProxy
from http://tiddlywiki.bidix.info for a complete working Tiddlyspot site.
***/
//{{{

// edit this if you are migrating sites or retrofitting an existing TW
config.tiddlyspotSiteId = 'oxfordquantummatter2020';

// make it so you can by default see edit controls via http
config.options.chkHttpReadOnly = false;
window.readOnly = false; // make sure of it (for tw 2.2)
window.showBackstage = true; // show backstage too

// disable autosave in d3
if (window.location.protocol != "file:")
	config.options.chkGTDLazyAutoSave = false;

// tweak shadow tiddlers to add upload button, password entry box etc
with (config.shadowTiddlers) {
	SiteUrl = 'http://'+config.tiddlyspotSiteId+'.tiddlyspot.com';
	SideBarOptions = SideBarOptions.replace(/(<<saveChanges>>)/,"$1<<tiddler TspotSidebar>>");
	OptionsPanel = OptionsPanel.replace(/^/,"<<tiddler TspotOptions>>");
	DefaultTiddlers = DefaultTiddlers.replace(/^/,"[[WelcomeToTiddlyspot]] ");
	MainMenu = MainMenu.replace(/^/,"[[WelcomeToTiddlyspot]] ");
}

// create some shadow tiddler content
merge(config.shadowTiddlers,{

'TspotControls':[
 "| tiddlyspot password:|<<option pasUploadPassword>>|",
 "| site management:|<<upload http://" + config.tiddlyspotSiteId + ".tiddlyspot.com/store.cgi index.html . .  " + config.tiddlyspotSiteId + ">>//(requires tiddlyspot password)//<br>[[control panel|http://" + config.tiddlyspotSiteId + ".tiddlyspot.com/controlpanel]], [[download (go offline)|http://" + config.tiddlyspotSiteId + ".tiddlyspot.com/download]]|",
 "| links:|[[tiddlyspot.com|http://tiddlyspot.com/]], [[FAQs|http://faq.tiddlyspot.com/]], [[blog|http://tiddlyspot.blogspot.com/]], email [[support|mailto:support@tiddlyspot.com]] & [[feedback|mailto:feedback@tiddlyspot.com]], [[donate|http://tiddlyspot.com/?page=donate]]|"
].join("\n"),

'TspotOptions':[
 "tiddlyspot password:",
 "<<option pasUploadPassword>>",
 ""
].join("\n"),

'TspotSidebar':[
 "<<upload http://" + config.tiddlyspotSiteId + ".tiddlyspot.com/store.cgi index.html . .  " + config.tiddlyspotSiteId + ">><html><a href='http://" + config.tiddlyspotSiteId + ".tiddlyspot.com/download' class='button'>download</a></html>"
].join("\n"),

'WelcomeToTiddlyspot':[
 "This document is a ~TiddlyWiki from tiddlyspot.com.  A ~TiddlyWiki is an electronic notebook that is great for managing todo lists, personal information, and all sorts of things.",
 "",
 "@@font-weight:bold;font-size:1.3em;color:#444; //What now?// &nbsp;&nbsp;@@ Before you can save any changes, you need to enter your password in the form below.  Then configure privacy and other site settings at your [[control panel|http://" + config.tiddlyspotSiteId + ".tiddlyspot.com/controlpanel]] (your control panel username is //" + config.tiddlyspotSiteId + "//).",
 "<<tiddler TspotControls>>",
 "See also GettingStarted.",
 "",
 "@@font-weight:bold;font-size:1.3em;color:#444; //Working online// &nbsp;&nbsp;@@ You can edit this ~TiddlyWiki right now, and save your changes using the \"save to web\" button in the column on the right.",
 "",
 "@@font-weight:bold;font-size:1.3em;color:#444; //Working offline// &nbsp;&nbsp;@@ A fully functioning copy of this ~TiddlyWiki can be saved onto your hard drive or USB stick.  You can make changes and save them locally without being connected to the Internet.  When you're ready to sync up again, just click \"upload\" and your ~TiddlyWiki will be saved back to tiddlyspot.com.",
 "",
 "@@font-weight:bold;font-size:1.3em;color:#444; //Help!// &nbsp;&nbsp;@@ Find out more about ~TiddlyWiki at [[TiddlyWiki.com|http://tiddlywiki.com]].  Also visit [[TiddlyWiki.org|http://tiddlywiki.org]] for documentation on learning and using ~TiddlyWiki. New users are especially welcome on the [[TiddlyWiki mailing list|http://groups.google.com/group/TiddlyWiki]], which is an excellent place to ask questions and get help.  If you have a tiddlyspot related problem email [[tiddlyspot support|mailto:support@tiddlyspot.com]].",
 "",
 "@@font-weight:bold;font-size:1.3em;color:#444; //Enjoy :)// &nbsp;&nbsp;@@ We hope you like using your tiddlyspot.com site.  Please email [[feedback@tiddlyspot.com|mailto:feedback@tiddlyspot.com]] with any comments or suggestions."
].join("\n")

});
//}}}
| !date | !user | !location | !storeUrl | !uploadDir | !toFilename | !backupdir | !origin |
| 29/04/2020 09:22:29 | YourName | [[/|http://oxfordquantummatter2020.tiddlyspot.com/]] | [[store.cgi|http://oxfordquantummatter2020.tiddlyspot.com/store.cgi]] | . | [[index.html | http://oxfordquantummatter2020.tiddlyspot.com/index.html]] | . | ok |
| 29/04/2020 11:17:50 | YourName | [[/|http://oxfordquantummatter2020.tiddlyspot.com/]] | [[store.cgi|http://oxfordquantummatter2020.tiddlyspot.com/store.cgi]] | . | [[index.html | http://oxfordquantummatter2020.tiddlyspot.com/index.html]] | . |
| 02/05/2020 12:19:38 | YourName | [[/|http://oxfordquantummatter2020.tiddlyspot.com/]] | [[store.cgi|http://oxfordquantummatter2020.tiddlyspot.com/store.cgi]] | . | [[index.html | http://oxfordquantummatter2020.tiddlyspot.com/index.html]] | . |
| 03/05/2020 15:08:02 | YourName | [[/|http://oxfordquantummatter2020.tiddlyspot.com/]] | [[store.cgi|http://oxfordquantummatter2020.tiddlyspot.com/store.cgi]] | . | [[index.html | http://oxfordquantummatter2020.tiddlyspot.com/index.html]] | . | ok |
| 03/05/2020 15:08:31 | YourName | [[/|http://oxfordquantummatter2020.tiddlyspot.com/]] | [[store.cgi|http://oxfordquantummatter2020.tiddlyspot.com/store.cgi]] | . | [[index.html | http://oxfordquantummatter2020.tiddlyspot.com/index.html]] | . |
| 04/05/2020 21:28:39 | YourName | [[/|http://oxfordquantummatter2020.tiddlyspot.com/]] | [[store.cgi|http://oxfordquantummatter2020.tiddlyspot.com/store.cgi]] | . | [[index.html | http://oxfordquantummatter2020.tiddlyspot.com/index.html]] | . | ok |
| 04/05/2020 21:39:58 | YourName | [[/|http://oxfordquantummatter2020.tiddlyspot.com/]] | [[store.cgi|http://oxfordquantummatter2020.tiddlyspot.com/store.cgi]] | . | [[index.html | http://oxfordquantummatter2020.tiddlyspot.com/index.html]] | . | ok |
| 04/05/2020 21:40:46 | YourName | [[/|http://oxfordquantummatter2020.tiddlyspot.com/]] | [[store.cgi|http://oxfordquantummatter2020.tiddlyspot.com/store.cgi]] | . | [[index.html | http://oxfordquantummatter2020.tiddlyspot.com/index.html]] | . |
| 12/05/2020 11:02:36 | YourName | [[/|http://oxfordquantummatter2020.tiddlyspot.com/]] | [[store.cgi|http://oxfordquantummatter2020.tiddlyspot.com/store.cgi]] | . | [[index.html | http://oxfordquantummatter2020.tiddlyspot.com/index.html]] | . |
| 22/05/2020 08:53:20 | YourName | [[/|http://oxfordquantummatter2020.tiddlyspot.com/]] | [[store.cgi|http://oxfordquantummatter2020.tiddlyspot.com/store.cgi]] | . | [[index.html | http://oxfordquantummatter2020.tiddlyspot.com/index.html]] | . |
/***
|''Name:''|UploadPlugin|
|''Description:''|Save to web a TiddlyWiki|
|''Version:''|4.1.3|
|''Date:''|Feb 24, 2008|
|''Source:''|http://tiddlywiki.bidix.info/#UploadPlugin|
|''Documentation:''|http://tiddlywiki.bidix.info/#UploadPluginDoc|
|''Author:''|BidiX (BidiX (at) bidix (dot) info)|
|''License:''|[[BSD open source license|http://tiddlywiki.bidix.info/#%5B%5BBSD%20open%20source%20license%5D%5D ]]|
|''~CoreVersion:''|2.2.0|
|''Requires:''|PasswordOptionPlugin|
***/
//{{{
version.extensions.UploadPlugin = {
	major: 4, minor: 1, revision: 3,
	date: new Date("Feb 24, 2008"),
	source: 'http://tiddlywiki.bidix.info/#UploadPlugin',
	author: 'BidiX (BidiX (at) bidix (dot) info',
	coreVersion: '2.2.0'
};

//
// Environment
//

if (!window.bidix) window.bidix = {}; // bidix namespace
bidix.debugMode = false;	// true to activate both in Plugin and UploadService
	
//
// Upload Macro
//

config.macros.upload = {
// default values
	defaultBackupDir: '',	//no backup
	defaultStoreScript: "store.php",
	defaultToFilename: "index.html",
	defaultUploadDir: ".",
	authenticateUser: true	// UploadService Authenticate User
};
	
config.macros.upload.label = {
	promptOption: "Save and Upload this TiddlyWiki with UploadOptions",
	promptParamMacro: "Save and Upload this TiddlyWiki in %0",
	saveLabel: "save to web", 
	saveToDisk: "save to disk",
	uploadLabel: "upload"	
};

config.macros.upload.messages = {
	noStoreUrl: "No store URL in parmeters or options",
	usernameOrPasswordMissing: "Username or password missing"
};

config.macros.upload.handler = function(place,macroName,params) {
	if (readOnly)
		return;
	var label;
	if (document.location.toString().substr(0,4) == "http") 
		label = this.label.saveLabel;
	else
		label = this.label.uploadLabel;
	var prompt;
	if (params[0]) {
		prompt = this.label.promptParamMacro.toString().format([this.destFile(params[0], 
			(params[1] ? params[1]:bidix.basename(window.location.toString())), params[3])]);
	} else {
		prompt = this.label.promptOption;
	}
	createTiddlyButton(place, label, prompt, function() {config.macros.upload.action(params);}, null, null, this.accessKey);
};

config.macros.upload.action = function(params)
{
		// for missing macro parameter set value from options
		if (!params) params = {};
		var storeUrl = params[0] ? params[0] : config.options.txtUploadStoreUrl;
		var toFilename = params[1] ? params[1] : config.options.txtUploadFilename;
		var backupDir = params[2] ? params[2] : config.options.txtUploadBackupDir;
		var uploadDir = params[3] ? params[3] : config.options.txtUploadDir;
		var username = params[4] ? params[4] : config.options.txtUploadUserName;
		var password = config.options.pasUploadPassword; // for security reason no password as macro parameter	
		// for still missing parameter set default value
		if ((!storeUrl) && (document.location.toString().substr(0,4) == "http")) 
			storeUrl = bidix.dirname(document.location.toString())+'/'+config.macros.upload.defaultStoreScript;
		if (storeUrl.substr(0,4) != "http")
			storeUrl = bidix.dirname(document.location.toString()) +'/'+ storeUrl;
		if (!toFilename)
			toFilename = bidix.basename(window.location.toString());
		if (!toFilename)
			toFilename = config.macros.upload.defaultToFilename;
		if (!uploadDir)
			uploadDir = config.macros.upload.defaultUploadDir;
		if (!backupDir)
			backupDir = config.macros.upload.defaultBackupDir;
		// report error if still missing
		if (!storeUrl) {
			alert(config.macros.upload.messages.noStoreUrl);
			clearMessage();
			return false;
		}
		if (config.macros.upload.authenticateUser && (!username || !password)) {
			alert(config.macros.upload.messages.usernameOrPasswordMissing);
			clearMessage();
			return false;
		}
		bidix.upload.uploadChanges(false,null,storeUrl, toFilename, uploadDir, backupDir, username, password); 
		return false; 
};

config.macros.upload.destFile = function(storeUrl, toFilename, uploadDir) 
{
	if (!storeUrl)
		return null;
		var dest = bidix.dirname(storeUrl);
		if (uploadDir && uploadDir != '.')
			dest = dest + '/' + uploadDir;
		dest = dest + '/' + toFilename;
	return dest;
};

//
// uploadOptions Macro
//

config.macros.uploadOptions = {
	handler: function(place,macroName,params) {
		var wizard = new Wizard();
		wizard.createWizard(place,this.wizardTitle);
		wizard.addStep(this.step1Title,this.step1Html);
		var markList = wizard.getElement("markList");
		var listWrapper = document.createElement("div");
		markList.parentNode.insertBefore(listWrapper,markList);
		wizard.setValue("listWrapper",listWrapper);
		this.refreshOptions(listWrapper,false);
		var uploadCaption;
		if (document.location.toString().substr(0,4) == "http") 
			uploadCaption = config.macros.upload.label.saveLabel;
		else
			uploadCaption = config.macros.upload.label.uploadLabel;
		
		wizard.setButtons([
				{caption: uploadCaption, tooltip: config.macros.upload.label.promptOption, 
					onClick: config.macros.upload.action},
				{caption: this.cancelButton, tooltip: this.cancelButtonPrompt, onClick: this.onCancel}
				
			]);
	},
	options: [
		"txtUploadUserName",
		"pasUploadPassword",
		"txtUploadStoreUrl",
		"txtUploadDir",
		"txtUploadFilename",
		"txtUploadBackupDir",
		"chkUploadLog",
		"txtUploadLogMaxLine"		
	],
	refreshOptions: function(listWrapper) {
		var opts = [];
		for(i=0; i<this.options.length; i++) {
			var opt = {};
			opts.push();
			opt.option = "";
			n = this.options[i];
			opt.name = n;
			opt.lowlight = !config.optionsDesc[n];
			opt.description = opt.lowlight ? this.unknownDescription : config.optionsDesc[n];
			opts.push(opt);
		}
		var listview = ListView.create(listWrapper,opts,this.listViewTemplate);
		for(n=0; n<opts.length; n++) {
			var type = opts[n].name.substr(0,3);
			var h = config.macros.option.types[type];
			if (h && h.create) {
				h.create(opts[n].colElements['option'],type,opts[n].name,opts[n].name,"no");
			}
		}
		
	},
	onCancel: function(e)
	{
		backstage.switchTab(null);
		return false;
	},
	
	wizardTitle: "Upload with options",
	step1Title: "These options are saved in cookies in your browser",
	step1Html: "<input type='hidden' name='markList'></input><br>",
	cancelButton: "Cancel",
	cancelButtonPrompt: "Cancel prompt",
	listViewTemplate: {
		columns: [
			{name: 'Description', field: 'description', title: "Description", type: 'WikiText'},
			{name: 'Option', field: 'option', title: "Option", type: 'String'},
			{name: 'Name', field: 'name', title: "Name", type: 'String'}
			],
		rowClasses: [
			{className: 'lowlight', field: 'lowlight'} 
			]}
};

//
// upload functions
//

if (!bidix.upload) bidix.upload = {};

if (!bidix.upload.messages) bidix.upload.messages = {
	//from saving
	invalidFileError: "The original file '%0' does not appear to be a valid TiddlyWiki",
	backupSaved: "Backup saved",
	backupFailed: "Failed to upload backup file",
	rssSaved: "RSS feed uploaded",
	rssFailed: "Failed to upload RSS feed file",
	emptySaved: "Empty template uploaded",
	emptyFailed: "Failed to upload empty template file",
	mainSaved: "Main TiddlyWiki file uploaded",
	mainFailed: "Failed to upload main TiddlyWiki file. Your changes have not been saved",
	//specific upload
	loadOriginalHttpPostError: "Can't get original file",
	aboutToSaveOnHttpPost: 'About to upload on %0 ...',
	storePhpNotFound: "The store script '%0' was not found."
};

bidix.upload.uploadChanges = function(onlyIfDirty,tiddlers,storeUrl,toFilename,uploadDir,backupDir,username,password)
{
	var callback = function(status,uploadParams,original,url,xhr) {
		if (!status) {
			displayMessage(bidix.upload.messages.loadOriginalHttpPostError);
			return;
		}
		if (bidix.debugMode) 
			alert(original.substr(0,500)+"\n...");
		// Locate the storeArea div's 
		var posDiv = locateStoreArea(original);
		if((posDiv[0] == -1) || (posDiv[1] == -1)) {
			alert(config.messages.invalidFileError.format([localPath]));
			return;
		}
		bidix.upload.uploadRss(uploadParams,original,posDiv);
	};
	
	if(onlyIfDirty && !store.isDirty())
		return;
	clearMessage();
	// save on localdisk ?
	if (document.location.toString().substr(0,4) == "file") {
		var path = document.location.toString();
		var localPath = getLocalPath(path);
		saveChanges();
	}
	// get original
	var uploadParams = new Array(storeUrl,toFilename,uploadDir,backupDir,username,password);
	var originalPath = document.location.toString();
	// If url is a directory : add index.html
	if (originalPath.charAt(originalPath.length-1) == "/")
		originalPath = originalPath + "index.html";
	var dest = config.macros.upload.destFile(storeUrl,toFilename,uploadDir);
	var log = new bidix.UploadLog();
	log.startUpload(storeUrl, dest, uploadDir,  backupDir);
	displayMessage(bidix.upload.messages.aboutToSaveOnHttpPost.format([dest]));
	if (bidix.debugMode) 
		alert("about to execute Http - GET on "+originalPath);
	var r = doHttp("GET",originalPath,null,null,username,password,callback,uploadParams,null);
	if (typeof r == "string")
		displayMessage(r);
	return r;
};

bidix.upload.uploadRss = function(uploadParams,original,posDiv) 
{
	var callback = function(status,params,responseText,url,xhr) {
		if(status) {
			var destfile = responseText.substring(responseText.indexOf("destfile:")+9,responseText.indexOf("\n", responseText.indexOf("destfile:")));
			displayMessage(bidix.upload.messages.rssSaved,bidix.dirname(url)+'/'+destfile);
			bidix.upload.uploadMain(params[0],params[1],params[2]);
		} else {
			displayMessage(bidix.upload.messages.rssFailed);			
		}
	};
	// do uploadRss
	if(config.options.chkGenerateAnRssFeed) {
		var rssPath = uploadParams[1].substr(0,uploadParams[1].lastIndexOf(".")) + ".xml";
		var rssUploadParams = new Array(uploadParams[0],rssPath,uploadParams[2],'',uploadParams[4],uploadParams[5]);
		var rssString = generateRss();
		// no UnicodeToUTF8 conversion needed when location is "file" !!!
		if (document.location.toString().substr(0,4) != "file")
			rssString = convertUnicodeToUTF8(rssString);	
		bidix.upload.httpUpload(rssUploadParams,rssString,callback,Array(uploadParams,original,posDiv));
	} else {
		bidix.upload.uploadMain(uploadParams,original,posDiv);
	}
};

bidix.upload.uploadMain = function(uploadParams,original,posDiv) 
{
	var callback = function(status,params,responseText,url,xhr) {
		var log = new bidix.UploadLog();
		if(status) {
			// if backupDir specified
			if ((params[3]) && (responseText.indexOf("backupfile:") > -1))  {
				var backupfile = responseText.substring(responseText.indexOf("backupfile:")+11,responseText.indexOf("\n", responseText.indexOf("backupfile:")));
				displayMessage(bidix.upload.messages.backupSaved,bidix.dirname(url)+'/'+backupfile);
			}
			var destfile = responseText.substring(responseText.indexOf("destfile:")+9,responseText.indexOf("\n", responseText.indexOf("destfile:")));
			displayMessage(bidix.upload.messages.mainSaved,bidix.dirname(url)+'/'+destfile);
			store.setDirty(false);
			log.endUpload("ok");
		} else {
			alert(bidix.upload.messages.mainFailed);
			displayMessage(bidix.upload.messages.mainFailed);
			log.endUpload("failed");			
		}
	};
	// do uploadMain
	var revised = bidix.upload.updateOriginal(original,posDiv);
	bidix.upload.httpUpload(uploadParams,revised,callback,uploadParams);
};

bidix.upload.httpUpload = function(uploadParams,data,callback,params)
{
	var localCallback = function(status,params,responseText,url,xhr) {
		url = (url.indexOf("nocache=") < 0 ? url : url.substring(0,url.indexOf("nocache=")-1));
		if (xhr.status == 404)
			alert(bidix.upload.messages.storePhpNotFound.format([url]));
		if ((bidix.debugMode) || (responseText.indexOf("Debug mode") >= 0 )) {
			alert(responseText);
			if (responseText.indexOf("Debug mode") >= 0 )
				responseText = responseText.substring(responseText.indexOf("\n\n")+2);
		} else if (responseText.charAt(0) != '0') 
			alert(responseText);
		if (responseText.charAt(0) != '0')
			status = null;
		callback(status,params,responseText,url,xhr);
	};
	// do httpUpload
	var boundary = "---------------------------"+"AaB03x";	
	var uploadFormName = "UploadPlugin";
	// compose headers data
	var sheader = "";
	sheader += "--" + boundary + "\r\nContent-disposition: form-data; name=\"";
	sheader += uploadFormName +"\"\r\n\r\n";
	sheader += "backupDir="+uploadParams[3] +
				";user=" + uploadParams[4] +
				";password=" + uploadParams[5] +
				";uploaddir=" + uploadParams[2];
	if (bidix.debugMode)
		sheader += ";debug=1";
	sheader += ";;\r\n"; 
	sheader += "\r\n" + "--" + boundary + "\r\n";
	sheader += "Content-disposition: form-data; name=\"userfile\"; filename=\""+uploadParams[1]+"\"\r\n";
	sheader += "Content-Type: text/html;charset=UTF-8" + "\r\n";
	sheader += "Content-Length: " + data.length + "\r\n\r\n";
	// compose trailer data
	var strailer = new String();
	strailer = "\r\n--" + boundary + "--\r\n";
	data = sheader + data + strailer;
	if (bidix.debugMode) alert("about to execute Http - POST on "+uploadParams[0]+"\n with \n"+data.substr(0,500)+ " ... ");
	var r = doHttp("POST",uploadParams[0],data,"multipart/form-data; ;charset=UTF-8; boundary="+boundary,uploadParams[4],uploadParams[5],localCallback,params,null);
	if (typeof r == "string")
		displayMessage(r);
	return r;
};

// same as Saving's updateOriginal but without convertUnicodeToUTF8 calls
bidix.upload.updateOriginal = function(original, posDiv)
{
	if (!posDiv)
		posDiv = locateStoreArea(original);
	if((posDiv[0] == -1) || (posDiv[1] == -1)) {
		alert(config.messages.invalidFileError.format([localPath]));
		return;
	}
	var revised = original.substr(0,posDiv[0] + startSaveArea.length) + "\n" +
				store.allTiddlersAsHtml() + "\n" +
				original.substr(posDiv[1]);
	var newSiteTitle = getPageTitle().htmlEncode();
	revised = revised.replaceChunk("<title"+">","</title"+">"," " + newSiteTitle + " ");
	revised = updateMarkupBlock(revised,"PRE-HEAD","MarkupPreHead");
	revised = updateMarkupBlock(revised,"POST-HEAD","MarkupPostHead");
	revised = updateMarkupBlock(revised,"PRE-BODY","MarkupPreBody");
	revised = updateMarkupBlock(revised,"POST-SCRIPT","MarkupPostBody");
	return revised;
};

//
// UploadLog
// 
// config.options.chkUploadLog :
//		false : no logging
//		true : logging
// config.options.txtUploadLogMaxLine :
//		-1 : no limit
//      0 :  no Log lines but UploadLog is still in place
//		n :  the last n lines are only kept
//		NaN : no limit (-1)

bidix.UploadLog = function() {
	if (!config.options.chkUploadLog) 
		return; // this.tiddler = null
	this.tiddler = store.getTiddler("UploadLog");
	if (!this.tiddler) {
		this.tiddler = new Tiddler();
		this.tiddler.title = "UploadLog";
		this.tiddler.text = "| !date | !user | !location | !storeUrl | !uploadDir | !toFilename | !backupdir | !origin |";
		this.tiddler.created = new Date();
		this.tiddler.modifier = config.options.txtUserName;
		this.tiddler.modified = new Date();
		store.addTiddler(this.tiddler);
	}
	return this;
};

bidix.UploadLog.prototype.addText = function(text) {
	if (!this.tiddler)
		return;
	// retrieve maxLine when we need it
	var maxLine = parseInt(config.options.txtUploadLogMaxLine,10);
	if (isNaN(maxLine))
		maxLine = -1;
	// add text
	if (maxLine != 0) 
		this.tiddler.text = this.tiddler.text + text;
	// Trunck to maxLine
	if (maxLine >= 0) {
		var textArray = this.tiddler.text.split('\n');
		if (textArray.length > maxLine + 1)
			textArray.splice(1,textArray.length-1-maxLine);
			this.tiddler.text = textArray.join('\n');		
	}
	// update tiddler fields
	this.tiddler.modifier = config.options.txtUserName;
	this.tiddler.modified = new Date();
	store.addTiddler(this.tiddler);
	// refresh and notifiy for immediate update
	story.refreshTiddler(this.tiddler.title);
	store.notify(this.tiddler.title, true);
};

bidix.UploadLog.prototype.startUpload = function(storeUrl, toFilename, uploadDir,  backupDir) {
	if (!this.tiddler)
		return;
	var now = new Date();
	var text = "\n| ";
	var filename = bidix.basename(document.location.toString());
	if (!filename) filename = '/';
	text += now.formatString("0DD/0MM/YYYY 0hh:0mm:0ss") +" | ";
	text += config.options.txtUserName + " | ";
	text += "[["+filename+"|"+location + "]] |";
	text += " [[" + bidix.basename(storeUrl) + "|" + storeUrl + "]] | ";
	text += uploadDir + " | ";
	text += "[[" + bidix.basename(toFilename) + " | " +toFilename + "]] | ";
	text += backupDir + " |";
	this.addText(text);
};

bidix.UploadLog.prototype.endUpload = function(status) {
	if (!this.tiddler)
		return;
	this.addText(" "+status+" |");
};

//
// Utilities
// 

bidix.checkPlugin = function(plugin, major, minor, revision) {
	var ext = version.extensions[plugin];
	if (!
		(ext  && 
			((ext.major > major) || 
			((ext.major == major) && (ext.minor > minor))  ||
			((ext.major == major) && (ext.minor == minor) && (ext.revision >= revision))))) {
			// write error in PluginManager
			if (pluginInfo)
				pluginInfo.log.push("Requires " + plugin + " " + major + "." + minor + "." + revision);
			eval(plugin); // generate an error : "Error: ReferenceError: xxxx is not defined"
	}
};

bidix.dirname = function(filePath) {
	if (!filePath) 
		return;
	var lastpos;
	if ((lastpos = filePath.lastIndexOf("/")) != -1) {
		return filePath.substring(0, lastpos);
	} else {
		return filePath.substring(0, filePath.lastIndexOf("\\"));
	}
};

bidix.basename = function(filePath) {
	if (!filePath) 
		return;
	var lastpos;
	if ((lastpos = filePath.lastIndexOf("#")) != -1) 
		filePath = filePath.substring(0, lastpos);
	if ((lastpos = filePath.lastIndexOf("/")) != -1) {
		return filePath.substring(lastpos + 1);
	} else
		return filePath.substring(filePath.lastIndexOf("\\")+1);
};

bidix.initOption = function(name,value) {
	if (!config.options[name])
		config.options[name] = value;
};

//
// Initializations
//

// require PasswordOptionPlugin 1.0.1 or better
bidix.checkPlugin("PasswordOptionPlugin", 1, 0, 1);

// styleSheet
setStylesheet('.txtUploadStoreUrl, .txtUploadBackupDir, .txtUploadDir {width: 22em;}',"uploadPluginStyles");

//optionsDesc
merge(config.optionsDesc,{
	txtUploadStoreUrl: "Url of the UploadService script (default: store.php)",
	txtUploadFilename: "Filename of the uploaded file (default: in index.html)",
	txtUploadDir: "Relative Directory where to store the file (default: . (downloadService directory))",
	txtUploadBackupDir: "Relative Directory where to backup the file. If empty no backup. (default: ''(empty))",
	txtUploadUserName: "Upload Username",
	pasUploadPassword: "Upload Password",
	chkUploadLog: "do Logging in UploadLog (default: true)",
	txtUploadLogMaxLine: "Maximum of lines in UploadLog (default: 10)"
});

// Options Initializations
bidix.initOption('txtUploadStoreUrl','');
bidix.initOption('txtUploadFilename','');
bidix.initOption('txtUploadDir','');
bidix.initOption('txtUploadBackupDir','');
bidix.initOption('txtUploadUserName','');
bidix.initOption('pasUploadPassword','');
bidix.initOption('chkUploadLog',true);
bidix.initOption('txtUploadLogMaxLine','10');


// Backstage
merge(config.tasks,{
	uploadOptions: {text: "upload", tooltip: "Change UploadOptions and Upload", content: '<<uploadOptions>>'}
});
config.backstageTasks.push("uploadOptions");


//}}}

This document is a ~TiddlyWiki from tiddlyspot.com.  A ~TiddlyWiki is an electronic notebook that is great for managing todo lists, personal information, and all sorts of things.

@@font-weight:bold;font-size:1.3em;color:#444; //What now?// &nbsp;&nbsp;@@ Before you can save any changes, you need to enter your password in the form below.  Then configure privacy and other site settings at your [[control panel|http://oxfordquantummatter2020.tiddlyspot.com/controlpanel]] (your control panel username is //oxfordquantummatter2020//).
<<tiddler TspotControls>>
See also GettingStarted.

@@font-weight:bold;font-size:1.3em;color:#444; //Working online// &nbsp;&nbsp;@@ You can edit this ~TiddlyWiki right now, and save your changes using the "save to web" button in the column on the right.

@@font-weight:bold;font-size:1.3em;color:#444; //Working offline// &nbsp;&nbsp;@@ A fully functioning copy of this ~TiddlyWiki can be saved onto your hard drive or USB stick.  You can make changes and save them locally without being connected to the Internet.  When you're ready to sync up again, just click "upload" and your ~TiddlyWiki will be saved back to tiddlyspot.com.

@@font-weight:bold;font-size:1.3em;color:#444; //Help!// &nbsp;&nbsp;@@ Find out more about ~TiddlyWiki at [[TiddlyWiki.com|http://tiddlywiki.com]].  Also visit [[TiddlyWiki.org|http://tiddlywiki.org]] for documentation on learning and using ~TiddlyWiki. New users are especially welcome on the [[TiddlyWiki mailing list|http://groups.google.com/group/TiddlyWiki]], which is an excellent place to ask questions and get help.  If you have a tiddlyspot related problem email [[tiddlyspot support|mailto:support@tiddlyspot.com]].

@@font-weight:bold;font-size:1.3em;color:#444; //Enjoy :)// &nbsp;&nbsp;@@ We hope you like using your tiddlyspot.com site.  Please email [[feedback@tiddlyspot.com|mailto:feedback@tiddlyspot.com]] with any comments or suggestions.
I don't like recording lectures.  I suspect most students don't like listening to recorded lectures either.   However, the university is giving us fairly strong guidance that lectures should be recorded and not live.  

Here are some of the reasons.

* Live lectures disadvantage students who might happen to be isolated at home in other time zones (we might have students in Taiwan, or Australia, or California). 
* At the very least we would want to record lectures even if they were given live. 
* However there are a number of GDPR issues associated with recording lectures because students generally will not have given permission to be recorded.   Even if they do give permission, it is hard to prove they weren't coerced to do so. 
* If a lecturer falls ill for some time, recorded lectures is a safeguard

While i was quite opposed to recording lectures in advance, this final reason in this list convinced me.   While people in good health who are not too old are surviving COVID with high probability, this does not mean that a person might not fall ill and be out of commission for several weeks or longer. 


Click here for [[How I am making these recordings]]