Welcome to TiddlyWiki created by Jeremy Ruston; Copyright © 2004-2007 Jeremy Ruston, Copyright © 2007-2011 UnaMesa Association
I often talk about "business papers", which is a reference to the following exchange from the [[Big Lebowski|http://www.imdb.com/title/tt0118715/]]:
Younger Cop: And was there anything of value in the car?
The Dude: Oh, uh, yeah, uh... a tape deck, some Creedence tapes, and there was a, uh... uh, my briefcase.
Younger Cop: [expectant pause] In the briefcase?
The Dude: Uh, uh, papers, um, just papers, uh, you know, uh, my papers, business papers.
Younger Cop: And what do you do, sir?
The Dude: I'm unemployed.
While the image of a researcher does not typically involve briefcases full of business papers, a scientist's business is actually largely about papers. Our business papers are peer reviewed research articles. Papers are the primary means through which a scientist's work and their impact on the field is assessed. While there have been many changes in the nature of publishing in recent years (e.g., digital publishing, open access), it is highly likely that peer reviewed articles, in some format or another, are going to remain the gold standard in evaluating research and researchers.
<i>Introduction to Publishing</i>
It often comes as a surprise to aspiring young scientists that intelligence and hard work are not sufficient for success in research. Research requires additional skills to those that led to success in other academic settings. Publishing your research involves a lot of writing and editing, usually done in collaboration with other people. It is very important for trainees to develop scientific communication and writing skills. Opinions vary on whether formal training can help people develop writing skills. In my opinion, in order to learn how to write academic articles, you should read a lot of academic articles. In addition, you should get involved in scientific writing as much as possible, as soon as possible. (See, [[Writing]]).
Who becomes an author on a paper? And how do you order multiple authors? There is no easy, foolproof answer... Different disciplines, journals and even countries can have different criteria for who is an author on a paper and what responsibilities come along with it. In many cases projects change, people leave or graduate, the planned experiments don't work out but something different comes up... Authorship, like research is always an ongoing, evolving process, so it is very important to talk about it with your PI as you go along.
Generally, the first author position is the most important and prestigious, and signifies the person who has contributed the most to the study. In the biomedical sciences (and some social sciences) the last author position is also prestigious and signifies the person whose lab in which the research was conducted and is sometimes called the "senior author" position. I included some useful links below that discuss criteria for authorship and their ordering but it is important to talk to the PI of the lab you're working in (See, [[Lab Policies]], [[Research Integrity and Ethics]]).
Academic writing has its own styles and conventions that may be new to you. The first few papers you write, you will probably work very closely with your advisor. It can be difficult to receive feedback on a draft, only to see your advisor made comments or changes on almost every paragraph! This does not mean you didn't do a good job. Do not take this personally. Research articles are different from the kind of writing you may be used to (e.g., from courses, schoolwork, even thesis chapters). It is not extraordinary for a paper to go through several revisions before it is ready to be submitted for peer review. Remember, your advisor has been writing articles in this field for years. Try to view the feedback you receive on your drafts as learning opportunities. (Of course, this does not mean you cannot disagree with your co-authors).
At the same time, you can try and improve a paper endlessly. At some point, you must stop and send it out for peer review. Don't worry, you will have a chance to improve it further; the reviewers will almost certainly ask for revisions. Your advisor and co-authors should help you find the balance between perfectionism and getting things done.
When you write a paper, it is reviewed by your peers, who are other researchers in the field. The peer review process can often involve (multiple rounds of) significant revisions or rejection. It can be difficult to stay positive and motivated. The best way of dealing with rejection is to revise the paper based on the reviewer comments as quickly as possible and submit somewhere else. Again, try not to take it personally, even if the reviews are harshly worded. Don't forget that even the very best scientists get rejections, and often...
While it is unhealthy and possibly detrimental to the quality of your work to be intensely focused on the publishing game, it is important to be aware that this will be the main criteria that will be used to evaluate your career as a scientist. There are of course other factors, but peer reviewed articles are always important, and in most cases correlated with the other important things (e.g., your reputation in the field). Even if your goal is not to become an academic scientist, a good publication record can help. In fact, it will make a huge difference if you want to be competitive for teaching and industry positions, which comes as a surprise to many a new PhD. So regardless of your eventual career goals, if you are a student or working in research, publishing is relevant to you.
Publishing is not just a numbers game, the quality of the publications are very important. Generally, more papers is better, but with two caveats: People will notice CVs full of least publishable units (LPUs) so you do want to publish some significant work, even if it means these papers will take a long time. You want your CV to have a balance of quality and quantity. Again, there is no simple formula for how many papers you should publish and in which journals as it's very discipline specific (although see some of the links below). Your CV, like a portfolio, develops over time. Second, if you have lots of papers on which you are an author, but none on which you are first author, this will not look very good. Focus your energy on getting out your primary work.
The publication process is often very competitive, at times frustrating, sometimes unfair, and almost always takes longer than you initially planned. A key aspect of success in research is thus resilience. A project is not done until it's published. The finish line is not when you complete the experiments, nor when you run all the analyses, not even when you write the results up. You should celebrate these important milestones, but you are not done until you receive that e-mail telling you your paper is accepted.
Resources:
[[PubMed|http://www.ncbi.nlm.nih.gov/pubmed/]]
[[ISI Knowledge|http://apps.isiknowledge.com]]
[[Web of Science|http://images.isiknowledge.com/WOK46/help/WOS/h_toc.html]]
[[Google Scholar|http://scholar.google.com/]]
[[Science Gateway|http://www.sciencegateway.org/]]
[[Impact Factors of Journals|http://www2.lib.udel.edu/colldev/impact.htm]]
[[Journals by Impact Factor|http://www.sciencegateway.org/rank/index.html]]
[[H index|http://en.wikipedia.org/wiki/H-index]]
[[Biological Sciences Journal Abbreviations|http://home.ncifcrf.gov/research/bja/]]
[[APA Style|http://en.wikipedia.org/wiki/APA_style]]
[[APA Style Essentials|http://www.vanguard.edu/faculty/ddegelman/index.aspx?doc_id=796]]
Links:
[[How to Determine Authorship (from Science)|http://sciencecareers.sciencemag.org/career_magazine/previous_issues/articles/2010_04_16/caredit.a1000039]]
[[International Committee of Medical Journal Editors' Guidelines|http://www.icmje.org/index.html]]
[[Authorship in Biomedical Research|http://sciencecareers.sciencemag.org/career_magazine/previous_issues/articles/2002_03_01/noDOI.1847997411683997393]]
[[Kosslyn Lab Authorship Plan|http://isites.harvard.edu/fs/docs/icb.topic562342.files/authorship_criteria_Nov02.pdf]]
[[Thesis Chapters vs. Papers|http://science-professor.blogspot.com/2008/12/too-much-like-thesis.html]]
[[Advice on Writing Papers|http://terrytao.wordpress.com/advice-on-writing-papers/]]
[[How to Write a Paper (Goldreich)|http://www.wisdom.weizmann.ac.il/~oded/PS/re-writing.ps]]
[[Timely Feedback from Collaborators|http://science-professor.blogspot.com/2008/12/timely-suggestions.html]]
[[Mean Reviews|http://science-professor.blogspot.com/2008/07/mean-reviews.html]]
[[Rose-Colored Review Glasses|http://science-professor.blogspot.com/2007/03/rose-colored-review-glasses.html]]
[[On Resubmision|http://science-professor.blogspot.com/2008/07/on-resubmission.html]]
[[The Title|http://science-professor.blogspot.com/2008/11/selling-it.html]]
[[Introductions|http://science-professor.blogspot.com/2008/11/selling-more-of-it.html]]
[[Acknowledgements|http://science-professor.blogspot.com/2009/03/authors-gratefully-acknowledge.html]]
[[What Makes a Co-Author|http://trainingprofessor.blogspot.com/2008/08/what-makes-coauthor.html]]
[[Choosing a Journal (FSP)|http://science-professor.blogspot.com/2008/09/journal-matchmaking.html]]
[[Choosing a Journal 2 (FSP)|http://science-professor.blogspot.com/2008/09/journal-choice-2.html]]
[[Choosing a Journal 3 (FSP)|http://science-professor.blogspot.com/2008/09/journal-choice-3.html]]
[[Choosing a Journal (DrugMonkey)|http://scienceblogs.com/drugmonkey/2008/08/journal_choice_strategy.php]]
[[Everybody Knows|http://science-professor.blogspot.com/2009/03/everyone-knows-that-already.html]]
[[Don't Need Glamour Magz?|http://candidengineer.blogspot.com/2009/06/i-dont-need-no-glamour-magz.html]]
[[No Way Am I Doing That Experiment|http://scienceblogs.com/drugmonkey/2008/09/no_fucking_way_am_i_doing_that.php]]
[[Peer Review: Friends and Enemies|http://drugmonkey.wordpress.com/2007/06/22/peer-review-friends-and-enemies/]]
[[On the Least Publishable Unit (LPU)|http://drugmonkey.wordpress.com/2007/10/19/thoughts-on-the-least-publishable-unit/]]
See also, [[Conferences]], [[Lab Policies]], [[Presentations, Talks and Posters]], [[Productivity]], [[TPS Reports]], [[Advice]], [[Writing]], [[Your Career]] and [[PUBLICATIONS]]
Welcome to the Cognitive Neuroscience and Neuropsychology lab (Saygin Lab). We are at the [[Department of Cognitive Science| http://www.cogsci.ucsd.edu]] at the [[University of California, San Diego| http://www.ucsd.edu]]. We are also affiliated with the [[Neurosciences Program|http://neurosciences.ucsd.edu/]], [[California Institute for Telecommunications and Information Technology (Calit2)|http://www.calit2.net]], [[Institute for Neural Computation (INC)|http://inc2.ucsd.edu]], [[Kavli Institute for Brain and Mind| http://kibm.ucsd.edu/]], [[UCSD Center for fMRI| http://fmri.ucsd.edu]], and [[Center for Research in Language (CRL)|http://crl.ucsd.edu]]. We also work with a range of local and international [[Collaborators and Friends]].
Here's information about [[Joining the Lab]].
Our lab is located in rooms 201-208 of SSRB (formerly CRB) on the main La Jolla campus, shown on the map [[here| http://maps.ucsd.edu/Viewer.htm?Map=Visitor&View=Medium&Campus=LaJolla&Zoom=5&R.x=0.429175&R.y=0.423163&Fill=151&Lkey=7220]]. Visitors will need to phone from the hallway to be let in. The lab phone number is on the door and there is a telephone near the elevator.
You can keep up with our news on our ''[[BLOG|http://www.sayginlab.org/blog/]]'' or ''[[@UCSDCogNeuro|http://twitter.com/#!/UCSDCogNeuro]]'' on Twitter. We are also on ''[[Neurotree|http://neurotree.org/neurotree/tree.php?pid=2558]]'' and ''[[Mendeley|http://www.mendeley.com/profiles/ayse-pinar-saygin/]]''.
See also [[PROJECTS]], [[PEOPLE]], [[PUBLICATIONS]] and [[LAB]]
This is an implementation of [[tiddlywiki|http://www.tiddlywiki.com/]]. This site, along with [[this|http://twhelp.tiddlyspot.com/]] should give you an idea of how it works in less than an hour.
The basic premise of the wiki is that it is low on predefined structure, high on content. Entries can be of various lengths, informativity, seriousness. Use the tags and the search feature if you're looking for something specific. Or you can browse around as well.
This whole website is a single html file called sayginlab.html. To edit, save this file from your browser as sayginlab.html on your computer and open the local copy. You will be able to create new entries by clicking "new tiddler" on the right hand panel (under permaview) and will be able to save the changes without ever leaving your browser by clicking "save changes". If set up correctly, this should work with most browsers including IE and Firefox.
If you edit the file, click options on the right panel (under close all, permaview etc...) and enter your name as you want it to appear.
Any images or external files must be hosted online and linked to (e.g. upload to photobucket or any other online storage service).
Tiddlywiki saves backups - but before uploading the new sayginlab.html to the web, make sure you have the right file. It is recommended to save a backup copy on the web before replacing it.
Currently, lab website cannot be edited simultaneously and online. There is thus a danger of having multiple versions of sayginlab.html, which is not good! I am however looking into a solution where we can have the file hosted online and saved online (e.g. tiddlyspot). In the meantime, please let me know if/when you're planning to make a significant update. You should then email me the new sayginlab.html and I'll upload it.
A better way to update sayginlab.html would be for each user to create new tiddlers on a separate tiddlywiki file (say you have a yournameforlab.html tiddlywiki) and then periodically using the ImportTiddlersPlugin on the main file to incorporate changes centrally.
We'll hopefully move towards a more collaborative/wiki verison of the site, or supplement the site with a PBwiki or google site. Suggestions welcome.
See also, [[Review of Tiddlywiki]], [[Computing]], [[Lab Notebooks]] and [[LAB]]
[[UCSD Blink: Academic and Administrative Calendar 2009-2010|http://blink.ucsd.edu/Blink/External/Topics/Policy/0,1162,20488,00.html]]
[[UCSD Blink: Academic and Administrative Calendar 2010-2011|http://blink.ucsd.edu/Blink/External/Topics/Policy/0,1162,20487,00.html]]
The best advice I have about advice: Take it. Take advice from as many people and sources as you can. Resist avoiding advice because you feel overwhelmed by different voices and approaches. You may only follow a select subset of the advice - and that's OK. Not all solutions offered will fit your problem. Be aware of what advice you took, what you didn't take, and why. Be prepared to revise your decisions in the future.
[[Illustrated guide to the PhD|http://matt.might.net/articles/phd-school-in-pictures]]: If this depresses you, don't even start!
Personal views:
[[Advice to Young Academics (Pavlov)|http://www.ias.ac.in/jarch/currsci/13/3b.pdf]]
[[Excerpt, Advice for a Young Investigator (Cajal)|http://neurocontrarian.wordpress.com/2007/03/28/excerpt-from-santiago-ramon-y-cajals-advice-for-a-young-investigator/]] [[(the book)|http://www.amazon.com/Advice-Young-Investigator-Bradford-Books/dp/0262681501]]
[[Advice for the Young Scientist (Math, Baez)|http://math.ucr.edu/home/baez/advice.html]]
[[Our Duties as Scientists (Goldreich)|http://www.wisdom.weizmann.ac.il/~oded/PDF/duties.pdf]]
More resources:
[[Science, Career Magazine|http://sciencecareers.sciencemag.org/career_magazine/previous_issues]]
[[Advice on Applying to Graduate School (Psychology)|http://psychandneuro.duke.edu/undergraduate/schooladvice]]
[[Advice on Applying to Graduate School (Neuroscience)|http://www.funjournal.org/downloads/fisherandzigmond.pdf]]
[[On Neuroscience Careers (Lots of Links, Vassar)|http://careers.vassar.edu/pdf/chat/neuroscience.pdf]]
[[UCSD Cogsci Alumni of the Month|http://www.cogsci.ucsd.edu/alumni/]]
[[Asking for a Letter of Recommendation (Akil)|http://math.stanford.edu/~vakil/recommendations.html]]
Don't Forget Humor!
[[Selected PhD Comics]]
[[PhD Comics Homepage|http://www.phdcomics.com/]]
See [[Graduate School]] for more advice for graduate students and candidates. See also [[Work-Life Balance]], [[Writing]], [[Your Career]] and [[(Business) Papers]].
[img[http://www.fil.ion.ucl.ac.uk/~asaygin/bio-highkick.gif]]
/***
|Name|CalendarPlugin|
|Source|http://www.TiddlyTools.com/#CalendarPlugin|
|Version|1.5.0|
|Author|Eric Shulman|
|Original Author|SteveRumsby|
|License|unknown|
|~CoreVersion|2.1|
|Type|plugin|
|Requires||
|Overrides||
|Options|##Configuration|
|Description|display monthly and yearly calendars|
NOTE: For //enhanced// date popup display, optionally install [[DatePlugin]] and [[ReminderMacros]]
!!!Usage:
<<<
|{{{<<calendar>>}}}|full-year calendar for the current year|
|{{{<<calendar year>>}}}|full-year calendar for the specified year|
|{{{<<calendar year month>>}}}|one month calendar for the specified month and year|
|{{{<<calendar thismonth>>}}}|one month calendar for the current month|
|{{{<<calendar lastmonth>>}}}|one month calendar for last month|
|{{{<<calendar nextmonth>>}}}|one month calendar for next month|
|{{{<<calendar +n>>}}}<br>{{{<<calendar -n>>}}}|one month calendar for a month +/- 'n' months from now|
<<<
!!!Configuration:
<<<
|''First day of week:''<br>{{{config.options.txtCalFirstDay}}}|<<option txtCalFirstDay>>|(Monday = 0, Sunday = 6)|
|''First day of weekend:''<br>{{{config.options.txtCalStartOfWeekend}}}|<<option txtCalStartOfWeekend>>|(Monday = 0, Sunday = 6)|
<<option chkDisplayWeekNumbers>> Display week numbers //(note: Monday will be used as the start of the week)//
|''Week number display format:''<br>{{{config.options.txtWeekNumberDisplayFormat }}}|<<option txtWeekNumberDisplayFormat >>|
|''Week number link format:''<br>{{{config.options.txtWeekNumberLinkFormat }}}|<<option txtWeekNumberLinkFormat >>|
<<<
!!!Revisions
<<<
2009.04.31 [1.5.0] rewrote onClickCalendarDate() (popup handler) and added config.options.txtCalendarReminderTags. Partial code reduction/cleanup. Assigned true version number (1.5.0)
2008.09.10 added '+n' (and '-n') param to permit display of relative months (e.g., '+6' means 'six months from now', '-3' means 'three months ago'. Based on suggestion from Jean.
2008.06.17 added support for config.macros.calendar.todaybg
2008.02.27 in handler(), DON'T set hard-coded default date format, so that *customized* value (pre-defined in config.macros.calendar.journalDateFmt is used.
2008.02.17 in createCalendarYear(), fix next/previous year calculation (use parseInt() to convert to numeric value). Also, use journalDateFmt for date linking when NOT using [[DatePlugin]].
2008.02.16 in createCalendarDay(), week numbers now created as TiddlyLinks, allowing quick creation/navigation to 'weekly' journals (based on request from Kashgarinn)
2008.01.08 in createCalendarMonthHeader(), 'month year' heading is now created as TiddlyLink, allowing quick creation/navigation to 'month-at-a-time' journals
2007.11.30 added 'return false' to onclick handlers (prevent IE from opening blank pages)
2006.08.23 added handling for weeknumbers (code supplied by Martin Budden (see 'wn**' comment marks). Also, incorporated updated by Jeremy Sheeley to add caching for reminders (see [[ReminderMacros]], if installed)
2005.10.30 in config.macros.calendar.handler(), use 'tbody' element for IE compatibility. Also, fix year calculation for IE's getYear() function (which returns '2005' instead of '105'). Also, in createCalendarDays(), use showDate() function (see [[DatePlugin]], if installed) to render autostyled date with linked popup. Updated calendar stylesheet definition: use .calendar class-specific selectors, add text centering and margin settings
2006.05.29 added journalDateFmt handling
<<<
!!!Code
***/
//{{{
version.extensions.CalendarPlugin= { major: 1, minor: 5, revision: 0, date: new Date(2009,5,31)};
//}}}
//{{{
if(config.options.txtCalFirstDay == undefined)
config.options.txtCalFirstDay = 0;
if(config.options.txtCalStartOfWeekend == undefined)
config.options.txtCalStartOfWeekend = 5;
if(config.options.chkDisplayWeekNumbers == undefined)
config.options.chkDisplayWeekNumbers = false;
if(config.options.chkDisplayWeekNumbers)
config.options.txtCalFirstDay = 0;
if(config.options.txtWeekNumberDisplayFormat == undefined)
config.options.txtWeekNumberDisplayFormat = 'w0WW';
if(config.options.txtWeekNumberLinkFormat == undefined)
config.options.txtWeekNumberLinkFormat = 'YYYY-w0WW';
if(config.options.txtCalendarReminderTags == undefined)
config.options.txtCalendarReminderTags = 'reminder';
config.macros.calendar = {
monthnames:['Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec'],
daynames:['M','T','W','T','F','S','S'],
todaybg:'#ccccff',
weekendbg:'#c0c0c0',
monthbg:'#e0e0e0',
holidaybg:'#ffc0c0',
journalDateFmt:'DD MMM YYYY',
monthdays:[31,28,31,30,31,30,31,31,30,31,30,31],
holidays:[ ] // for customization see [[CalendarPluginConfig]]
};
//}}}
//{{{
function calendarIsHoliday(date)
{
var longHoliday = date.formatString('0DD/0MM/YYYY');
var shortHoliday = date.formatString('0DD/0MM');
for(var i = 0; i < config.macros.calendar.holidays.length; i++) {
if( config.macros.calendar.holidays[i]==longHoliday
|| config.macros.calendar.holidays[i]==shortHoliday)
return true;
}
return false;
}
//}}}
//{{{
config.macros.calendar.handler = function(place,macroName,params) {
var calendar = createTiddlyElement(place, 'table', null, 'calendar', null);
var tbody = createTiddlyElement(calendar, 'tbody');
var today = new Date();
var year = today.getYear();
if (year<1900) year+=1900;
// get journal format from SideBarOptions (ELS 5/29/06 - suggested by MartinBudden)
var text = store.getTiddlerText('SideBarOptions');
var re = new RegExp('<<(?:newJournal)([^>]*)>>','mg'); var fm = re.exec(text);
if (fm && fm[1]!=null) { var pa=fm[1].readMacroParams(); if (pa[0]) this.journalDateFmt = pa[0]; }
var month=-1;
if (params[0] == 'thismonth') {
var month=today.getMonth();
} else if (params[0] == 'lastmonth') {
var month = today.getMonth()-1; if (month==-1) { month=11; year--; }
} else if (params[0] == 'nextmonth') {
var month = today.getMonth()+1; if (month>11) { month=0; year++; }
} else if (params[0]&&'+-'.indexOf(params[0].substr(0,1))!=-1) {
var month = today.getMonth()+parseInt(params[0]);
if (month>11) { year+=Math.floor(month/12); month%=12; };
if (month<0) { year+=Math.floor(month/12); month=12+month%12; }
} else if (params[0]) {
year = params[0];
if(params[1]) month=parseInt(params[1])-1;
if (month>11) month=11; if (month<0) month=0;
}
if (month!=-1) {
cacheReminders(new Date(year, month, 1, 0, 0), 31);
createCalendarOneMonth(tbody, year, month);
} else {
cacheReminders(new Date(year, 0, 1, 0, 0), 366);
createCalendarYear(tbody, year);
}
window.reminderCacheForCalendar = null;
}
//}}}
//{{{
// cache used to store reminders while the calendar is being rendered
// it will be renulled after the calendar is fully rendered.
window.reminderCacheForCalendar = null;
//}}}
//{{{
function cacheReminders(date, leadtime)
{
if (window.findTiddlersWithReminders == null) return;
window.reminderCacheForCalendar = {};
var leadtimeHash = [];
leadtimeHash [0] = 0;
leadtimeHash [1] = leadtime;
var t = findTiddlersWithReminders(date, leadtimeHash, null, 1);
for(var i = 0; i < t.length; i++) {
//just tag it in the cache, so that when we're drawing days, we can bold this one.
window.reminderCacheForCalendar[t[i]['matchedDate']] = 'reminder:' + t[i]['params']['title'];
}
}
//}}}
//{{{
function createCalendarOneMonth(calendar, year, mon)
{
var row = createTiddlyElement(calendar, 'tr');
createCalendarMonthHeader(calendar, row, config.macros.calendar.monthnames[mon]+' '+year, true, year, mon);
row = createTiddlyElement(calendar, 'tr');
createCalendarDayHeader(row, 1);
createCalendarDayRowsSingle(calendar, year, mon);
}
//}}}
//{{{
function createCalendarMonth(calendar, year, mon)
{
var row = createTiddlyElement(calendar, 'tr');
createCalendarMonthHeader(calendar, row, config.macros.calendar.monthnames[mon]+' '+ year, false, year, mon);
row = createTiddlyElement(calendar, 'tr');
createCalendarDayHeader(row, 1);
createCalendarDayRowsSingle(calendar, year, mon);
}
//}}}
//{{{
function createCalendarYear(calendar, year)
{
var row;
row = createTiddlyElement(calendar, 'tr');
var back = createTiddlyElement(row, 'td');
var backHandler = function() {
removeChildren(calendar);
createCalendarYear(calendar, parseInt(year)-1);
return false; // consume click
};
createTiddlyButton(back, '<', 'Previous year', backHandler);
back.align = 'center';
var yearHeader = createTiddlyElement(row, 'td', null, 'calendarYear', year);
yearHeader.align = 'center';
yearHeader.setAttribute('colSpan',config.options.chkDisplayWeekNumbers?22:19);//wn**
var fwd = createTiddlyElement(row, 'td');
var fwdHandler = function() {
removeChildren(calendar);
createCalendarYear(calendar, parseInt(year)+1);
return false; // consume click
};
createTiddlyButton(fwd, '>', 'Next year', fwdHandler);
fwd.align = 'center';
createCalendarMonthRow(calendar, year, 0);
createCalendarMonthRow(calendar, year, 3);
createCalendarMonthRow(calendar, year, 6);
createCalendarMonthRow(calendar, year, 9);
}
//}}}
//{{{
function createCalendarMonthRow(cal, year, mon)
{
var row = createTiddlyElement(cal, 'tr');
createCalendarMonthHeader(cal, row, config.macros.calendar.monthnames[mon], false, year, mon);
createCalendarMonthHeader(cal, row, config.macros.calendar.monthnames[mon+1], false, year, mon);
createCalendarMonthHeader(cal, row, config.macros.calendar.monthnames[mon+2], false, year, mon);
row = createTiddlyElement(cal, 'tr');
createCalendarDayHeader(row, 3);
createCalendarDayRows(cal, year, mon);
}
//}}}
//{{{
function createCalendarMonthHeader(cal, row, name, nav, year, mon)
{
var month;
if (nav) {
var back = createTiddlyElement(row, 'td');
back.align = 'center';
back.style.background = config.macros.calendar.monthbg;
var backMonHandler = function() {
var newyear = year;
var newmon = mon-1;
if(newmon == -1) { newmon = 11; newyear = newyear-1;}
removeChildren(cal);
cacheReminders(new Date(newyear, newmon , 1, 0, 0), 31);
createCalendarOneMonth(cal, newyear, newmon);
return false; // consume click
};
createTiddlyButton(back, '<', 'Previous month', backMonHandler);
month = createTiddlyElement(row, 'td', null, 'calendarMonthname')
createTiddlyLink(month,name,true);
month.setAttribute('colSpan', config.options.chkDisplayWeekNumbers?6:5);//wn**
var fwd = createTiddlyElement(row, 'td');
fwd.align = 'center';
fwd.style.background = config.macros.calendar.monthbg;
var fwdMonHandler = function() {
var newyear = year;
var newmon = mon+1;
if(newmon == 12) { newmon = 0; newyear = newyear+1;}
removeChildren(cal);
cacheReminders(new Date(newyear, newmon , 1, 0, 0), 31);
createCalendarOneMonth(cal, newyear, newmon);
return false; // consume click
};
createTiddlyButton(fwd, '>', 'Next month', fwdMonHandler);
} else {
month = createTiddlyElement(row, 'td', null, 'calendarMonthname', name)
month.setAttribute('colSpan',config.options.chkDisplayWeekNumbers?8:7);//wn**
}
month.align = 'center';
month.style.background = config.macros.calendar.monthbg;
}
//}}}
//{{{
function createCalendarDayHeader(row, num)
{
var cell;
for(var i = 0; i < num; i++) {
if (config.options.chkDisplayWeekNumbers) createTiddlyElement(row, 'td');//wn**
for(var j = 0; j < 7; j++) {
var d = j + (config.options.txtCalFirstDay - 0);
if(d > 6) d = d - 7;
cell = createTiddlyElement(row, 'td', null, null, config.macros.calendar.daynames[d]);
if(d == (config.options.txtCalStartOfWeekend-0) || d == (config.options.txtCalStartOfWeekend-0+1))
cell.style.background = config.macros.calendar.weekendbg;
}
}
}
//}}}
//{{{
function createCalendarDays(row, col, first, max, year, mon) {
var i;
if (config.options.chkDisplayWeekNumbers){
if (first<=max) {
var ww = new Date(year,mon,first);
var td=createTiddlyElement(row, 'td');//wn**
var link=createTiddlyLink(td,ww.formatString(config.options.txtWeekNumberLinkFormat),false);
link.appendChild(document.createTextNode(
ww.formatString(config.options.txtWeekNumberDisplayFormat)));
}
else createTiddlyElement(row, 'td');//wn**
}
for(i = 0; i < col; i++)
createTiddlyElement(row, 'td');
var day = first;
for(i = col; i < 7; i++) {
var d = i + (config.options.txtCalFirstDay - 0);
if(d > 6) d = d - 7;
var daycell = createTiddlyElement(row, 'td');
var isaWeekend=((d==(config.options.txtCalStartOfWeekend-0)
|| d==(config.options.txtCalStartOfWeekend-0+1))?true:false);
if(day > 0 && day <= max) {
var celldate = new Date(year, mon, day);
// ELS 10/30/05 - use <<date>> macro's showDate() function to create popup
// ELS 05/29/06 - use journalDateFmt
if (window.showDate) showDate(daycell,celldate,'popup','DD',
config.macros.calendar.journalDateFmt,true, isaWeekend);
else {
if(isaWeekend) daycell.style.background = config.macros.calendar.weekendbg;
var title = celldate.formatString(config.macros.calendar.journalDateFmt);
if(calendarIsHoliday(celldate))
daycell.style.background = config.macros.calendar.holidaybg;
var now=new Date();
if ((now-celldate>=0) && (now-celldate<86400000)) // is today?
daycell.style.background = config.macros.calendar.todaybg;
if(window.findTiddlersWithReminders == null) {
var link = createTiddlyLink(daycell, title, false);
link.appendChild(document.createTextNode(day));
} else
var button = createTiddlyButton(daycell, day, title, onClickCalendarDate);
}
}
day++;
}
}
//}}}
//{{{
// Create a pop-up containing:
// * a link to a tiddler for this date
// * a 'new tiddler' link to add a reminder for this date
// * links to current reminders for this date
// NOTE: this code is only used if [[ReminderMacros]] is installed AND [[DatePlugin]] is //not// installed.
function onClickCalendarDate(ev) { ev=ev||window.event;
var d=new Date(this.getAttribute('title')); var date=d.formatString(config.macros.calendar.journalDateFmt);
var p=Popup.create(this); if (!p) return;
createTiddlyLink(createTiddlyElement(p,'li'),date,true);
var rem='\\n\\<\\<reminder day:%0 month:%1 year:%2 title: \\>\\>';
rem=rem.format([d.getDate(),d.getMonth()+1,d.getYear()+1900]);
var cmd="<<newTiddler label:[[new reminder...]] prompt:[[add a new reminder to '%0']]"
+" title:[[%0]] text:{{store.getTiddlerText('%0','')+'%1'}} tag:%2>>";
wikify(cmd.format([date,rem,config.options.txtCalendarReminderTags]),p);
createTiddlyElement(p,'hr');
var t=findTiddlersWithReminders(d,[0,31],null,1);
for(var i=0; i<t.length; i++) {
var link=createTiddlyLink(createTiddlyElement(p,'li'), t[i].tiddler, false);
link.appendChild(document.createTextNode(t[i]['params']['title']));
}
Popup.show(); ev.cancelBubble=true; if (ev.stopPropagation) ev.stopPropagation(); return false;
}
//}}}
//{{{
function calendarMaxDays(year, mon)
{
var max = config.macros.calendar.monthdays[mon];
if(mon == 1 && (year % 4) == 0 && ((year % 100) != 0 || (year % 400) == 0)) max++;
return max;
}
//}}}
//{{{
function createCalendarDayRows(cal, year, mon)
{
var row = createTiddlyElement(cal, 'tr');
var first1 = (new Date(year, mon, 1)).getDay() -1 - (config.options.txtCalFirstDay-0);
if(first1 < 0) first1 = first1 + 7;
var day1 = -first1 + 1;
var first2 = (new Date(year, mon+1, 1)).getDay() -1 - (config.options.txtCalFirstDay-0);
if(first2 < 0) first2 = first2 + 7;
var day2 = -first2 + 1;
var first3 = (new Date(year, mon+2, 1)).getDay() -1 - (config.options.txtCalFirstDay-0);
if(first3 < 0) first3 = first3 + 7;
var day3 = -first3 + 1;
var max1 = calendarMaxDays(year, mon);
var max2 = calendarMaxDays(year, mon+1);
var max3 = calendarMaxDays(year, mon+2);
while(day1 <= max1 || day2 <= max2 || day3 <= max3) {
row = createTiddlyElement(cal, 'tr');
createCalendarDays(row, 0, day1, max1, year, mon); day1 += 7;
createCalendarDays(row, 0, day2, max2, year, mon+1); day2 += 7;
createCalendarDays(row, 0, day3, max3, year, mon+2); day3 += 7;
}
}
//}}}
//{{{
function createCalendarDayRowsSingle(cal, year, mon)
{
var row = createTiddlyElement(cal, 'tr');
var first1 = (new Date(year, mon, 1)).getDay() -1 - (config.options.txtCalFirstDay-0);
if(first1 < 0) first1 = first1+ 7;
var day1 = -first1 + 1;
var max1 = calendarMaxDays(year, mon);
while(day1 <= max1) {
row = createTiddlyElement(cal, 'tr');
createCalendarDays(row, 0, day1, max1, year, mon); day1 += 7;
}
}
//}}}
//{{{
setStylesheet('.calendar, .calendar table, .calendar th, .calendar tr, .calendar td { text-align:center; } .calendar, .calendar a { margin:0px !important; padding:0px !important; }', 'calendarStyles');
//}}}
// // override cookie settings for CalendarPlugin:
//{{{
config.options.txtCalFirstDay=6;
config.options.txtCalStartOfWeekend=5;
//}}}
// // override internal default settings for CalendarPlugin:
//{{{
config.macros.calendar.journalDateFmt="DDD MMM 0DD YYYY";
//}}}
Add the following code to the StyleSheet tiddler, being sure to place your image url inside the paretheses:
body {background-image: url();
background-repeat: repeat; background-position: left; backgound-color: transparent; font-family: Helvetica;}
Obviously if it is an image on the Internet, you will only have access to the image while online.
Source: [[TiddlyWiki for the rest of us - An easy-to-use entry-level TiddlyWiki tutorial from giffmex|http://www.giffmex.org/twfortherestofus.html]]
In addition to friends and colleagues at UCSD, our lab has links with a number of labs and institutions including:
[[Wellcome Trust Centre for Neuroimaging| http://www.fil.ion.ucl.ac.uk]], London, UK.
[[Birkbeck-UCL Centre for Neuroimaging| http://bucni.psychol.ucl.ac.uk]], London, UK.
[[Driver Lab, Attention Group, UCL Institute of Cognitive Neuroscience| http://www.icn.ucl.ac.uk/Research-Groups/attention-group]], London, UK.
[[Rees Lab, Awareness Group, UCL Institute of Cognitive Neuroscience| http://www.fil.ion.ucl.ac.uk/~grees]], London, UK.
[[Ishiguro Lab, Osaka University, Intelligent Robotics Lab| http://www.is.sys.es.osaka-u.ac.jp/index.en.html]], Osaka, Japan.
[[Blakemore Lab, Developmental Cognitive Neuroscience Group, UCL|http://sites.google.com/site/blakemorelab]], London, UK.
[[Center for Aphasia and Related Disorders, VA Northern California Healthcare System| http://www.ebire.org/aphasia]], Martinez, CA, USA.
[[Mediterranean Institute for Cognitive Neuroscience|http://www.incm.cnrs-mrs.fr/en_index.php]], Marseille, France.
[[Department of Psychology, Max Planck Institute for Human Cognitive and Brain Sciences| http://www.cbs.mpg.de/index.html]], Leipzig, Germany.
[[Optometry and Visual Science, City University| http://www.city.ac.uk/optometry/research/visualpsychophysics]], London, UK.
[[Computational and Biological Vision Group, Bilkent University|http://www.vision.bilkent.edu.tr]], Ankara, Turkey.
[[Kilner Lab, Institute of Neurology, UCL|http://sites.google.com/site/kilnerlab/home]], London, UK.
Local Collaborators:
[[Poizner Lab|http://inc.ucsd.edu/~poizner/]]: We are working with Howard Poizner and Markus Plank at the INC.
[[B.A.N.G. Lab|http://bang.calit2.net/]] & [[CRCA|http://crca.ucsd.edu/]]: We have a new interdisciplinary project with artist and theorist Micha Cardenas and artist and musician Elle Mehrmand.
[[Laboratory for Language and Cognitive Neuroscience, SDSU| http://emmoreylab.sdsu.edu]]: We work with Karen Emmorey at SDSU and CRL, UCSD.
Local Affilliations:
[[California Institute for Telecommunications and Information Technology (Calit2)|http://www.calit2.net/]]
[[Center for Academic Research in Anthropogeny (CARTA)|http://carta.anthropogeny.org/]]
[[Center for Research in Entertainment and Learning (CREL)|http://crel.calit2.net]]
[[Center for Research in Language (CRL)|http://crl.ucsd.edu]]
[[Institute for Neural Computation (INC)|http://inc2.ucsd.edu]]
[[Kavli Institute for Brain and Mind (KIBM)|http://inc2.ucsd.edu]]
[[Lab Computers (protected)|https://spreadsheets.google.com/ccc?key=0AujyilBL_oWDdHBSNWJQaU1sRTdWZWt5M1RJZFFhY0E&hl=en]]
[[Matlab Course|http://www.matlabfun.com]]
[[Using Voice Recognition in Grading|http://chronicle.com/article/Speaking-Truth-to-Papers/48788/]]
See also [[Software]], [[Productivity]] and [[LAB]]
Members of the lab are encouraged to attend and present their work at scientific meetings.
Conferences we regularly attend are:
- [[Society for Neuroscience (SFN)|http://www.sfn.org]]. Conference in Oct or Nov. Abstract submission deadline usually in May. Location varies (2010: San Diego, 2011: Washington DC).
- [[Vision Sciences Society (VSS)|http://www.visionsciences.org]]. Conference in May. Abstract submission usually early Dec. Location is always Florida (used to be Sarasota, now Naples).
- [[Cognitive Neuroscience Society (CNS)|http://cogneurosociety.org]]. Conference in March/April. Abstract submission usually early Nov. Location varies but is usually in New York or San Francisco (although in Montreal in 2010).
- [[Human Brain Mapping (HBM)|www.humanbrainmapping.org]]. Conference in June. Abstract submission usually in Jan. Location varies (2010: Barcelona; 2011: Quebec City; 2012: Shanghai).
Other relevant conferences:
- [[European Conference on Visual Perception (ECVP) | http://www.ecvp.org]]. Conference in August. Abstract deadline usually around spring. Location varies (2010: Lausanne, 2011: Toulouse).
- [[Human Robot Interaction (HRI)|http://hri2010.org]]. Conference usually in March and paper submission usually in September. Location varies (2010: Osaka; 2011: Lausanne).
- [[International Multisensory Research Forum (IMRF)|http://imrf.mcmaster.ca/IMRF]]. Conference in June. Abstract submissions in Dec or Jan. Location varies (2010: Liverpool).
- [[American Psychological Association (APA) Convention|http://apa.org]]. Conference in August. Proposal deadline late Nov or early Dec. Location varies (2010: San Diego; 2011: Washington, DC; 2012: Orlando; 2013: Honolulu)
- [[Cognitive Science|http://cognitivesciencesociety.org/index.html]]. Conference in August. Deadline usually early spring. Location varies (2010: Portland, Oregon).
- Feel free to add more...
Practicalities:
- Most conferences have travel awards or fellowships for students, so always check. There may also be local funds available for supporting travel to conferences such as [[UCSD Dean's Social Sciences Travel Award|https://sswebapp.ucsd.edu/travelfund/]]. See also, [[Funding]].
- [[UCSD Travel Policy|http://blink.ucsd.edu/travel/index.html]]
- For information on preparing presentations and posters, see [[Presentations, Talks and Posters]].
Other Links:
[[Why Attend Conferences?|http://scienceblogs.com/drugmonkey/2008/06/why_attend_scientific_meetings_1.php]]
[[Extreme Conferencing|http://science-professor.blogspot.com/2007/12/extreme-conferencing.html]]
[[Intervention?|http://science-professor.blogspot.com/2008/10/intervention.html]]
[[On Size|http://scienceblogs.com/drugmonkey/2008/09/does_size_matter.php]]
[[Conference Junkie|http://science-professor.blogspot.com/2006/11/conference-junkie.html]]
Don't count on it:
[[<img src="http://www.phdcomics.com/comics/archive/phd040208s.gif" width=470>|http://www.phdcomics.com/comics/archive/phd040208s.gif]]
See also, [[(Business) Papers]], [[Presentations, Talks and Posters]], [[Your Career]], [[PUBLICATIONS]]
Courses that are most relevant for the research in our lab.
Dr. Saygin's courses:
Spring 2010: [[<i>Matlab for Experimental Research (Mat Fun)</i>|http://www.matlabfun.com]]: This is a hands-on programming class aimed specifically at developing applied skills for experimental research. You will learn how to develop stimuli, program an experiment, collect responses, and conduct analyses. You will also improve your confidence about your programming ability. The skills you acquire in the class will increase your independence, allow you to make faster progress in your research, and can improve your graduate/medical school or academic or non-academic job applications. [[Course Website|http://www.matlabfun.com]]
Fall 2010: <i>Brain Disorders and Cognition</i>: This course focuses on the functional abnormalities that can occur following brain damage. Students will learn to recognize the major anatomical, behavioral, and physiological alterations that occur as a result of some common brain disorders and have some understanding of neuropsychological methods of evaluating cognitive function. Students will also integrate neurological and experimental evidence about brain disorders with what is known about the brain to think, discuss and write about some major issues in cognitive neuroscience.
See also, [[Graduate School]], [[Undergraduate Research]] and [[LAB]]
Before collecting any data, you must make sure your project and any personnel working on it are covered by the lab's IRB approval. You also must complete the required training before any human-subject/experimenter interaction takes place. See [[Human Subjects]].
There are additional tutorials and training you must complete in order to conduct fMRI studies. See [[fMRI]].
For subject recruitment, we often use [[Experimetrix|https://experimetrix2.com/UCSD/]], a tool provided by the Psychology department.
Guidelines:
- Make sure you get informed consent from each participant before starting the experiment. Always make sure you have a copy of the IRB stamped lab [[Consent Form]]. Follow instructions on the form carefully.
- Remember to ask subjects turn off mobile phones before starting the experiment.
- Restart the computer in your testing room before testing your first subject of the day.
- Check monitor settings such as refresh rate and screen resolution before each session.
- Check sound volume if you are presenting auditory stimuli.
- Treat all equipment with care and keep it clean.
- No eating or drinking in the testing rooms. Water in plastic bottles is OK.
- Do not borrow equipment or supplies from testing rooms.
- Do not install any software on testing computers without prior approval.
- Be respectful to other experiments in progress. Refrain from loud talking around the testing rooms. Do not interrupt testing unless there is an emergency.
- Arrive at least 10 minutes before your experiment is scheduled to prepare the room, the computers, and the paperwork.
- Be sure to treat all subjects equally before and during testing, in order not to bias their behavior.
- At the end of testing, there should be a debriefing session where you explain the study to the participants and allow them to ask questions. If you are testing the participants in multiple sessions, you may want to wait until all sessions are completed to explain the details of the study so as to not bias them.
- Be prepared to compensate the participant at the end of the session. Make sure you have either a [[Credit Receipt]] or cash payment and [[Cash Receipt]] at hand.
See also [[Computing]], [[Human Subjects]], [[Lab Policies]], [[Research Integrity and Ethics]], [[Stimuli]], [[Software]], [[PROJECTS]] and [[LAB]]
/***
|Name|[[DatePlugin]]|
|Source|http://www.TiddlyTools.com/#DatePlugin|
|Documentation|http://www.TiddlyTools.com/#DatePluginInfo|
|Version|2.7.1|
|Author|Eric Shulman|
|License|http://www.TiddlyTools.com/#LegalStatements <br>and [[Creative Commons Attribution-ShareAlike 2.5 License|http://creativecommons.org/licenses/by-sa/2.5/]]|
|~CoreVersion|2.1|
|Type|plugin|
|Requires||
|Overrides||
|Options|##Configuration|
|Description|formatted dates plus popup menu with 'journal' link, changes and (optional) reminders|
This plugin provides a general approach to displaying formatted dates and/or links and popups that permit easy navigation and management of tiddlers based on their creation/modification dates.
!!!!!Documentation
>see [[DatePluginInfo]]
!!!!!Configuration
<<<
<<option chkDatePopupHideCreated>> omit 'created' section from date popups
<<option chkDatePopupHideChanged>> omit 'changed' section from date popups
<<option chkDatePopupHideTagged>> omit 'tagged' section from date popups
<<option chkDatePopupHideReminders>> omit 'reminders' section from date popups
<<option chkShowJulianDate>> display Julian day number (1-365) below current date
see [[DatePluginConfig]] for additional configuration settings, for use in calendar displays, including:
*date formats
*color-coded backgrounds
*annual fixed-date holidays
*weekends
<<<
!!!!!Revisions
<<<
2009.05.31 [2.7.1] in addRemindersToPopup(), 'new reminder....' command now uses {{{<<newTiddler>>}}} macro. Also, general code reduction/cleanup.
|please see [[DatePluginInfo]] for additional revision details|
2005.10.30 [0.9.0] pre-release
<<<
!!!!!Code
***/
//{{{
version.extensions.DatePlugin= {major: 2, minor: 7, revision: 1, date: new Date(2009,5,31)};
config.macros.date = {
format: 'YYYY.0MM.0DD', // default date display format
linkformat: 'YYYY.0MM.0DD', // 'dated tiddler' link format
linkedbg: '#babb1e', // 'babble'
todaybg: '#ffab1e', // 'fable'
weekendbg: '#c0c0c0', // 'cocoa'
holidaybg: '#ffaace', // 'face'
createdbg: '#bbeeff', // 'beef'
modifiedsbg: '#bbeeff', // 'beef'
remindersbg: '#c0ffee', // 'coffee'
weekend: [ 1,0,0,0,0,0,1 ], // [ day index values: sun=0, mon=1, tue=2, wed=3, thu=4, fri=5, sat=6 ],
holidays: [ '01/01', '07/04', '07/24', '11/24' ]
// NewYearsDay, IndependenceDay(US), Eric's Birthday (hooray!), Thanksgiving(US)
};
config.macros.date.handler = function(place,macroName,params)
{
// default: display current date
var now =new Date();
var date=now;
var mode='display';
if (params[0]&&['display','popup','link'].contains(params[0].toLowerCase()))
{ mode=params[0]; params.shift(); }
if (!params[0] || params[0]=='today')
{ params.shift(); }
else if (params[0]=='filedate')
{ date=new Date(document.lastModified); params.shift(); }
else if (params[0]=='tiddler')
{ date=store.getTiddler(story.findContainingTiddler(place).id.substr(7)).modified; params.shift(); }
else if (params[0].substr(0,8)=='tiddler:')
{ var t; if ((t=store.getTiddler(params[0].substr(8)))) date=t.modified; params.shift(); }
else {
var y = eval(params.shift().replace(/Y/ig,(now.getYear()<1900)?now.getYear()+1900:now.getYear()));
var m = eval(params.shift().replace(/M/ig,now.getMonth()+1));
var d = eval(params.shift().replace(/D/ig,now.getDate()+0));
date = new Date(y,m-1,d);
}
// date format with optional custom override
var format=this.format; if (params[0]) format=params.shift();
var linkformat=this.linkformat; if (params[0]) linkformat=params.shift();
showDate(place,date,mode,format,linkformat);
}
window.showDate=showDate;
function showDate(place,date,mode,format,linkformat,autostyle,weekend)
{
mode =mode||'display';
format =format||config.macros.date.format;
linkformat=linkformat||config.macros.date.linkformat;
// format the date output
var title=date.formatString(format);
var linkto=date.formatString(linkformat);
// just show the formatted output
if (mode=='display') { place.appendChild(document.createTextNode(title)); return; }
// link to a 'dated tiddler'
var link = createTiddlyLink(place, linkto, false);
link.appendChild(document.createTextNode(title));
link.title = linkto;
link.date = date;
link.format = format;
link.linkformat = linkformat;
// if using a popup menu, replace click handler for dated tiddler link
// with handler for popup and make link text non-italic (i.e., an 'existing link' look)
if (mode=='popup') {
link.onclick = onClickDatePopup;
link.style.fontStyle='normal';
}
// format the popup link to show what kind of info it contains (for use with calendar generators)
if (autostyle) setDateStyle(place,link,weekend);
}
//}}}
//{{{
// NOTE: This function provides default logic for setting the date style when displayed in a calendar
// To customize the date style logic, please see[[DatePluginConfig]]
function setDateStyle(place,link,weekend) {
// alias variable names for code readability
var date=link.date;
var fmt=link.linkformat;
var linkto=date.formatString(fmt);
var cmd=config.macros.date;
if ((weekend!==undefined?weekend:isWeekend(date))&&(cmd.weekendbg!=''))
{ place.style.background = cmd.weekendbg; }
if (hasModifieds(date)||hasCreateds(date)||hasTagged(date,fmt))
{ link.style.fontStyle='normal'; link.style.fontWeight='bold'; }
if (hasReminders(date))
{ link.style.textDecoration='underline'; }
if (isToday(date))
{ link.style.border='1px solid black'; }
if (isHoliday(date)&&(cmd.holidaybg!=''))
{ place.style.background = cmd.holidaybg; }
if (hasCreateds(date)&&(cmd.createdbg!=''))
{ place.style.background = cmd.createdbg; }
if (hasModifieds(date)&&(cmd.modifiedsbg!=''))
{ place.style.background = cmd.modifiedsbg; }
if ((hasTagged(date,fmt)||store.tiddlerExists(linkto))&&(cmd.linkedbg!=''))
{ place.style.background = cmd.linkedbg; }
if (hasReminders(date)&&(cmd.remindersbg!=''))
{ place.style.background = cmd.remindersbg; }
if (isToday(date)&&(cmd.todaybg!=''))
{ place.style.background = cmd.todaybg; }
if (config.options.chkShowJulianDate) { // optional display of Julian date numbers
var m=[0,31,59,90,120,151,181,212,243,273,304,334];
var d=date.getDate()+m[date.getMonth()];
var y=date.getFullYear();
if (date.getMonth()>1 && (y%4==0 && y%100!=0) || y%400==0)
d++; // after February in a leap year
wikify('@@font-size:80%;<br>'+d+'@@',place);
}
}
//}}}
//{{{
function isToday(date) // returns true if date is today
{ var now=new Date(); return ((now-date>=0) && (now-date<86400000)); }
function isWeekend(date) // returns true if date is a weekend
{ return (config.macros.date.weekend[date.getDay()]); }
function isHoliday(date) // returns true if date is a holiday
{
var longHoliday = date.formatString('0MM/0DD/YYYY');
var shortHoliday = date.formatString('0MM/0DD');
for(var i = 0; i < config.macros.date.holidays.length; i++) {
var holiday=config.macros.date.holidays[i];
if (holiday==longHoliday||holiday==shortHoliday) return true;
}
return false;
}
//}}}
//{{{
// Event handler for clicking on a day popup
function onClickDatePopup(e) { e=e||window.event;
var p=Popup.create(this); if (!p) return false;
// always show dated tiddler link (or just date, if readOnly) at the top...
if (!readOnly || store.tiddlerExists(this.date.formatString(this.linkformat)))
createTiddlyLink(createTiddlyElement(p,'li'),this.date.formatString(this.linkformat),true);
else
createTiddlyText(createTiddlyElement(p,'li'),this.date.formatString(this.linkformat));
if (!config.options.chkDatePopupHideCreated)
addCreatedsToPopup(p,this.date,this.format);
if (!config.options.chkDatePopupHideChanged)
addModifiedsToPopup(p,this.date,this.format);
if (!config.options.chkDatePopupHideTagged)
addTaggedToPopup(p,this.date,this.linkformat);
if (!config.options.chkDatePopupHideReminders)
addRemindersToPopup(p,this.date,this.linkformat);
Popup.show(); e.cancelBubble=true; if(e.stopPropagation)e.stopPropagation(); return false;
}
//}}}
//{{{
function indexCreateds() // build list of tiddlers, hash indexed by creation date
{
var createds= { };
var tiddlers = store.getTiddlers('title','excludeLists');
for (var t = 0; t < tiddlers.length; t++) {
var date = tiddlers[t].created.formatString('YYYY0MM0DD')
if (!createds[date])
createds[date]=new Array();
createds[date].push(tiddlers[t].title);
}
return createds;
}
function hasCreateds(date) // returns true if date has created tiddlers
{
if (!config.macros.date.createds) config.macros.date.createds=indexCreateds();
return (config.macros.date.createds[date.formatString('YYYY0MM0DD')]!=undefined);
}
function addCreatedsToPopup(p,when,format)
{
var force=(store.isDirty() && when.formatString('YYYY0MM0DD')==new Date().formatString('YYYY0MM0DD'));
if (force || !config.macros.date.createds) config.macros.date.createds=indexCreateds();
var indent=String.fromCharCode(160)+String.fromCharCode(160);
var createds = config.macros.date.createds[when.formatString('YYYY0MM0DD')];
if (createds) {
createds.sort();
var e=createTiddlyElement(p,'div',null,null,'created ('+createds.length+')');
for(var t=0; t<createds.length; t++) {
var link=createTiddlyLink(createTiddlyElement(p,'li'),createds[t],false);
link.appendChild(document.createTextNode(indent+createds[t]));
}
}
}
//}}}
//{{{
function indexModifieds() // build list of tiddlers, hash indexed by modification date
{
var modifieds= { };
var tiddlers = store.getTiddlers('title','excludeLists');
for (var t = 0; t < tiddlers.length; t++) {
var date = tiddlers[t].modified.formatString('YYYY0MM0DD')
if (!modifieds[date])
modifieds[date]=new Array();
modifieds[date].push(tiddlers[t].title);
}
return modifieds;
}
function hasModifieds(date) // returns true if date has modified tiddlers
{
if (!config.macros.date.modifieds) config.macros.date.modifieds = indexModifieds();
return (config.macros.date.modifieds[date.formatString('YYYY0MM0DD')]!=undefined);
}
function addModifiedsToPopup(p,when,format)
{
var date=when.formatString('YYYY0MM0DD');
var force=(store.isDirty() && date==new Date().formatString('YYYY0MM0DD'));
if (force || !config.macros.date.modifieds) config.macros.date.modifieds=indexModifieds();
var indent=String.fromCharCode(160)+String.fromCharCode(160);
var mods = config.macros.date.modifieds[date];
if (mods) {
// if a tiddler was created on this date, don't list it in the 'changed' section
if (config.macros.date.createds && config.macros.date.createds[date]) {
var temp=[];
for(var t=0; t<mods.length; t++)
if (!config.macros.date.createds[date].contains(mods[t]))
temp.push(mods[t]);
mods=temp;
}
mods.sort();
var e=createTiddlyElement(p,'div',null,null,'changed ('+mods.length+')');
for(var t=0; t<mods.length; t++) {
var link=createTiddlyLink(createTiddlyElement(p,'li'),mods[t],false);
link.appendChild(document.createTextNode(indent+mods[t]));
}
}
}
//}}}
//{{{
function hasTagged(date,format) // returns true if date is tagging other tiddlers
{
return store.getTaggedTiddlers(date.formatString(format)).length>0;
}
function addTaggedToPopup(p,when,format)
{
var indent=String.fromCharCode(160)+String.fromCharCode(160);
var tagged=store.getTaggedTiddlers(when.formatString(format));
if (tagged.length) var e=createTiddlyElement(p,'div',null,null,'tagged ('+tagged.length+')');
for(var t=0; t<tagged.length; t++) {
var link=createTiddlyLink(createTiddlyElement(p,'li'),tagged[t].title,false);
link.appendChild(document.createTextNode(indent+tagged[t].title));
}
}
//}}}
//{{{
function indexReminders(date,leadtime) // build list of tiddlers with reminders, hash indexed by reminder date
{
var reminders = { };
if(window.findTiddlersWithReminders!=undefined) { // reminder plugin is installed
var t = findTiddlersWithReminders(date, [0,leadtime], null, null, 1);
for(var i=0; i<t.length; i++) reminders[t[i].matchedDate]=true;
}
return reminders;
}
function hasReminders(date) // returns true if date has reminders
{
if (window.reminderCacheForCalendar)
return window.reminderCacheForCalendar[date]; // use calendar cache
if (!config.macros.date.reminders)
config.macros.date.reminders = indexReminders(date,90); // create a 90-day leadtime reminder cache
return (config.macros.date.reminders[date]);
}
function addRemindersToPopup(p,when,format)
{
if(window.findTiddlersWithReminders==undefined) return; // reminder plugin not installed
var indent = String.fromCharCode(160)+String.fromCharCode(160);
var reminders=findTiddlersWithReminders(when, [0,31],null,null,1);
createTiddlyElement(p,'div',null,null,'reminders ('+(reminders.length||'none')+')');
for(var t=0; t<reminders.length; t++) {
link = createTiddlyLink(createTiddlyElement(p,'li'),reminders[t].tiddler,false);
var diff=reminders[t].diff;
diff=(diff<1)?'Today':((diff==1)?'Tomorrow':diff+' days');
var txt=(reminders[t].params['title'])?reminders[t].params['title']:reminders[t].tiddler;
link.appendChild(document.createTextNode(indent+diff+' - '+txt));
}
if (readOnly) return; // readonly... omit 'new reminder...' command
var rem='\\<\\<reminder day:%0 month:%1 year:%2 title:"Enter a reminder title here"\\>\\>';
rem=rem.format([when.getDate(),when.getMonth()+1,when.getYear()+1900]);
var cmd="<<newTiddler label:[["+indent+"new reminder...]] prompt:[[add a reminder to '%0']]"
+" title:[[%0]] text:{{var t=store.getTiddlerText('%0','');t+(t.length?'\\n':'')+'%1'}} tag:%2>>";
wikify(cmd.format([when.formatString(format),rem,config.options.txtCalendarReminderTags||'']),
createTiddlyElement(p,'li'));
}
//}}}
/***
|Name|DatePluginConfig|
|Source|http://www.TiddlyTools.com/#DatePluginConfig|
|Documentation|http://www.TiddlyTools.com/#DatePluginInfo|
|Version|2.6.0|
|Author|Eric Shulman|
|License|http://www.TiddlyTools.com/#LegalStatements <br>and [[Creative Commons Attribution-ShareAlike 2.5 License|http://creativecommons.org/licenses/by-sa/2.5/]]|
|~CoreVersion|2.1|
|Type|plugin|
|Requires||
|Overrides||
|Description|formats, background colors and other optional settings for DatePlugin|
***/
// // Default popup content display options (can be overridden by cookies)
//{{{
if (config.options.chkDatePopupHideCreated===undefined)
config.options.chkDatePopupHideCreated=false;
if (config.options.chkDatePopupHideChanged===undefined)
config.options.chkDatePopupHideChanged=false;
if (config.options.chkDatePopupHideTagged===undefined)
config.options.chkDatePopupHideTagged=false;
if (config.options.chkDatePopupHideReminders===undefined)
config.options.chkDatePopupHideReminders=false;
//}}}
// // show Julian date number below regular date
//{{{
if (config.options.chkShowJulianDate===undefined)
config.options.chkShowJulianDate=false;
//}}}
// // fixed-date annual holidays
//{{{
config.macros.date.holidays=[
"01/01", // NewYearsDay,
"07/04", // US Independence Day
"07/24" // Eric's Birthday (hooray!)
];
//}}}
// // weekend map (1=weekend, 0=weekday)
//{{{
config.macros.date.weekend=[ 1,0,0,0,0,0,1 ]; // day index values: sun=0, mon=1, tue=2, wed=3, thu=4, fri=5, sat=6
//}}}
// // date display/link formats
//{{{
config.macros.date.format="YYYY.0MM.0DD"; // default date display format
config.macros.date.linkformat="YYYY.0MM.0DD"; // 'dated tiddler' link format
//}}}
// // When displaying a calendar (see [[CalendarPlugin]]), you can customize the colors/styles that are applied to the calendar dates by modifying the values and/or functions below:
//{{{
// default calendar colors
config.macros.date.weekendbg="#c0c0c0";
config.macros.date.holidaybg="#ffaace";
config.macros.date.createdbg="#bbeeff";
config.macros.date.modifiedsbg="#bbeeff";
config.macros.date.linkedbg="#babb1e";
config.macros.date.remindersbg="#c0ffee";
// apply calendar styles
function setDateStyle(place,link,weekend) {
// alias variable names for code readability
var date=link.date;
var fmt=link.linkformat;
var linkto=date.formatString(fmt);
var cmd=config.macros.date;
if ((weekend!==undefined?weekend:isWeekend(date))&&(cmd.weekendbg!=""))
{ place.style.background = cmd.weekendbg; }
if (hasModifieds(date)||hasCreateds(date)||hasTagged(date,fmt))
{ link.style.fontStyle="normal"; link.style.fontWeight="bold"; }
if (hasReminders(date))
{ link.style.textDecoration="underline"; }
if (isToday(date))
{ link.style.border="1px solid black"; }
if (isHoliday(date)&&(cmd.holidaybg!=""))
{ place.style.background = cmd.holidaybg; }
if (hasCreateds(date)&&(cmd.createdbg!=""))
{ place.style.background = cmd.createdbg; }
if (hasModifieds(date)&&(cmd.modifiedsbg!=""))
{ place.style.background = cmd.modifiedsbg; }
if ((hasTagged(date,fmt)||store.tiddlerExists(linkto))&&(cmd.linkedbg!=""))
{ place.style.background = cmd.linkedbg; }
if (hasReminders(date)&&(cmd.remindersbg!=""))
{ place.style.background = cmd.remindersbg; }
if (isToday(date)&&(cmd.todaybg!=""))
{ place.style.background = cmd.todaybg; }
if (config.options.chkShowJulianDate) {
var m=[0,31,59,90,120,151,181,212,243,273,304,334];
var d=date.getDate()+m[date.getMonth()];
var y=date.getFullYear();
if (date.getMonth()>1 && (y%4==0 && y%100!=0) || y%400==0) d++; // after February in a leap year
wikify("@@font-size:80%;<br>"+d+"@@",place);
}
var t=store.getTiddlerText(linkto,'')
if (config.options.chkInlineCalendarJournals && t.length) wikify('<br>'+t,place);
}
//}}}
|Name|DatePluginInfo|
|Source|http://www.TiddlyTools.com/#DatePlugin|
|Documentation|http://www.TiddlyTools.com/#DatePluginInfo|
|Version|2.7.1|
|Author|Eric Shulman|
|License|http://www.TiddlyTools.com/#LegalStatements <br>and [[Creative Commons Attribution-ShareAlike 2.5 License|http://creativecommons.org/licenses/by-sa/2.5/]]|
|~CoreVersion|2.1|
|Type|documentation|
|Requires||
|Overrides||
|Description|documentation for DatePlugin|
This plugin provides a general approach to displaying formatted dates and/or links and popups that permit easy navigation and management of tiddlers based on their creation/modification dates.
!!!!!Usage
<<<
This plugin display formatted dates, for the specified year, month, day using number values or mathematical expressions such as (Y+1) or (D+30). Optionally, you can create a link from the formatted output to a 'dated tiddler' for quick blogging or create a popup menu that includes the dated tiddler link plus links to tiddlers that were created/changed on that date, or are tagged with that date, as well as links to any pending reminders for the coming 31 days (if the RemindersPlugin is installed). This plugin also provides a public API for easily incorporating formatted date output (with or without the links/popups) into other plugins, such as calendar generators, etc.
This plugin defines a macro: {{{<<date [mode] [date] [format] [linkformat]>>}}}. All of the macro parameters are optional and, in it's simplest form, {{{<<date>>}}}, it is equivalent to the ~TiddlyWiki core macro, {{{<<today>>}}}.
However, where {{{<<today>>}}} simply inserts the current date/time in a predefined format (or custom format, using {{{<<today [format]>>}}}), the {{{<<date>>}}} macro's parameters take it much further than that:
* [mode] is either ''display'', ''link'' or ''popup''. If omitted, it defaults to ''display''. This param let's you select between simply displaying a formatted date, or creating a link to a specific 'date titled' tiddler or a popup menu containing a dated tiddler link, plus links to changes and reminders.
* [date] lets you enter ANY date (not just today) as ''year, month, and day values or simple mathematical expressions'' using pre-defined variables, Y, M, and D for the current year, month and day, repectively. You can display the modification date of the current tiddler by using the keyword: ''tiddler'' in place of the year, month and day parameters. Use ''tiddler://name-of-tiddler//'' to display the modification date of a specific tiddler. You can also use keywords ''today'' or ''filedate'' to refer to these //dynamically changing// date/time values.
* [format] and [linkformat] uses standard ~TiddlyWiki date formatting syntax. The default is "YYYY.0MM.0DD"
>^^''DDD'' - day of week in full (eg, "Monday"), ''DD'' - day of month, ''0DD'' - adds leading zero^^
>^^''MMM'' - month in full (eg, "July"), ''MM'' - month number, ''0MM'' - adds leading zero^^
>^^''YYYY'' - full year, ''YY'' - two digit year, ''hh'' - hours, ''mm'' - minutes, ''ss'' - seconds^^
>^^//note: use of hh, mm or ss format codes is only supported with ''tiddler'', ''today'' or ''filedate'' values//^^
* [linkformat] - specify an alternative date format so that the title of a 'dated tiddler' link can have a format that differs from the date's displayed format
In addition to the macro syntax, DatePlugin also provides a public javascript API so that other plugins that work with dates (such as calendar generators, etc.) can quickly incorporate date formatted links or popups into their output:
''{{{showDate(place, date, mode, format, linkformat, autostyle, weekend)}}}''
Note that in addition to the parameters provided by the macro interface, the javascript API also supports two optional true/false parameters:
* [autostyle] - when true, the font/background styles of formatted dates are automatically adjusted to show the date's status: 'today' is boxed, 'changes' are bold, 'reminders' are underlined, while weekends and holidays (as well as changes and reminders) can each have a different background color to make them more visibly distinct from each other.
* [weekend] - true indicates a weekend, false indicates a weekday. When this parameter is omitted, the plugin uses internal defaults to automatically determine when a given date falls on a weekend.
<<<
!!!!!Examples
<<<
The current date: <<date>>
The current time: <<date today "0hh:0mm:0ss">>
Today's blog: <<date link today "DDD, MMM DDth, YYYY">>
Recent blogs/changes/reminders: <<date popup Y M D-1 "yesterday">> <<date popup today "today">> <<date popup Y M D+1 "tomorrow">>
The first day of next month will be a <<date Y M+1 1 "DDD">>
This tiddler (DatePlugin) was last updated on: <<date tiddler "DDD, MMM DDth, YYYY">>
The SiteUrl was last updated on: <<date tiddler:SiteUrl "DDD, MMM DDth, YYYY">>
This document was last saved on <<date filedate "DDD, MMM DDth, YYYY at 0hh:0mm:0ss">>
<<date 2006 07 24 "MMM DDth, YYYY">> will be a <<date 2006 07 24 "DDD">>
<<<
!!!!!Revisions
<<<
2009.05.31 [2.7.1] in addRemindersToPopup(), 'new reminder....' command now uses {{{<<newTiddler>>}}} macro. Also, general code reduction/cleanup.
2008.03.08 [2.7.0] in addModifiedsToPopup(), if a tiddler was created on the specified date, don't list it in the 'changed' section of the popup. Based on a request from Kashgarinn
2008.01.31 [2.6.0] refactored date style logic into separate setDateStyle() function so it can be overridden by a custom definition. See [[DatePluginConfig]].
2008.01.11 [2.5.0] added options to selectively suppress created/changes/tagged/reminders popup content
2008.01.08 [*.*.*] plugin size reduction: documentation moved to DatePluginInfo
2007.11.21 [2.4.0] added hasTagged() and addTaggedToPopup() to list any tiddlers that has been tagged using the title of the dated journal tiddler asa tag value (i.e., the tiddlers that will be listed in the standard "tagging" display when viewing the journal tiddler itself). Based on a request from Coby.
2007.06.20 [2.3.1] in onClickDatePopup(), use Popup.show() instead of deprecated ScrollToTiddlerPopup(). Fixes fatal error that prevents popups from being properly displayed
2007.05.31 [2.3.0] list "created" tiddlers in date popup. Also, force re-cache of created/modified indices when displaying current date and store.isDirty(), so that popup is kept in sync with tiddler changes.
2006.05.09 [2.2.1] added "todaybg" handling to set background color of current date. Also, honor excludeLists tag when getting lists of tiddlers. Based on suggestions by Mark Hulme.
2006.05.05 [2.2.0] added "linkedbg" handling to set background color when a 'dated tiddler' exists. Based on a suggestion by Mark Hulme.
2006.03.08 [2.1.2] add 'override leadtime' flag param in call to findTiddlersWithReminders(), and add "Enter a title" default text to new reminder handler. Thanks to Jeremy Sheeley for these additional tweaks.
2006.03.06 [2.1.0] hasReminders() nows uses window.reminderCacheForCalendar[] when present. If calendar cache is not present, indexReminders() now uses findTiddlersWithReminders() with a 90-day look ahead to check for reminders. Also, switched default background colors for autostyled dates: reminders are now greenish ("c0ffee") and holidays are now reddish ("ffaace").
2006.02.14 [2.0.5] when readOnly is set (by TW core), omit "new reminders..." popup menu item and, if a "dated tiddler" does not already exist, display the date as simple text instead of a link.
2006.02.05 [2.0.4] added var to variables that were unintentionally global. Avoids FireFox 1.5.0.1 crash bug when referencing global variables
2006.01.18 [2.0.3] In 1.2.x the tiddler editor's text area control was given an element ID=("tiddlerBody"+title), so that it was easy to locate this field and programmatically modify its content. With the addition of configuration templates in 2.x, the textarea no longer has an ID assigned. To find this control we now look through all the child nodes of the tiddler editor to locate a "textarea" control where attribute("edit") equals "text", and then append the new reminder to the contents of that control.
2006.01.11 [2.0.2] correct 'weekend' override detection logic in showDate()
2006.01.10 [2.0.1] allow custom-defined weekend days (default defined in config.macros.date.weekend[] array)
added flag param to showDate() API to override internal weekend[] array
2005.12.27 [2.0.0] Update for TW2.0
Added parameter handling for 'linkformat'
2005.12.21 [1.2.2] FF's date.getYear() function returns 105 (for the current year, 2005). When calculating a date value from Y M and D expressions, the plugin adds 1900 to the returned year value get the current year number. But IE's date.getYear() already returns 2005. As a result, plugin calculated date values on IE were incorrect (e.g., 3905 instead of 2005). Adding +1900 is now conditional so the values will be correct on both browsers.
2005.11.07 [1.2.1] added support for "tiddler" dynamic date parameter
2005.11.06 [1.2.0] added support for "tiddler:title" dynamic date parameter
2005.11.03 [1.1.2] when a reminder doesn't have a specified title parameter, use the title of the tiddler that contains the reminder as "fallback" text in the popup menu. Based on a suggestion from BenjaminKudria.
2005.11.03 [1.1.1] Temporarily bypass hasReminders() logic to avoid excessive overhead from generating the indexReminders() cache. While reminders can still appear in the popup menu, they just won't be indicated by auto-styling the date number that is displayed. This single change saves approx. 60% overhead (5 second delay reduced to under 2 seconds).
2005.11.01 [1.1.0] corrected logic in hasModifieds() and hasReminders() so caching of indexed modifieds and reminders is done just once, as intended. This should hopefully speed up calendar generators and other plugins that render multiple dates...
2005.10.31 [1.0.1] documentation and code cleanup
2005.10.31 [1.0.0] initial public release
2005.10.30 [0.9.0] pre-release
<<<
On this page I'll compile links and lists for useful resources for research proposal and funding. Not all of the links here are geared to people in our field, but may nevertheless contain useful advice.
You'll notice funding involves a lot of acronyms. Don't be intimidated. Read up and soon you'll be talking shop like a pro!
[[NSF Grant Proposal Guide - 2009|http://www.nsf.gov/pubs/policydocs/pappguide/nsf09_29/gpg_index.jsp]]
[[NSF Grant Proposal Guide - 2010|http://www.nsf.gov/publications/pub_summ.jsp?ods_key=nsf101]]
[[NIH REPORTER|http://projectreporter.nih.gov/reporter.cfm]]
[[Writing Tips and Resources for Research Proposals|http://www.cumc.columbia.edu/dept/gsas/ac_programs/writing.htm]]
[[Art of Grantwriting (HFSP)|http://www.hfsp.org/how/ArtOfGrants.htm]]
[[Tips On Writing a Grant Proposal (Environmental Protections Agency)|http://epa.gov/ogd/recipient/tips.htm]]
[[Collection of Links about Research Proposal Writing (Montana State University)|http://www.montana.edu/wwwvr/osp/propwrit.html]]
[[Writing a Good Grant Proposal (Microsoft)|http://research.microsoft.com/en-us/um/people/simonpj/papers/Proposal.html]]
[[The Business of Science (NIH)|http://www.facs.org/cqi/src/proposal.html]]
[[General Grantwriting Links and Resources|http://www.proposalwriter.com/grants.html#Grant%20Resources]]
[[Guide for Grantwriting (Michigan State)|http://www.learnerassociates.net/proposal/]]
[[NIH Grant Cycle|http://www.niaid.nih.gov/ncn/grants/cycle/default.htm]]
[[How to Write a Grant (NIH, NINDS)|http://www.ninds.nih.gov/funding/write_grant_doc.htm]]
[[Links and Lists (UCSB)|http://guides.library.ucsb.edu/content.php?pid=61909&sid=455324]]
I also maintain a google document for [[Graduate and Postdoc Funding Opportunities|https://docs.google.com/Doc?docid=0AejyilBL_oWDZGNjOTR4ZG1fMTZjNTUzam5neg&hl=en]] that I can share with you - please add to these lists and help keep these documents updated. Many of these have also been added to the [[UCSD Cogsci Department's Grad Funding List|http://www.cogsci.ucsd.edu/graduate-study/files/Grad_Fellowship_Info.pdf]].
Resources
[[UCSD Search for University Research Funding (SURF) Database|http://research.ucsd.edu/surf/index.aspx]]
[[UCLA Graduate & Postdoctoral Extramural Support (GRAPES) Database|http://www.gdnet.ucla.edu/asis/grapes/search.asp]]
[[UCSD Grad Funding Blog|http://ucsdgraduatefunding.wordpress.com/]]
[[Links to Major Fellowships|http://ogsrweb2.ucsd.edu/fellowships/major_fellowships.htm]]
[[UCSD Kavli Institute Innovative Research Awards|http://kibm.ucsd.edu/research/proposals/]]
[[Society for Neuroscience Fellowships an Awards|http://www.sfn.org/index.aspx?pagename=FellowshipAndAwards]]
[[Sigma Xi Grants|http://www.sigmaxi.org/programs/giar/index.shtml]]
Links:
[[Stages of Proposal Writing|http://science-professor.blogspot.com/2008/05/five-stages-of-proposal-writing.html]]
[[How to Prevent your Grant from Getting Funded|http://writedit.wordpress.com/2008/04/02/how-to-prevent-grant-funding/]]
See also [[Your Career]], [[Writing]].
Graduate students are not admitted to the lab but need to be accepted by a graduate program we are affiliated with (see links to the Cognitive Science and Neurosciences programs below). You are encouraged to [[contact Dr. Saygin|mailto:asaygin@cogsci.ucsd.edu]] to ask whether there are any openings, and to discuss the lab's current research foci. But we cannot guarantee or comment on admission, which is a decision made by departmental faculty.
If you do contact Dr. Saygin, please include your CV and a brief statement of research interests and career goals (see [[How to contact a PI]]).
Graduate students who have their own funding gain a distinct advantage in being admitted to graduate school. See [[Funding]].
We take career development for graduate students seriously. This wiki contains links to resources that will be useful in navigating graduate school and preparing yourself for different career paths post PhD.
Inquiries from students who would like to apply for lab rotations are welcome. Our lab rotations tend to be hands on and geared towards acquiring skills applicable to cognitive neuroscience research. Students typically have individual or group projects that involve collection or analysis of data. Students can also get training in computer programming for experiment design and analysis. All rotation students are expected to keep lab notebooks, and to prepare written reports on the project at least quarterly. Rotation students are encouraged to take on meaningful research projects that can lead to publications. For this reason, we usually prefer rotations that are 2 quarters or longer. This does not mean you have to receive lab rotaion credits; students may continue projects they start as part of a lab rotation either informally, or by adding "laboratory research" credits. Rotation students are full members of the lab as long as they're working in the lab. This means they can expect to receive training and mentoring from the PI and peers, and they're expected to follow all lab policies and participate in lab activities. Our [[Lab Meetings]] include both "journal club" style discussions of important papers in cognitive neuroscience, and regular sessions on career development. If you are a graduate student interested in doing a lab rotation, you should [[contact Dr. Saygin|mailto:asaygin@cogsci.ucsd.edu]].
Local Info:
[[Graduate Study at UCSD Cognitive Science|http://www.cogsci.ucsd.edu/graduate-study/]]
[[UCSD Neurosciences Graduate Program|http://neurograd.ucsd.edu/]]
[[Office of Graduate Studies|http://ogs.ucsd.edu/Pages/default.aspx]]
[[UCSD Grad Funding Blog|http://ucsdgraduatefunding.wordpress.com/]]
[[New Grad Student FAQ|http://www.cogsci.ucsd.edu/graduate-study/resources/resources-faq.php]]
Links, Articles, Resources:
[[Illustrated guide to the PhD|http://matt.might.net/articles/phd-school-in-pictures]]: If this depresses you, don't even start!
[[Naturally Obsessed: The Making of a Scientist (Movie)|http://www.thirteen.org/naturally-obsessed/]]
[[How to Write a Dissertation|http://members.verizon.net/~vze3fs8i/air/airphd.html]]
[[Dear Former Graduate Student (Massimo Boninsegni)|http://www.cogsci.ucsd.edu/~asaygin/Massimo_Dear_Former_Grad_Student.pdf]] (A must-read for postdocs and graduate students)
[[Some Modest Advice for Graduate Students|http://www.yale.edu/eeb/stearns/advice.htm]]
[[A Less Cynical Reply to the Above|http://faculty.washington.edu/hueyrb/pdfs/reply.pdf]]
[[On Confidence|http://science-professor.blogspot.com/2008/02/cruel-unreasonable.html]]
[[Some Frank Advice for Graduate School|http://www.daniel-lemire.com/blog/advice-for-graduate-students/]]
[[Staying Healthy, and Even Happy, in Graduate School|http://chronicle.com/article/Balance-Sheet-Staying/32576]]
[[International Student?|http://www.phdcomics.com/comics/archive/phd062308s.gif]]
[[Choosing a Thesis Lab after Rotations|http://trainingprofessor.blogspot.com/2009/07/choosing-thesis-lab-based-on-rotation.html]]
[[Changing Advisors|http://science-professor.blogspot.com/2009/09/moving-grads.html]]
[[Planet of the Professors|http://chronicle.com/article/Planet-of-the-Professors/46950/]]
[[On Responsibilities of Grant-Funded Students|http://science-professor.blogspot.com/2009/02/pay-per-research.html]]
[[The PhD Experience (Mihir Bellare, UCSD CSE)|http://cseweb.ucsd.edu/users/mihir/phd.html]]
[[More on Grant-Funded Students|http://science-professor.blogspot.com/2009/01/levels-of-work.html]]
[[3 Qualities for Success in Grad School (and beyond)|http://matt.might.net/articles/successful-phd-students/]]
[[Graduate School Soul Searching|http://chemicalbilology.blogspot.com/2008/08/graduate-school-soul-searching.html]]
[[Project Runway and Graduate School|http://chronicle.com/article/Fashion-Lessons-for-Graduate/48773/]]
See also [[Advice]], [[(Business) Papers]], [[Courses]], [[Funding]], [[Joining the Lab]], [[Lab Notebooks]], [[Lab Policies]], [[Productivity]], [[Work-Life Balance]], [[Writing]], [[Your Career]], [[LINKS]], [[PEOPLE]] and [[LAB]]
Neuroscience related videos, animations, demos and lectures from Howard Hughes Medical Institute. Cool stuff. And free!
[[HHMI Lectures | http://www.hhmi.org/biointeractive/lectures/index.html]]
[[HHMI's BioInteractive - Neuroscience Video Clips|http://www.hhmi.org/biointeractive/neuroscience/video.html]]
[[HHMI's BioInteractive - Animations|http://www.hhmi.org/biointeractive/animations/index.html]]
[[HHMI's BioInteractive - Virtual Labs|http://www.hhmi.org/biointeractive/vlabs/index.html]]
Explore more at the [[HHMI Home Page|http://www.hhmi.org/]]
How to contact someone (including me) about joining their lab:
By the time you're contacting the PI to ask about joining their lab, you should already know the lab's main research topics and methods, have read their recent [[PUBLICATIONS]], and found a good fit between your goals and interests and the lab you want to join - correct? If not, this is what you start with.
Then you can e-mail the PI to introduce yourself and briefly explain your research interests and career goals and ask if there are any appropriate research opportunities in their lab at this time. Be sure to specify what you are looking for (postdoc, graduate study, research assistantship, volunteering, etc). Include a CV. Be prepared to provide names of 2-3 individuals who can write recommendations for you. Of course, you should notify these people in advance and tell them about your plans to apply for research positions. If you are going to be visiting the city that the lab is located in, or attending a conference that the PI might be attending, you might want to mention this as well.
Common mistakes:
- Do not send the same letter to everyone. It is very easy to tell apart a well-thought out inquiry from a generic e-mail to a large group of professors.
- Do not send an email that is vague (e.g., I am very interested in your research). Professors like to see that you have done your homework before contacting them beyond being interested in "their research".
- Check your email settings and include your name in your message. Your message may appear to come from surfergirl891 or something similar, which is not what you want.
- Do not assume all science professors are male and address the PI as "Sir" or "Mr" (or "Miss" or "Mrs" for that matter). The PI's gender is irrelevant. "Dr" or "Professor" are appropriate greetings.
Links:
[[Writing to a PI|http://science-professor.blogspot.com/2007/12/writing-to-me.html]]
[[Another Perspective|http://scienceblogs.com/drugmonkey/2008/09/dear_person_seeking_training.php]]
[[How Not to Write to a PI|http://gentlemansc.blogspot.com/2008/11/another-example-of-how-not-to-get-in-to.html]]
[[On Recommendation Letters|http://bluelabcoats.wordpress.com/2008/07/20/letters-of-recommendation/]]
[[Female Science Professor's Guide to Academic Etiquette|http://science-professor.blogspot.com/2008/08/fsps-guide-to-academic-etiquette.html]]
All lab members should be familiar with Human Subjects Protections. A good resource is the UCSD IRB web pages, which are [[here|http://irb.ucsd.edu/]].
Anyone involved with experiments in the lab has to complete online training in Human Subjects Research as of Oct 2009. Information is provided [[here|http://irb.ucsd.edu/training.shtml]] and [[here|http://research.ucsd.edu/training.html]].
This is very important and is not optional. [[The training|https://www.citiprogram.org/Default.asp?]], and compliance with everything that you will learn, is required by UCSD's Institutional Review Board, which oversees all research on campus, following federal regulations on the protection of human subjects.
Every member of the lab needs to take the Social-Behavioral Protection of Human
Research Subjects module. In addition, some members may need to also take the Biomedical module (before you can be involved with imaging or patient research). Anyone working with patient populations will also need to complete the [[HIPAA tutorial|http://132.239.155.52/hipaatutorial/login.html]].
Once you take the tutorial(s), please email me a (pdf) copy of your completion certificate. After this, we will also go over our lab's IRB approval, consent forms, and procedures.
Behavioral experiments have to be approved by Social Sciences IRB and imaging experiments by School of Medicine IRB. You may not collect data in the lab without first checking with the PI about whether your project and all personnel involved are already approved under the current IRB approval. If not, you will need to submit and get approval for the project separately.
You should become familiar with [[Experimetrix|https://experimetrix2.com/ucsd/]], the online scheduling tool that is provided by the Psychology department. Be sure to understand participants' rights before you begin testing.
You must have a copy of the documents listed below prior to testing subjects. Keep the documents organized and ready before the subject's arrival.
- Copy of the current and stamped Human Subjects Consent Form. Consent forms are renewed annually and cannot be used past the date of expiration.
- Copy of current UCSD IRB approved protocol.
- You must be listed as a co-investigator on your supervisor’s current and approved UCSD human subject protocol.
- Copy of the UCSD’s IRB department letter of approval for your protocol.
- Please check with your PI or your supervisor to find out if there are any other forms that are needed for your experiment.
See also, [[Data Collection]], [[Lab Policies]], [[Research Integrity and Ethics]], and [[LAB]]
/***
|Name|ImportTiddlersPlugin|
|Source|http://www.TiddlyTools.com/#ImportTiddlersPlugin|
|Documentation|http://www.TiddlyTools.com/#ImportTiddlersPluginInfo|
|Version|4.5.1|
|Author|Eric Shulman|
|License|http://www.TiddlyTools.com/#LegalStatements <br>and [[Creative Commons Attribution-ShareAlike 2.5 License|http://creativecommons.org/licenses/by-sa/2.5/]]|
|~CoreVersion|2.1|
|Type|plugin|
|Requires||
|Overrides|config.macros.importTiddlers.handler|
|Description|interactive controls for import/export with filtering.|
Combine tiddlers from any two TiddlyWiki documents. An interactive control panel lets you pick a source document and import selected tiddlers, with prompting for skip, rename, merge or replace actions when importing tiddlers that match existing titles. Generates a detailed report of import 'history' in ImportedTiddlers.
!!!!!Documentation
<<<
see [[ImportTiddlersPluginInfo]] for details
<<<
!!!!!interactive control panel:
<<<
<<importTiddlers inline>>
{{clear{
^^(see also: [[ImportTiddlers]] shadow tiddler)^^}}}
<<<
!!!!!Revisions
<<<
2009.07.03 [4.5.1] fixups for TW252: doHttp() doesn't return XHR and convertUTF8ToUnicode() not needed for local I/O
2009.05.04 [4.5.0] import from CSV-formatted files
|please see [[ImportTiddlersPluginInfo]] for additional revision details|
2005.07.20 [1.0.0] Initial Release
<<<
!!!!!Code
***/
//{{{
version.extensions.ImportTiddlersPlugin= {major: 4, minor: 5, revision: 1, date: new Date(2009,7,3)};
// IE needs explicit global scoping for functions/vars called from browser events
window.onClickImportButton=onClickImportButton;
window.refreshImportList=refreshImportList;
// default cookie/option values
if (!config.options.chkImportReport) config.options.chkImportReport=true;
// default shadow definition
config.shadowTiddlers.ImportTiddlers='<<importTiddlers inline>>';
// use shadow tiddler content in backstage panel
if (config.tasks) config.tasks.importTask.content='<<tiddler ImportTiddlers>>' // TW2.2 or above
//}}}
//{{{
// backward-compatiblity for TW2.0.x and TW1.2.x
if (config.macros.importTiddlers==undefined) config.macros.importTiddlers={};
if (typeof merge=='undefined') {
function merge(dst,src,preserveExisting) {
for(var i in src) { if(!preserveExisting || dst[i] === undefined) dst[i] = src[i]; }
return dst;
}
}
if (config.browser.isGecko===undefined)
config.browser.isGecko=(config.userAgent.indexOf('gecko')!=-1);
//}}}
//{{{
merge(config.macros.importTiddlers,{
$: function(id) { return document.getElementById(id); }, // abbreviation
label: 'import tiddlers',
prompt: 'Copy tiddlers from another document',
openMsg: 'Opening %0',
openErrMsg: 'Could not open %0 - error=%1',
readMsg: 'Read %0 bytes from %1',
foundMsg: 'Found %0 tiddlers in %1',
filterMsg: "Filtered %0 tiddlers matching '%1'",
summaryMsg: '%0 tiddler%1 in the list',
summaryFilteredMsg: '%0 of %1 tiddler%2 in the list',
plural: 's are',
single: ' is',
countMsg: '%0 tiddlers selected for import',
processedMsg: 'Processed %0 tiddlers',
importedMsg: 'Imported %0 of %1 tiddlers from %2',
loadText: 'please load a document...',
closeText: 'close',
doneText: 'done',
startText: 'import',
stopText: 'stop',
local: true, // default to import from local file
src: '', // path/filename or URL of document to import (retrieved from SiteUrl)
proxy: '', // URL for remote proxy script (retrieved from SiteProxy)
useProxy: false, // use specific proxy script in front of remote URL
inbound: null, // hash-indexed array of tiddlers from other document
newTags: '', // text of tags added to imported tiddlers
addTags: true, // add new tags to imported tiddlers
listsize: 10, // # of lines to show in imported tiddler list
importTags: true, // include tags from remote source document when importing a tiddler
keepTags: true, // retain existing tags when replacing a tiddler
sync: false, // add 'server' fields to imported tiddlers (for sync function)
lastFilter: '', // most recent filter (URL hash) applied
lastAction: null, // most recent collision button performed
index: 0, // current processing index in import list
sort: '' // sort order for imported tiddler listbox
});
//}}}
//{{{
// hijack core macro handler
if (config.macros.importTiddlers.coreHandler==undefined)
config.macros.importTiddlers.coreHandler=config.macros.importTiddlers.handler;
config.macros.importTiddlers.handler = function(place,macroName,params,wikifier,paramString,tiddler) {
if (!params[0] || params[0].toLowerCase()=='core') { // default to built in
if (config.macros.importTiddlers.coreHandler)
config.macros.importTiddlers.coreHandler.apply(this,arguments);
else
createTiddlyButton(place,this.label,this.prompt,onClickImportMenu);
} else if (params[0]=='link') { // show link to floating panel
createTiddlyButton(place,params[1]||this.label,params[2]||this.prompt,onClickImportMenu);
} else if (params[0]=='inline') {// show panel as INLINE tiddler content
createImportPanel(place);
this.$('importPanel').style.position='static';
this.$('importPanel').style.display='block';
} else if (config.macros.loadTiddlers)
config.macros.loadTiddlers.handler(place,macroName,params); // any other params: loadtiddlers
}
//}}}
//{{{
// Handle link click to create/show/hide control panel
function onClickImportMenu(e) { var e=e||window.event;
var parent=resolveTarget(e).parentNode;
var panel=document.getElementById('importPanel');
if (panel==undefined || panel.parentNode!=parent) panel=createImportPanel(parent);
var isOpen=panel.style.display=='block';
if(config.options.chkAnimate)
anim.startAnimating(new Slider(panel,!isOpen,false,'none'));
else
panel.style.display=isOpen?'none':'block';
e.cancelBubble = true; if (e.stopPropagation) e.stopPropagation(); return(false);
}
//}}}
//{{{
// Create control panel: HTML, CSS
function createImportPanel(place) {
var cmi=config.macros.importTiddlers; // abbrev
var panel=cmi.$('importPanel');
if (panel) { panel.parentNode.removeChild(panel); }
setStylesheet(cmi.css,'importTiddlers');
panel=createTiddlyElement(place,'span','importPanel',null,null)
panel.innerHTML=cmi.html;
refreshImportList();
var siteURL=store.getTiddlerText('SiteUrl'); if (!siteURL) siteURL='';
cmi.$('importSourceURL').value=siteURL;
cmi.src=siteURL;
var siteProxy=store.getTiddlerText('SiteProxy'); if (!siteProxy) siteProxy='SiteProxy';
cmi.$('importSiteProxy').value=siteProxy;
cmi.proxy=siteProxy;
if (config.browser.isGecko) { // FF3 FIXUP
cmi.$('fileImportSource').style.display='none';
cmi.$('importLocalPanelFix').style.display='block';
}
cmi.$('chkSync').checked=cmi.sync;
cmi.$('chkImportTags').checked=cmi.importTags;
cmi.$('chkKeepTags').checked=cmi.keepTags;
cmi.$('chkAddTags').checked=cmi.addTags;
cmi.$('txtNewTags').value=cmi.newTags;
cmi.$('txtNewTags').style.display=cmi.addTags?'block':'none';
cmi.$('chkSync').checked=cmi.sync;
cmi.$('chkImportReport').checked=config.options.chkImportReport;
return panel;
}
//}}}
//{{{
config.macros.importTiddlers.css = '\
#importPanel {\
display: none; position:absolute; z-index:11; width:35em; right:105%; top:3em;\
background-color: #eee; color:#000; font-size: 8pt; line-height:110%;\
border:1px solid black; border-bottom-width: 3px; border-right-width: 3px;\
padding: 0.5em; margin:0em; -moz-border-radius:1em;-webkit-border-radius:1em;\
}\
#importPanel a, #importPanel td a { color:#009; display:inline; margin:0px; padding:1px; }\
#importPanel table { width:100%; border:0px; padding:0px; margin:0px; font-size:8pt; line-height:110%; background:transparent; }\
#importPanel tr { border:0px;padding:0px;margin:0px; background:transparent; }\
#importPanel td { color:#000; border:0px;padding:0px;margin:0px; background:transparent; }\
#importPanel select { width:100%;margin:0px;font-size:8pt;line-height:110%;}\
#importPanel input { width:98%;padding:0px;margin:0px;font-size:8pt;line-height:110%}\
#importPanel .box { border:1px solid #000; background-color:#eee; padding:3px 5px; margin-bottom:5px; -moz-border-radius:5px;-webkit-border-radius:5px;}\
#importPanel .topline { border-top:1px solid #999; padding-top:2px; margin-top:2px; }\
#importPanel .rad { width:auto; }\
#importPanel .chk { width:auto; margin:1px;border:0; }\
#importPanel .btn { width:auto; }\
#importPanel .btn1 { width:98%; }\
#importPanel .btn2 { width:48%; }\
#importPanel .btn3 { width:32%; }\
#importPanel .btn4 { width:23%; }\
#importPanel .btn5 { width:19%; }\
#importPanel .importButton { padding: 0em; margin: 0px; font-size:8pt; }\
#importPanel .importListButton { padding:0em 0.25em 0em 0.25em; color: #000000; display:inline }\
#backstagePanel #importPanel { left:10%; right:auto; }\
';
//}}}
//{{{
config.macros.importTiddlers.html = '\
<!-- source and report -->\
<table><tr><td align=left>\
import from\
<input type="radio" class="rad" name="importFrom" id="importFromFile" value="file" CHECKED\
onclick="onClickImportButton(this,event)" title="show file controls"> local file\
<input type="radio" class="rad" name="importFrom" id="importFromWeb" value="http"\
onclick="onClickImportButton(this,event)" title="show web controls"> web server\
</td><td align=right>\
<input type=checkbox class="chk" id="chkImportReport"\
onClick="config.options[\'chkImportReport\']=this.checked;"> create report\
</td></tr></table>\
\
<div class="box" id="importSourcePanel" style="margin:.5em">\
<div id="importLocalPanel" style="display:block;margin-bottom:2px;"><!-- import from local file -->\
enter or browse for source path/filename<br>\
<input type="file" id="fileImportSource" size=57 style="width:100%"\
onKeyUp="config.macros.importTiddlers.src=this.value"\
onChange="config.macros.importTiddlers.src=this.value;document.getElementById(\'importLoad\').onclick()">\
<div id="importLocalPanelFix" style="display:none"><!-- FF3 FIXUP -->\
<input type="text" id="fileImportSourceFix" style="width:90%"\
title="Enter a path/file to import"\
onKeyUp="config.macros.importTiddlers.src=this.value"\
onChange="config.macros.importTiddlers.src=this.value;document.getElementById(\'importLoad\').onclick()">\
<input type="button" id="fileImportSourceFixButton" style="width:7%" value="..."\
title="Select a path/file to import"\
onClick="var r=config.macros.importTiddlers.askForFilename(this); if (!r||!r.length) return;\
document.getElementById(\'fileImportSourceFix\').value=r;\
config.macros.importTiddlers.src=r;\
document.getElementById(\'importLoad\').onclick()">\
</div><!--end FF3 FIXUP-->\
</div><!--end local-->\
<div id="importHTTPPanel" style="display:none;margin-bottom:2px;"><!-- import from http server -->\
<table><tr><td align=left>\
enter a URL or <a href="javascript:;" id="importSelectFeed"\
onclick="onClickImportButton(this,event)" title="select a pre-defined \'systemServer\' URL">\
select a server</a><br>\
</td><td align=right>\
<input type="checkbox" class="chk" id="importUsePassword"\
onClick="config.macros.importTiddlers.usePassword=this.checked;\
config.macros.importTiddlers.showPanel(\'importIDPWPanel\',this.checked,true);">password\
<input type="checkbox" class="chk" id="importUseProxy"\
onClick="config.macros.importTiddlers.useProxy=this.checked;\
config.macros.importTiddlers.showPanel(\'importSiteProxy\',this.checked,true);">proxy\
</td></tr></table>\
<input type="text" id="importSiteProxy" style="display:none;margin-bottom:1px" onfocus="this.select()" value="SiteProxy"\
onKeyUp="config.macros.importTiddlers.proxy=this.value"\
onChange="config.macros.importTiddlers.proxy=this.value;">\
<input type="text" id="importSourceURL" onfocus="this.select()" value="SiteUrl"\
onKeyUp="config.macros.importTiddlers.src=this.value"\
onChange="config.macros.importTiddlers.src=this.value;">\
<div id="importIDPWPanel" style="text-align:center;margin-top:2px;display:none";>\
username: <input type=text id="txtImportID" style="width:25%" \
onChange="config.options.txtRemoteUsername=this.value;">\
password: <input type=password id="txtImportPW" style="width:25%" \
onChange="config.options.txtRemotePassword=this.value;">\
</div><!--end idpw-->\
</div><!--end http-->\
</div><!--end source-->\
\
<div class="box" id="importSelectPanel" style="display:none;margin:.5em;">\
<table><tr><td align=left>\
select:\
<a href="javascript:;" id="importSelectAll"\
onclick="onClickImportButton(this);return false;" title="SELECT all tiddlers">\
all</a>\
<a href="javascript:;" id="importSelectNew"\
onclick="onClickImportButton(this);return false;" title="SELECT tiddlers not already in destination document">\
added</a>\
<a href="javascript:;" id="importSelectChanges"\
onclick="onClickImportButton(this);return false;" title="SELECT tiddlers that have been updated in source document">\
changes</a>\
<a href="javascript:;" id="importSelectDifferences"\
onclick="onClickImportButton(this);return false;" title="SELECT tiddlers that have been added or are different from existing tiddlers">\
differences</a>\
</td><td align=right>\
<a href="javascript:;" id="importListSmaller"\
onclick="onClickImportButton(this);return false;" title="SHRINK list size">\
– </a>\
<a href="javascript:;" id="importListLarger"\
onclick="onClickImportButton(this);return false;" title="GROW list size">\
+ </a>\
<a href="javascript:;" id="importListMaximize"\
onclick="onClickImportButton(this);return false;" title="MAXIMIZE/RESTORE list size">\
= </a>\
</td></tr></table>\
<select id="importList" size=8 multiple\
onchange="setTimeout(\'refreshImportList(\'+this.selectedIndex+\')\',1)">\
<!-- NOTE: delay refresh so list is updated AFTER onchange event is handled -->\
</select>\
<div style="text-align:center">\
<a href="javascript:;"\
title="click for help using filters..."\
onclick="alert(\'A filter consists of one or more space-separated combinations of:\\n\\ntiddler titles\\ntag:[[tagvalue]]\\ntag:[[tag expression]] (requires MatchTagsPlugin)\\nstory:[[TiddlerName]]\\nsearch:[[searchtext]]\\n\\nUse a blank filter for all tiddlers.\')"\
>filter</a>\
<input type="text" id="importLastFilter" style="margin-bottom:1px; width:65%"\
title="Enter a combination of one or more filters. Use a blank filter for all tiddlers."\
onfocus="this.select()" value=""\
onKeyUp="config.macros.importTiddlers.lastFilter=this.value"\
onChange="config.macros.importTiddlers.lastFilter=this.value;">\
<input type="button" id="importApplyFilter" style="width:20%" value="apply"\
title="filter list of tiddlers to include only those that match certain criteria"\
onclick="onClickImportButton(this)">\
</div>\
</div><!--end select-->\
\
<div class="box" id="importOptionsPanel" style="text-align:center;margin:.5em;display:none;">\
apply tags: <input type=checkbox class="chk" id="chkImportTags" checked\
onClick="config.macros.importTiddlers.importTags=this.checked;">from source \
<input type=checkbox class="chk" id="chkKeepTags" checked\
onClick="config.macros.importTiddlers.keepTags=this.checked;">keep existing \
<input type=checkbox class="chk" id="chkAddTags" \
onClick="config.macros.importTiddlers.addTags=this.checked;\
config.macros.importTiddlers.showPanel(\'txtNewTags\',this.checked,false);\
if (this.checked) document.getElementById(\'txtNewTags\').focus();">add tags<br>\
<input type=text id="txtNewTags" style="margin-top:4px;display:none;" size=15\ onfocus="this.select()" \
title="enter tags to be added to imported tiddlers" \
onKeyUp="config.macros.importTiddlers.newTags=this.value;\
document.getElementById(\'chkAddTags\').checked=this.value.length>0;" autocomplete=off>\
<nobr><input type=checkbox class="chk" id="chkSync" \
onClick="config.macros.importTiddlers.sync=this.checked;">\
link tiddlers to source document (for sync later)</nobr>\
</div><!--end options-->\
\
<div id="importButtonPanel" style="text-align:center">\
<input type=button id="importLoad" class="importButton btn3" value="open"\
title="load listbox with tiddlers from source document"\
onclick="onClickImportButton(this)">\
<input type=button id="importOptions" class="importButton btn3" value="options..."\
title="set options for tags, sync, etc."\
onclick="onClickImportButton(this)">\
<input type=button id="importStart" class="importButton btn3" value="import"\
title="start/stop import of selected source tiddlers into current document"\
onclick="onClickImportButton(this)">\
<input type=button id="importClose" class="importButton btn3" value="done"\
title="clear listbox or hide control panel"\
onclick="onClickImportButton(this)">\
</div>\
\
<div class="none" id="importCollisionPanel" style="display:none;margin:.5em 0 .5em .5em;">\
<table><tr><td style="width:65%" align="left">\
<table><tr><td align=left>\
tiddler already exists:\
</td><td align=right>\
<input type=checkbox class="chk" id="importApplyToAll" \
onclick="document.getElementById(\'importRename\').disabled=this.checked;"\
checked>apply to all\
</td></tr></table>\
<input type=text id="importNewTitle" size=15 autocomplete=off">\
</td><td style="width:34%" align="center">\
<input type=button id="importMerge"\
class="importButton" style="width:47%" value="merge"\
title="append the incoming tiddler to the existing tiddler"\
onclick="onClickImportButton(this)"><!--\
--><input type=button id="importSkip"\
class="importButton" style="width:47%" value="skip"\
title="do not import this tiddler"\
onclick="onClickImportButton(this)"><!--\
--><br><input type=button id="importRename"\
class="importButton" style="width:47%" value="rename"\
title="rename the incoming tiddler"\
onclick="onClickImportButton(this)"><!--\
--><input type=button id="importReplace"\
class="importButton" style="width:47%" value="replace"\
title="discard the existing tiddler"\
onclick="onClickImportButton(this)">\
</td></tr></table>\
</div><!--end collision-->\
';
//}}}
//{{{
// process control interactions
function onClickImportButton(which,event) {
var cmi=config.macros.importTiddlers; // abbreviation
var list=cmi.$('importList'); if (!list) return;
var thePanel=cmi.$('importPanel');
var theCollisionPanel=cmi.$('importCollisionPanel');
var theNewTitle=cmi.$('importNewTitle');
var count=0;
switch (which.id)
{
case 'importFromFile': // show local panel
case 'importFromWeb': // show HTTP panel
cmi.local=(which.id=='importFromFile');
cmi.showPanel('importLocalPanel',cmi.local);
cmi.showPanel('importHTTPPanel',!cmi.local);
break;
case 'importOptions': // show/hide options panel
cmi.showPanel('importOptionsPanel',cmi.$('importOptionsPanel').style.display=='none');
break;
case 'fileImportSource':
case 'importLoad': // load import source into hidden frame
importReport(); // if an import was in progress, generate a report
cmi.inbound=null; // clear the imported tiddler buffer
refreshImportList(); // reset/resize the listbox
if (cmi.src=='') break;
// Load document, read it's DOM and fill the list
cmi.loadRemoteFile(cmi.src,cmi.filterTiddlerList);
break;
case 'importSelectFeed': // select a pre-defined systemServer feed URL
var p=Popup.create(which); if (!p) return;
var tids=store.getTaggedTiddlers('systemServer');
if (!tids.length)
createTiddlyText(createTiddlyElement(p,'li'),'no pre-defined server feeds');
for (var t=0; t<tids.length; t++) {
var u=store.getTiddlerSlice(tids[t].title,'URL');
var d=store.getTiddlerSlice(tids[t].title,'Description');
if (!d||!d.length) d=store.getTiddlerSlice(tids[t].title,'description');
if (!d||!d.length) d=u;
createTiddlyButton(createTiddlyElement(p,'li'),tids[t].title,d,
function(){
var u=this.getAttribute('url');
document.getElementById('importSourceURL').value=u;
config.macros.importTiddlers.src=u;
document.getElementById('importLoad').onclick();
},
null,null,null,{url:u});
}
Popup.show();
event.cancelBubble = true;
if (event.stopPropagation) event.stopPropagation();
return(false);
// create popup with feed list
// onselect, insert feed URL into input field.
break;
case 'importSelectAll': // select all tiddler list items (i.e., not headings)
importReport(); // if an import was in progress, generate a report
for (var t=0,count=0; t < list.options.length; t++) {
if (list.options[t].value=='') continue;
list.options[t].selected=true;
count++;
}
clearMessage(); displayMessage(cmi.countMsg.format([count]));
cmi.$('importStart').disabled=!count;
break;
case 'importSelectNew': // select tiddlers not in current document
importReport(); // if an import was in progress, generate a report
for (var t=0,count=0; t < list.options.length; t++) {
list.options[t].selected=false;
if (list.options[t].value=='') continue;
list.options[t].selected=!store.tiddlerExists(list.options[t].value);
count+=list.options[t].selected?1:0;
}
clearMessage(); displayMessage(cmi.countMsg.format([count]));
cmi.$('importStart').disabled=!count;
break;
case 'importSelectChanges': // select tiddlers that are updated from existing tiddlers
importReport(); // if an import was in progress, generate a report
for (var t=0,count=0; t < list.options.length; t++) {
list.options[t].selected=false;
if (list.options[t].value==''||!store.tiddlerExists(list.options[t].value)) continue;
for (var i=0; i<cmi.inbound.length; i++) // find matching inbound tiddler
{ var inbound=cmi.inbound[i]; if (inbound.title==list.options[t].value) break; }
list.options[t].selected=(inbound.modified-store.getTiddler(list.options[t].value).modified>0); // updated tiddler
count+=list.options[t].selected?1:0;
}
clearMessage(); displayMessage(cmi.countMsg.format([count]));
cmi.$('importStart').disabled=!count;
break;
case 'importSelectDifferences': // select tiddlers that are new or different from existing tiddlers
importReport(); // if an import was in progress, generate a report
for (var t=0,count=0; t < list.options.length; t++) {
list.options[t].selected=false;
if (list.options[t].value=='') continue;
if (!store.tiddlerExists(list.options[t].value)) { list.options[t].selected=true; count++; continue; }
for (var i=0; i<cmi.inbound.length; i++) // find matching inbound tiddler
{ var inbound=cmi.inbound[i]; if (inbound.title==list.options[t].value) break; }
list.options[t].selected=(inbound.modified-store.getTiddler(list.options[t].value).modified!=0); // changed tiddler
count+=list.options[t].selected?1:0;
}
clearMessage(); displayMessage(cmi.countMsg.format([count]));
cmi.$('importStart').disabled=!count;
break;
case 'importApplyFilter': // filter list to include only matching tiddlers
importReport(); // if an import was in progress, generate a report
clearMessage();
if (!cmi.all) // no tiddlers loaded = '0 selected'
{ displayMessage(cmi.countMsg.format([0])); return false; }
var hash=cmi.$('importLastFilter').value;
cmi.inbound=cmi.filterByHash('#'+hash,cmi.all);
refreshImportList(); // reset/resize the listbox
break;
case 'importStart': // initiate the import processing
importReport(); // if an import was in progress, generate a report
cmi.$('importApplyToAll').checked=false;
cmi.$('importStart').value=cmi.stopText;
if (cmi.index>0) cmi.index=-1; // stop processing
else cmi.index=importTiddlers(0); // or begin processing
importStopped();
break;
case 'importClose': // unload imported tiddlers or hide the import control panel
// if imported tiddlers not loaded, close the import control panel
if (!cmi.inbound) { thePanel.style.display='none'; break; }
importReport(); // if an import was in progress, generate a report
cmi.inbound=null; // clear the imported tiddler buffer
refreshImportList(); // reset/resize the listbox
break;
case 'importSkip': // don't import the tiddler
cmi.lastAction=which;
var theItem = list.options[cmi.index];
for (var j=0;j<cmi.inbound.length;j++)
if (cmi.inbound[j].title==theItem.value) break;
var theImported = cmi.inbound[j];
theImported.status='skipped after asking'; // mark item as skipped
theCollisionPanel.style.display='none';
cmi.index=importTiddlers(cmi.index+1); // resume with NEXT item
importStopped();
break;
case 'importRename': // change name of imported tiddler
cmi.lastAction=which;
var theItem = list.options[cmi.index];
for (var j=0;j<cmi.inbound.length;j++)
if (cmi.inbound[j].title==theItem.value) break;
var theImported = cmi.inbound[j];
theImported.status = 'renamed from '+theImported.title; // mark item as renamed
theImported.set(theNewTitle.value,null,null,null,null); // change the tiddler title
theItem.value = theNewTitle.value; // change the listbox item text
theItem.text = theNewTitle.value; // change the listbox item text
theCollisionPanel.style.display='none';
cmi.index=importTiddlers(cmi.index); // resume with THIS item
importStopped();
break;
case 'importMerge': // join existing and imported tiddler content
cmi.lastAction=which;
var theItem = list.options[cmi.index];
for (var j=0;j<cmi.inbound.length;j++)
if (cmi.inbound[j].title==theItem.value) break;
var theImported = cmi.inbound[j];
var theExisting = store.getTiddler(theItem.value);
var theText = theExisting.text+'\n----\n^^merged from: ';
theText +='[['+cmi.src+'#'+theItem.value+'|'+cmi.src+'#'+theItem.value+']]^^\n';
theText +='^^'+theImported.modified.toLocaleString()+' by '+theImported.modifier+'^^\n'+theImported.text;
var theDate = new Date();
var theTags = theExisting.getTags()+' '+theImported.getTags();
theImported.set(null,theText,null,theDate,theTags);
theImported.status = 'merged with '+theExisting.title; // mark item as merged
theImported.status += ' - '+theExisting.modified.formatString('MM/DD/YYYY 0hh:0mm:0ss');
theImported.status += ' by '+theExisting.modifier;
theCollisionPanel.style.display='none';
cmi.index=importTiddlers(cmi.index); // resume with this item
importStopped();
break;
case 'importReplace': // substitute imported tiddler for existing tiddler
cmi.lastAction=which;
var theItem = list.options[cmi.index];
for (var j=0;j<cmi.inbound.length;j++)
if (cmi.inbound[j].title==theItem.value) break;
var theImported = cmi.inbound[j];
var theExisting = store.getTiddler(theItem.value);
theImported.status = 'replaces '+theExisting.title; // mark item for replace
theImported.status += ' - '+theExisting.modified.formatString('MM/DD/YYYY 0hh:0mm:0ss');
theImported.status += ' by '+theExisting.modifier;
theCollisionPanel.style.display='none';
cmi.index=importTiddlers(cmi.index); // resume with THIS item
importStopped();
break;
case 'importListSmaller': // decrease current listbox size, minimum=5
if (list.options.length==1) break;
list.size-=(list.size>5)?1:0;
cmi.listsize=list.size;
break;
case 'importListLarger': // increase current listbox size, maximum=number of items in list
if (list.options.length==1) break;
list.size+=(list.size<list.options.length)?1:0;
cmi.listsize=list.size;
break;
case 'importListMaximize': // toggle listbox size between current and maximum
if (list.options.length==1) break;
list.size=(list.size==list.options.length)?cmi.listsize:list.options.length;
break;
}
}
//}}}
//{{{
config.macros.importTiddlers.showPanel=function(place,show,skipAnim) {
if (typeof place=='string') var place=document.getElementById(place);
if (!place||!place.style) return;
if(!skipAnim && anim && config.options.chkAnimate) anim.startAnimating(new Slider(place,show,false,'none'));
else place.style.display=show?'block':'none';
}
//}}}
//{{{
function refreshImportList(selectedIndex) {
var cmi=config.macros.importTiddlers; // abbrev
var list=cmi.$('importList'); if (!list) return;
// if nothing to show, reset list content and size
if (!cmi.inbound) {
while (list.length > 0) { list.options[0] = null; }
list.options[0]=new Option(cmi.loadText,'',false,false);
list.size=cmi.listsize;
cmi.$('importLoad').disabled=false;
cmi.$('importLoad').style.display='inline';
cmi.$('importStart').disabled=true;
cmi.$('importOptions').disabled=true;
cmi.$('importOptions').style.display='none';
cmi.$('fileImportSource').disabled=false;
cmi.$('importFromFile').disabled=false;
cmi.$('importFromWeb').disabled=false;
cmi.$('importStart').value=cmi.startText;
cmi.$('importClose').value=cmi.doneText;
cmi.$('importSelectPanel').style.display='none';
cmi.$('importOptionsPanel').style.display='none';
return;
}
// there are inbound tiddlers loaded...
cmi.$('importLoad').disabled=true;
cmi.$('importLoad').style.display='none';
cmi.$('importOptions').style.display='inline';
cmi.$('importOptions').disabled=false;
cmi.$('fileImportSource').disabled=true;
cmi.$('importFromFile').disabled=true;
cmi.$('importFromWeb').disabled=true;
cmi.$('importClose').value=cmi.closeText;
if (cmi.$('importSelectPanel').style.display=='none')
cmi.showPanel('importSelectPanel',true);
// get the sort order
if (!selectedIndex) selectedIndex=0;
if (selectedIndex==0) cmi.sort='title'; // heading
if (selectedIndex==1) cmi.sort='title';
if (selectedIndex==2) cmi.sort='modified';
if (selectedIndex==3) cmi.sort='tags';
if (selectedIndex>3) {
// display selected tiddler count
for (var t=0,count=0; t < list.options.length; t++) {
if (!list.options[t].selected) continue;
if (list.options[t].value!='')
count+=1;
else { // if heading is selected, deselect it, and then select and count all in section
list.options[t].selected=false;
for ( t++; t<list.options.length && list.options[t].value!=''; t++) {
list.options[t].selected=true;
count++;
}
}
}
clearMessage(); displayMessage(cmi.countMsg.format([count]));
}
cmi.$('importStart').disabled=!count;
if (selectedIndex>3) return; // no refresh needed
// get the alphasorted list of tiddlers
var tiddlers=cmi.inbound;
tiddlers.sort(function (a,b) {if(a['title'] == b['title']) return(0); else return (a['title'] < b['title']) ? -1 : +1; });
// clear current list contents
while (list.length > 0) { list.options[0] = null; }
// add heading and control items to list
var i=0;
var indent=String.fromCharCode(160)+String.fromCharCode(160);
if (cmi.all.length==tiddlers.length)
var summary=cmi.summaryMsg.format([tiddlers.length,(tiddlers.length!=1)?cmi.plural:cmi.single]);
else
var summary=cmi.summaryFilteredMsg.format([tiddlers.length,cmi.all.length,(cmi.all.length!=1)?cmi.plural:cmi.single]);
list.options[i++]=new Option(summary,'',false,false);
list.options[i++]=new Option(((cmi.sort=='title' )?'>':indent)+' [by title]','',false,false);
list.options[i++]=new Option(((cmi.sort=='modified')?'>':indent)+' [by date]','',false,false);
list.options[i++]=new Option(((cmi.sort=='tags')?'>':indent)+' [by tags]','',false,false);
// output the tiddler list
switch(cmi.sort) {
case 'title':
for(var t = 0; t < tiddlers.length; t++)
list.options[i++] = new Option(tiddlers[t].title,tiddlers[t].title,false,false);
break;
case 'modified':
// sort descending for newest date first
tiddlers.sort(function (a,b) {if(a['modified'] == b['modified']) return(0); else return (a['modified'] > b['modified']) ? -1 : +1; });
var lastSection = '';
for(var t = 0; t < tiddlers.length; t++) {
var tiddler = tiddlers[t];
var theSection = tiddler.modified.toLocaleDateString();
if (theSection != lastSection) {
list.options[i++] = new Option(theSection,'',false,false);
lastSection = theSection;
}
list.options[i++] = new Option(indent+indent+tiddler.title,tiddler.title,false,false);
}
break;
case 'tags':
var theTitles = {}; // all tiddler titles, hash indexed by tag value
var theTags = new Array();
for(var t=0; t<tiddlers.length; t++) {
var title=tiddlers[t].title;
var tags=tiddlers[t].tags;
if (!tags || !tags.length) {
if (theTitles['untagged']==undefined) { theTags.push('untagged'); theTitles['untagged']=new Array(); }
theTitles['untagged'].push(title);
}
else for(var s=0; s<tags.length; s++) {
if (theTitles[tags[s]]==undefined) { theTags.push(tags[s]); theTitles[tags[s]]=new Array(); }
theTitles[tags[s]].push(title);
}
}
theTags.sort();
for(var tagindex=0; tagindex<theTags.length; tagindex++) {
var theTag=theTags[tagindex];
list.options[i++]=new Option(theTag,'',false,false);
for(var t=0; t<theTitles[theTag].length; t++)
list.options[i++]=new Option(indent+indent+theTitles[theTag][t],theTitles[theTag][t],false,false);
}
break;
}
list.selectedIndex=selectedIndex; // select current control item
if (list.size<cmi.listsize) list.size=cmi.listsize;
if (list.size>list.options.length) list.size=list.options.length;
}
//}}}
//{{{
// re-entrant processing for handling import with interactive collision prompting
function importTiddlers(startIndex) {
var cmi=config.macros.importTiddlers; // abbrev
if (!cmi.inbound) return -1;
var list=cmi.$('importList'); if (!list) return;
var t;
// if starting new import, reset import status flags
if (startIndex==0)
for (var t=0;t<cmi.inbound.length;t++)
cmi.inbound[t].status='';
for (var i=startIndex; i<list.options.length; i++) {
// if list item is not selected or is a heading (i.e., has no value), skip it
if ((!list.options[i].selected) || ((t=list.options[i].value)==''))
continue;
for (var j=0;j<cmi.inbound.length;j++)
if (cmi.inbound[j].title==t) break;
var inbound = cmi.inbound[j];
var theExisting = store.getTiddler(inbound.title);
// avoid redundant import for tiddlers that are listed multiple times (when 'by tags')
if (inbound.status=='added')
continue;
// don't import the 'ImportedTiddlers' history from the other document...
if (inbound.title=='ImportedTiddlers')
continue;
// if tiddler exists and import not marked for replace or merge, stop importing
if (theExisting && (inbound.status.substr(0,7)!='replace') && (inbound.status.substr(0,5)!='merge'))
return i;
// assemble tags (remote + existing + added)
var newTags = '';
if (cmi.importTags)
newTags+=inbound.getTags() // import remote tags
if (cmi.keepTags && theExisting)
newTags+=' '+theExisting.getTags(); // keep existing tags
if (cmi.addTags && cmi.newTags.trim().length)
newTags+=' '+cmi.newTags; // add new tags
inbound.set(null,null,null,null,newTags.trim());
// set the status to 'added' (if not already set by the 'ask the user' UI)
inbound.status=(inbound.status=='')?'added':inbound.status;
// set sync fields
if (cmi.sync) {
if (!inbound.fields) inbound.fields={}; // for TW2.1.x backward-compatibility
inbound.fields['server.page.revision']=inbound.modified.convertToYYYYMMDDHHMM();
inbound.fields['server.type']='file';
inbound.fields['server.host']=(cmi.local?'file://':'')+cmi.src;
}
// do the import!
store.suspendNotifications();
store.saveTiddler(inbound.title, inbound.title, inbound.text, inbound.modifier, inbound.modified, inbound.tags, inbound.fields, true, inbound.created);
store.fetchTiddler(inbound.title).created = inbound.created; // force creation date to imported value (needed for TW2.1.x and earlier)
store.resumeNotifications();
}
return(-1); // signals that we really finished the entire list
}
function importStopped() {
var cmi=config.macros.importTiddlers; // abbrev
var list=cmi.$('importList'); if (!list) return;
var theNewTitle=cmi.$('importNewTitle');
if (cmi.index==-1){
cmi.$('importStart').value=cmi.startText;
importReport(); // import finished... generate the report
} else {
// import collision...
// show the collision panel and set the title edit field
cmi.$('importStart').value=cmi.stopText;
cmi.showPanel('importCollisionPanel',true);
theNewTitle.value=list.options[cmi.index].value;
if (cmi.$('importApplyToAll').checked && cmi.lastAction && cmi.lastAction.id!='importRename')
onClickImportButton(cmi.lastAction);
}
}
//}}}
//{{{
function importReport() {
var cmi=config.macros.importTiddlers; // abbrev
if (!cmi.inbound) return;
// if import was not completed, the collision panel will still be open... close it now.
var panel=cmi.$('importCollisionPanel'); if (panel) panel.style.display='none';
// get the alphasorted list of tiddlers
var tiddlers = cmi.inbound;
// gather the statistics
var count=0; var total=0;
for (var t=0; t<tiddlers.length; t++) {
if (!tiddlers[t].status || !tiddlers[t].status.trim().length) continue;
if (tiddlers[t].status.substr(0,7)!='skipped') count++;
total++;
}
// generate a report
if (total) displayMessage(cmi.processedMsg.format([total]));
if (count && config.options.chkImportReport) {
// get/create the report tiddler
var theReport = store.getTiddler('ImportedTiddlers');
if (!theReport) { theReport=new Tiddler(); theReport.title='ImportedTiddlers'; theReport.text=''; }
// format the report content
var now = new Date();
var newText = 'On '+now.toLocaleString()+', '+config.options.txtUserName
newText +=' imported '+count+' tiddler'+(count==1?'':'s')+' from\n[['+cmi.src+'|'+cmi.src+']]:\n';
if (cmi.addTags && cmi.newTags.trim().length)
newText += 'imported tiddlers were tagged with: "'+cmi.newTags+'"\n';
newText += '<<<\n';
for (var t=0; t<tiddlers.length; t++) if (tiddlers[t].status)
newText += '#[['+tiddlers[t].title+']] - '+tiddlers[t].status+'\n';
newText += '<<<\n';
// update the ImportedTiddlers content and show the tiddler
theReport.text = newText+((theReport.text!='')?'\n----\n':'')+theReport.text;
theReport.modifier = config.options.txtUserName;
theReport.modified = new Date();
store.saveTiddler(theReport.title, theReport.title, theReport.text, theReport.modifier, theReport.modified, theReport.tags, theReport.fields);
story.displayTiddler(null,theReport.title,1,null,null,false);
story.refreshTiddler(theReport.title,1,true);
}
// reset status flags
for (var t=0; t<cmi.inbound.length; t++) cmi.inbound[t].status='';
// mark document as dirty and let display update as needed
if (count) { store.setDirty(true); store.notifyAll(); }
// always show final message when tiddlers were actually loaded
if (count) displayMessage(cmi.importedMsg.format([count,tiddlers.length,cmi.src.replace(/%20/g,' ')]));
}
//}}}
//{{{
// // File and XMLHttpRequest I/O
config.macros.importTiddlers.askForFilename=function(here) {
var msg=here.title; // use tooltip as dialog box message
var path=getLocalPath(document.location.href);
var slashpos=path.lastIndexOf('/'); if (slashpos==-1) slashpos=path.lastIndexOf('\\');
if (slashpos!=-1) path = path.substr(0,slashpos+1); // remove filename from path, leave the trailing slash
var file='';
var result='';
if(window.Components) { // moz
try {
netscape.security.PrivilegeManager.enablePrivilege('UniversalXPConnect');
var nsIFilePicker = window.Components.interfaces.nsIFilePicker;
var picker = Components.classes['@mozilla.org/filepicker;1'].createInstance(nsIFilePicker);
picker.init(window, msg, nsIFilePicker.modeOpen);
var thispath = Components.classes['@mozilla.org/file/local;1'].createInstance(Components.interfaces.nsILocalFile);
thispath.initWithPath(path);
picker.displayDirectory=thispath;
picker.defaultExtension='html';
picker.defaultString=file;
picker.appendFilters(nsIFilePicker.filterAll|nsIFilePicker.filterText|nsIFilePicker.filterHTML);
if (picker.show()!=nsIFilePicker.returnCancel) var result=picker.file.persistentDescriptor;
}
catch(e) { alert('error during local file access: '+e.toString()) }
}
else { // IE
try { // XPSP2 IE only
var s = new ActiveXObject('UserAccounts.CommonDialog');
s.Filter='All files|*.*|Text files|*.txt|HTML files|*.htm;*.html|';
s.FilterIndex=3; // default to HTML files;
s.InitialDir=path;
s.FileName=file;
if (s.showOpen()) var result=s.FileName;
}
catch(e) { // fallback
var result=prompt(msg,path+file);
}
}
return result;
}
config.macros.importTiddlers.loadRemoteFile = function(src,callback) {
if (src==undefined || !src.length) return null; // filename is required
var original=src; // URL as specified
var hashpos=src.indexOf('#'); if (hashpos!=-1) src=src.substr(0,hashpos); // URL with #... suffix removed (needed for IE)
clearMessage();
displayMessage(this.openMsg.format([src.replace(/%20/g,' ')]));
if (src.substr(0,5)!='http:' && src.substr(0,5)!='file:') { // if not a URL, read from local filesystem
var txt=loadFile(src);
if (!txt) { // file didn't load, might be relative path.. try fixup
var pathPrefix=document.location.href; // get current document path and trim off filename
var slashpos=pathPrefix.lastIndexOf('/'); if (slashpos==-1) slashpos=pathPrefix.lastIndexOf('\\');
if (slashpos!=-1 && slashpos!=pathPrefix.length-1) pathPrefix=pathPrefix.substr(0,slashpos+1);
src=pathPrefix+src;
if (pathPrefix.substr(0,5)!='http:') src=getLocalPath(src);
var txt=loadFile(src);
}
if (!txt) { // file still didn't load, report error
displayMessage(config.macros.importTiddlers.openErrMsg.format([src.replace(/%20/g,' '),'(filesystem error)']));
} else {
displayMessage(config.macros.importTiddlers.readMsg.format([txt.length,src.replace(/%20/g,' ')]));
if (version.major+version.minor*.1+version.revision*.01<2.52) txt=convertUTF8ToUnicode(txt);
if (callback) callback(true,original,txt,src,null);
}
} else {
doHttp('GET',src,null,null,config.options.txtRemoteUsername,config.options.txtRemotePassword,callback,original,null);
}
}
config.macros.importTiddlers.readTiddlersFromHTML=function(html)
{
var remoteStore=new TiddlyWiki();
remoteStore.importTiddlyWiki(html);
return remoteStore.getTiddlers('title');
}
config.macros.importTiddlers.readTiddlersFromCSV=function(CSV) {
var remoteStore=new TiddlyWiki();
var lines=CSV.split('\n'); var names=lines[0].split(','); CSV=lines.join('\n')
// ENCODE commas and newlines within quoted values
var comma='!~comma~!'; var commaRE=new RegExp(comma,'g');
var newline='!~newline~!'; var newlineRE=new RegExp(newline,'g');
CSV=CSV.replace(/\x22((?:[^\x22]|\x22\x22)*?)\x22/g,
function(x){ return x.substr(1,x.length-2).replace(/\,/g,comma).replace(/\n/g,newline); });
// PARSE lines
var lines=CSV.split('\n');
for (var i=1; i<lines.length; i++) { if (!lines[i].length) continue;
var values=lines[i].split(',');
// DECODE commas, newlines and doubled-quotes within quoted values
for (var v=0; v<values.length; v++)
values[v]=values[v].replace(commaRE,',').replace(newlineRE,'\n').replace(/\x22\x22/g,'\x22');
// EXTRACT tiddler values
var title=''; var text=''; var tags=[]; var fields={};
var created=null; var when=new Date(); var who=config.options.txtUserName;
for (var v=0; v<values.length; v++) { var val=values[v];
if (names[v]) switch(names[v].toLowerCase()) {
case 'title': title=val.replace(/\[\]\|/g,'_'); break;
case 'created': created=new Date(val); break;
case 'modified':when=new Date(val); break;
case 'modifier':who=val; break;
case 'text': text=val; break;
case 'tags': tags=val.readBracketedList(); break;
default: fields[names[v].toLowerCase()]=val; break;
}
}
// CREATE tiddler in temporary store
if (title.length) remoteStore.saveTiddler(title,title,text,who,when,tags,fields,true,created||when);
}
return remoteStore.getTiddlers('title');
}
config.macros.importTiddlers.filterTiddlerList=function(success,params,txt,src,xhr) {
var cmi=config.macros.importTiddlers; // abbreviation
var src=src.replace(/%20/g,' ');
if (!success) { displayMessage(cmi.openErrMsg.format([src,xhr.status])); return; }
cmi.all=cmi.readTiddlersFromHTML(txt);
if (!cmi.all||!cmi.all.length) cmi.all=cmi.readTiddlersFromCSV(txt)
var count=cmi.all?cmi.all.length:0;
var querypos=src.lastIndexOf('?'); if (querypos!=-1) src=src.substr(0,querypos);
displayMessage(cmi.foundMsg.format([count,src]));
cmi.inbound=cmi.filterByHash(params,cmi.all); // use full URL including hash (if any)
cmi.$('importLastFilter').value=cmi.lastFilter;
window.refreshImportList(0);
}
config.macros.importTiddlers.filterByHash=function(src,tiddlers)
{
var hashpos=src.lastIndexOf('#'); if (hashpos==-1) return tiddlers;
var hash=src.substr(hashpos+1); if (!hash.length) return tiddlers;
var tids=[];
var params=hash.parseParams('anon',null,true,false,false);
for (var p=1; p<params.length; p++) {
switch (params[p].name) {
case 'anon':
case 'open':
tids.pushUnique(params[p].value);
break;
case 'tag':
if (store.getMatchingTiddlers) { // for boolean expressions - see MatchTagsPlugin
var r=store.getMatchingTiddlers(params[p].value,null,tiddlers);
for (var t=0; t<r.length; t++) tids.pushUnique(r[t].title);
} else for (var t=0; t<tiddlers.length; t++)
if (tiddlers[t].isTagged(params[p].value))
tids.pushUnique(tiddlers[t].title);
break;
case 'story':
for (var t=0; t<tiddlers.length; t++)
if (tiddlers[t].title==params[p].value) {
tiddlers[t].changed();
for (var s=0; s<tiddlers[t].links.length; s++)
tids.pushUnique(tiddlers[t].links[s]);
break;
}
break;
case 'search':
for (var t=0; t<tiddlers.length; t++)
if (tiddlers[t].text.indexOf(params[p].value)!=-1)
tids.pushUnique(tiddlers[t].title);
break;
}
}
var matches=[];
for (var t=0; t<tiddlers.length; t++)
if (tids.contains(tiddlers[t].title))
matches.push(tiddlers[t]);
displayMessage(config.macros.importTiddlers.filterMsg.format([matches.length,hash]));
config.macros.importTiddlers.lastFilter=hash;
return matches;
}
//}}}
/***
|Name|ImportTiddlersPluginInfo|
|Source|http://www.TiddlyTools.com/#ImportTiddlersPlugin|
|Documentation|http://www.TiddlyTools.com/#ImportTiddlersPluginInfo|
|Version|4.5.0|
|Author|Eric Shulman|
|License|http://www.TiddlyTools.com/#LegalStatements <br>and [[Creative Commons Attribution-ShareAlike 2.5 License|http://creativecommons.org/licenses/by-sa/2.5/]]|
|~CoreVersion|2.1|
|Type|documentation|
|Requires||
|Overrides||
|Description|documentation for ImportTiddlersPlugin|
Combine tiddlers from any two TiddlyWiki documents. An interactive control panel lets you pick a source document and import selected tiddlers, with prompting for skip, rename, merge or replace actions when importing tiddlers that match existing titles. Generates a detailed report of import 'history' in ImportedTiddlers.
!!!!!Usage
<<<
{{{<<importTiddlers>>}}} or {{{<<importTiddlers core>>}}}
invokes the built-in importTiddlers macro (TW2.1.x+). If installed in documents using TW2.0.x or earlier, fallback is to use 'link' display (see below)
{{{<<importTiddlers link label tooltip>>}}}
The ''link'' keyword creates an "import tiddlers" link that when clicked to show/hide import control panel. ''label'' and ''tooltip'' are optional text parameters (enclosed in quotes or {{{[[...]]}}}, and allow you to override the default display text for the link and the mouseover help text, respectively.
{{{<<importTiddlers inline>>}}}
creates import control panel directly in tiddler content
<<importTiddlers inline>>
Enter a document URL or press "..." to select a TiddlyWiki file to import, and then press ''[open]''. //Note: There may be a delay before the list of tiddlers appears.// Use the ''[-]'', ''[+]'', or ''[=]'' links to adjust the listbox size so you can view more (or less) tiddler titles at one time.
Select one or more titles from the listbox. Use CTRL-click or SHIFT-click to select/deselect individual titles. Click on ''all'', ''new'', ''changes'', or ''differences'' to automatically select a subset of tiddlers from the list, based on a comparison of the two documents:
*''all'' selects ALL tiddlers from the import source document, even if they have not been changed.
*''new'' selects only tiddlers that are found in the import source document, but do not yet exist in the destination document
*''changes'' selects only tiddlers that exist in both documents but that are newer in the source document
*''differences'' selects all new and existing tiddlers that are different from the destination document (even if destination tiddler is newer)
Press ''[import]'' to begin copying tiddlers to the current document. If an 'inbound' tiddler matches one that already exists in the document, the import process pauses and the tiddler title is displayed in an input field, along with four push buttons: ''skip'', ''rename'', ''merge'' and ''replace''.
* to bypass importing the tiddler, press ''skip''
* to give the inbound tiddler a different name, so that both the old and new tiddlers will exist when the import is done, enter a new title in the input field and press ''rename''
* to combine the content from both tiddlers into a single tiddler so you can then edit it later to eliminate unwanted content, press ''merge''
* to overwrite the existing tiddler with the imported one (discarding the previous content), press ''[replace]''
''Import Report History''
Whenever tiddlers are imported, a report is generated into a tiddler named [[ImportedTiddlers]], recording when the latest import was performed, the number of tiddlers successfully imported, from what location, and by whom, as well as a list of the tiddlers that were processed. When more tiddlers are imported at a later time, a new report is //added// to the existing [[ImportedTiddlers]], above the previous report (i.e., at the top of the tiddler), so that a history of imports is maintained. If this record is not desired, you can delete [[ImportedTiddlers]] at any time.
Note: You can prevent a report from being generated for any given import activity by clearing the "create a report" checkbox before pressing the ''import'' button
<<<
!!!!!Installation Notes
<<<
* As of 6/27/2007, support for TW2.1.x and earlier have been moved to [[ImportTiddlersPluginPatch]]. ''//Only install the patch plugin when using TW2.1.x or earlier.//''
<<<
!!!!!Revisions
<<<
2009.05.04 [4.5.0] import from CSV-formatted files
2009.03.04 [4.4.2] in createImportPanel(), init option checkboxes so display matches internal state variables
2009.02.26 [4.4.1] use macro-specific definition of $() function abbreviation (avoids conflict with JQuery)
2008.09.30 [4.4.0] added fallback definition of merge() for use with TW2.0.x and TW1.2.x
2008.08.12 [4.3.3] rewrite backstage and shadow tiddler definitions for easier customization
2008.08.05 [4.3.2] rewrote loadRemoteFile() to eliminate use of platform-specific fileExists() function
2008.06.29 [4.3.1] More layout/animation work for simpler sequential interaction. Code reduction/cleanup
2008.06.28 [4.3.0] HTML and CSS cleanup and tweaks to layout. Added animation to panels
2008.06.22 [4.2.0] For FireFox, use HTML with separate text+button control instead of type='file' control
2008.06.05 [4.1.0] in filterByHash(), added support for boolean tag expressions using getMatchingTiddlers() (defined by MatchTagsPlugin)
2008.05.12 [4.0.2] automatically tweak the backstage "import" task to add the ImportTiddlers control panel as an optional alternative to the standard import wizard. (Moved from BackstageTweaks).
2008.04.30 [4.0.1] trim #... suffix for loading files/URLs in IE
2008.04.30 [4.0.0] added source filtering (using URL paramifiers). Also, abbreviations for code-size reduction.
2008.04.13 [3.9.0] added 'apply to all' checkbox for collision processing
2008.03.26 [3.8.0] added support for selecting pre-defined systemServer URLs
2008.03.25 [3.7.0] added support for setting 'server' fields on imported tiddlers (for later synchronizing of changes)
2008.01.03 [3.6.0] in loadRemoteFile(), use lower-level doHttp() instead of loadRemoteFile() in order to support username/password access to remote server
2007.10.30 [3.5.6] update [[ImportTiddlers]] shadow tiddler definition to include "inline" link, so the plugin control panel is displayed instead of the standard core interface.
2007.06.27 [3.5.5] added missing 'fields' params to saveTiddler() calls. Fixes problem where importing tiddlers would lose the custom fields. Also, moved functions for backward-compatibility with TW2.1.x to separate [[ImportTiddlersPluginPatch2.1.x]] tiddler, reducing the size of //this// plugin tiddler by a significant amount.
2007.06.25 [3.5.4] added calls to store.suspendNotifications() and store.resumeNotifications(). Eliminates redisplay processing overhead DURING import activities
2007.04.29 [3.5.3] if refreshImportList() when inbound tiddlers are loaded, change "close" button to "done", and disable certain controls to creates a modal condition, so that actions that reload tiddlers cannot be performed unless "done" is first pressed to end the mode..
2007.04.28 [3.5.2] in handler(), added param support for custom link label/prompt
2007.04.19 [3.5.1] in readTiddlersFromHTML(), for TW2.2 and above, use importTiddlyWiki() (new core functionality) to get tiddlers from remote file content. Also, copied updated TW21Loader.prototype.internalizeTiddler() definition from TW2.2b5 so plugin can read tiddlers from TW2.2+ even when running under TW2.1.x
2007.03.22 [3.5.0] in refreshImportList(), add handling for 'select section' when a heading is selected. Makes it really easy to import by tag or date!
2007.03.21 [3.4.0] split loadTiddlers functionality into separate plugin (see [[LoadTiddlersPlugin]])
2007.03.20 [3.3.1] tweak to previous change to allow relative file references via http: (bypasses getLocalPath() so remote URL will be used)
2007.03.20 [3.3.0] added support for local, relative file references: in loadRemoteFile(), check for fileExists(). If not found, prepend relative path and retry.
2007.02.24 [3.2.1] re-labeled control panel "open" button to "load" to avoid confusion with "open" button in system-provided Browse... dialog. (i.e., "browse, open, open" becomes "browse, open, load")
2007.02.09 [3.2.0] loadTiddlers: added support for "noReload" tag (prevents overwriting existing tiddler, even if inbound tiddler is newer)
2007.02.08 [3.1.3] loadTiddlers: added missing code and documentation for "newTags" handling (a feature change from long, long ago that somehow got lost!)
2006.11.14 [3.1.2] fix macro handler parameter declaration (double-pasted param list corrupts IE)
2006.11.13 [3.1.1] use apply() method to invoke hijacked core handler
2006.11.13 [3.1.0] hijack built-in importTiddlers.handler() to co-exist with plugin interface. If no params or 'core' keyword, display core interface. "link" param embeds "import tiddlers" link that shows floating panel when clicked.
2006.10.12 [3.0.8] in readTiddlersFromHTML(), fallback to find end of store area by matching "/body" when POST-BODY-START is not present (backward compatibility for older documents)
2006.09.10 [3.0.7] in readTiddlersFromHTML(), find end of store area by matching "POST-BODY-START" instead of "/body"
2006.08.16 [3.0.6] Use higher-level store.saveTiddler() instead of store.addTiddler() to avoid conflicts with adaptations that hijack low-level tiddler handling. in CreateImportPanel(), removed "refresh listbox after every tiddler change".
2006.07.29 [3.0.5] added noChangeMsg to loadTiddlers processing. if not 'quiet' mode, reports skipped tiddlers.
2006.04.18 [3.0.4] in loadTiddlers.handler, fixed parsing of "prompt:" param. Also, corrected parameters mismatch in loadTiddlers() callback function definition (order of params was wrong, resulting in filters NOT being applied)
2006.04.12 [3.0.3] moved many display messages to macro properties for easier L10N translations via 'lingo' definitions.
2006.04.12 [3.0.2] more work on 'core candidate' code. Proposed API now defines "loadRemoteFile()" for XMLHttpRequest processing with built in fallback for handling local filesystem access, and readTiddlersFromHTML() to process the resulting source HTML content.
2006.04.04 [3.0.1] in refreshImportList(), when using [by tags], tiddlers without tags are now included in a new "untagged" psuedo-tag list section
2006.04.04 [3.0.0] Separate non-interactive {{{<<importTiddlers...>>}}} macro functionality for incorporation into TW2.1 core and renamed as {{{<<loadTiddlers>>}}} macro. New parameters for loadTiddlers: ''label:text'' and ''prompt:text'' for link creation, ''ask'' for filename/URL, ''tag:text'' for filtering, "confirm" for accept/reject of individual inbound tiddlers. Removed support for "importReplace/importPublic" tags and "force" param (unused feature).
2006.03.30 [2.9.1] when extracting store area from remote URL, look for "</body>" instead of "</body>\n</html>" so it will match even if the "\n" is absent from the source.
2006.03.30 [2.9.0] added optional 'force' macro param. When present, autoImportTiddlers() bypasses the checks for importPublic and importReplace. Based on a request from Tom Otvos.
2006.03.28 [2.8.1] in loadImportFile(), added checks to see if 'netscape' and 'x.overrideMimeType()' are defined (not in IE). Also, when extracting store area, look for "</body>\n</html>" and omit extra content that may have been added to the end of the file.
2006.02.21 [2.8.0] added support for "tiddler:TiddlerName" filtering parameter in auto-import processing
2006.02.21 [2.7.1] Clean up layout problems with IE. (Use tables for alignment instead of SPANs styled with float:left and float:right)
2006.02.21 [2.7.0] Added "local file" and "web server" radio buttons for selecting dynamic import source controls in ImportPanel. Default remote URL uses value from [[SiteURL]]. Also, added 'proxy' option, using value from [[SiteProxy]] as prefix to permit cross-domain document access via server-side scripting.
2006.02.17 [2.6.0] Removed "differences only" listbox display mode, replaced with selection filter 'presets': all/new/changes/differences. Also fixed initialization handling for "add new tags" so that checkbox state is correctly tracked when panel is first displayed.
2006.02.16 [2.5.4] added checkbox options to control "import remote tags" and "keep existing tags" behavior, in addition to existing "add new tags" functionality.
2006.02.14 [2.5.3] FF1501 corrected unintended global 't' (loop index) in importReport() and autoImportTiddlers()
2006.02.10 [2.5.2] corrected unintended global variable in importReport().
2006.02.05 [2.5.1] moved globals from window.* to config.macros.importTiddlers.* to avoid FireFox 1.5.0.1 crash bug when referencing globals
2006.01.18 [2.5.0] added checkbox for "create a report". Default is to create/update the ImportedTiddlers report. Clear the checkbox to skip this step.
2006.01.15 [2.4.1] added "importPublic" tag and inverted default so that auto sharing is NOT done unless tagged with importPublic
2006.01.15 [2.4.0] Added support for tagging tiddlers with importSkip, importReplace, and/or importPrivate to enable/disable overwriting or sharing with others when using auto-import macro syntax. Defaults: don't overwrite existing tiddlers, and allow your tiddlers to be auto-imported by others.
2006.01.15 [2.3.2] Added "ask" parameter to confirm each tiddler before importing (for use with auto-importing)
2006.01.15 [2.3.1] Strip TW core scripts from import source content and load just the storeArea into the hidden IFRAME. to prevent imported document's core code from being invoked. Also, when importing local documents, use convertUTF8ToUnicode() to support international characters sets.
2006.01.12 [2.3.0] Reorganized code to use callback function for loading import files to support event-driven I/O via an ASYNCHRONOUS XMLHttpRequest instead of waiting for remote hosts to respond to URL requests. Added non-interactive 'batch' mode, using macro parameters to specify source path/file or URL, and select tiddlers to import. Improved messages and added optional 'quiet' switch for batch mode to eliminate //most// feedback.
2006.01.11 [2.2.0] Added "[by tags]" to list of tiddlers, based on code submitted by BradleyMeck
2006.01.08 [2.1.0] IMPORT FROM ANYWHERE!!! re-write getImportedTiddlers() logic to either read a local file (using local I/O), OR... read a remote file, using a combination of XML and an iframe to permit cross-domain reading of DOM elements. Adapted from example code and techniques courtesy of Jonny LeRoy.
2006.01.06 [2.0.2] When refreshing list contents, fixed check for tiddlerExists() when "show differences only" is selected, so that imported tiddlers that don't exist in the current file will be recognized as differences and included in the list.
2006.01.04 [2.0.1] When "show differences only" is NOT checked, import all tiddlers that have been selected even when they have a matching title and date.
2005.12.27 [2.0.0] Update for TW2.0
Defer initial panel creation and only register a notification function when panel first is created
2005.12.22 [1.3.1] tweak formatting in importReport() and add 'discard report' link to output
2005.12.03 [1.3.0] Dynamically create/remove importPanel as needed to ensure only one instance of interface elements exists, even if there are multiple instances of macro embedding. Also, dynamically create/recreate importFrame each time an external TW document is loaded for importation (reduces DOM overhead and ensures a 'fresh' frame for each document)
2005.11.29 [1.2.1] fixed formatting of 'detail info' in importReport()
2005.11.11 [1.2.0] added 'inline' param to embed controls in a tiddler
2005.11.09 [1.1.0] only load HTML and CSS the first time the macro handler is called. Allows for redundant placement of the macro without creating multiple instances of controls with the same ID's.
2005.10.25 [1.0.5] fixed typo in importReport() that prevented reports from being generated
2005.10.09 [1.0.4] combined documentation with plugin code instead of using separate tiddlers
2005.08.05 [1.0.3] moved CSS and HTML definitions into plugin code instead of using separate tiddlers
2005.07.27 [1.0.2] core update 1.2.29: custom overlayStyleSheet() replaced with new core setStylesheet()
2005.07.23 [1.0.1] added parameter checks and corrected addNotification() usage
2005.07.20 [1.0.0] Initial Release
<<<
/***
|Name|ImportTiddlersPluginPatch|
|Source|http://www.TiddlyTools.com/#ImportTiddlersPluginPatch|
|Version|4.4.0|
|Author|Eric Shulman|
|License|http://www.TiddlyTools.com/#LegalStatements <br>and [[Creative Commons Attribution-ShareAlike 2.5 License|http://creativecommons.org/licenses/by-sa/2.5/]]|
|~CoreVersion|2.1|
|Type|plugin|
|Requires|ImportTiddlersPlugin|
|Overrides|config.macros.importTiddlers.handler|
|Description|backward-compatible function patches for use with ImportTiddlersPlugin and TW2.1.x or earlier|
!!!!!Usage
<<<
The current version ImportTiddlersPlugin is compatible with the TW2.2.x core functions. This "patch" plugin provides additional functions needed to enable the current version of ImportTiddlersPlugin to operate correctly under TW2.1.x or earlier.
{{medium{You do not need to install this plugin if you are using TW2.2.0 or above}}}
(though it won't hurt anything if you do... it will just take up more space).
<<<
!!!!!Revisions
<<<
2008.09.30 [4.4.0] added safety check for TW21Loader object and forward-compatible loadFromDiv() prototype to permit use with TW2.0.x and TW1.2.x.
2008.08.05 [4.3.2] rewrote loadRemoteFile to eliminate use of platform-specific fileExists() function
2008.01.03 [3.6.0] added support for passing txtRemoteUsername and txtRemotePassword for accessing password-protected remote servers
2007.06.27 [3.5.5] compatibility functions split from ImportTiddlersPlugin
|please see [[ImportTiddlersPlugin]] for additional revision details|
2005.07.20 [1.0.0] Initial Release
<<<
!!!!!Code
***/
//{{{
// these functions are only defined when installed in TW2.1.x and earlier...
if (version.major+version.minor/10 <= 2.1) {
// Version
version.extensions.ImportTiddlersPluginPatch= {major: 4, minor: 4, revision: 0, date: new Date(2008,9,30)};
// fixups for TW2.0.x and earlier
if (window.merge==undefined) window.merge=function(dst,src,preserveExisting)
{ for (p in src) if (!preserveExisting||dst[p]===undefined) dst[p]=src[p]; return dst; }
if (config.macros.importTiddlers==undefined) config.macros.importTiddlers={ };
config.macros.importTiddlers.loadRemoteFile = function(src,callback,quiet) {
if (src==undefined || !src.length) return null; // filename is required
if (!quiet) clearMessage();
if (!quiet) displayMessage(this.openMsg.format([src]));
if (src.substr(0,5)!="http:" && src.substr(0,5)!="file:") { // if not a URL, read from local filesystem
var txt=loadFile(src);
if (!txt) { // file didn't load, might be relative path.. try fixup
var pathPrefix=document.location.href; // get current document path and trim off filename
var slashpos=pathPrefix.lastIndexOf("/"); if (slashpos==-1) slashpos=pathPrefix.lastIndexOf("\\");
if (slashpos!=-1 && slashpos!=pathPrefix.length-1) pathPrefix=pathPrefix.substr(0,slashpos+1);
src=pathPrefix+src;
if (pathPrefix.substr(0,5)!="http:") src=getLocalPath(src);
var txt=loadFile(src);
}
if (!txt) { // file still didn't load, report error
if (!quiet) displayMessage(config.macros.importTiddlers.openErrMsg.format([src.replace(/%20/g," "),"(filesystem error)"]));
} else {
if (!quiet) displayMessage(config.macros.importTiddlers.readMsg.format([txt.length,src.replace(/%20/g," ")]));
if (callback) callback(true,src,convertUTF8ToUnicode(txt),src,null);
}
} else {
var x; // get an request object
try {x = new XMLHttpRequest()} // moz
catch(e) {
try {x = new ActiveXObject("Msxml2.XMLHTTP")} // IE 6
catch (e) {
try {x = new ActiveXObject("Microsoft.XMLHTTP")} // IE 5
catch (e) { return }
}
}
// setup callback function to handle server response(s)
x.onreadystatechange = function() {
if (x.readyState == 4) {
if (x.status==0 || x.status == 200) {
if (!quiet) displayMessage(config.macros.importTiddlers.readMsg.format([x.responseText.length,src]));
if (callback) callback(true,src,x.responseText,src,x);
}
else {
if (!quiet) displayMessage(config.macros.importTiddlers.openErrMsg.format([src,x.status]));
}
}
}
// get privileges to read another document's DOM via http:// or file:// (moz-only)
if (typeof(netscape)!="undefined") {
try { netscape.security.PrivilegeManager.enablePrivilege("UniversalBrowserRead"); }
catch (e) { if (!quiet) displayMessage(e.description?e.description:e.toString()); }
}
// send the HTTP request
try {
var url=src+(src.indexOf('?')<0?'?':'&')+'nocache='+Math.random();
x.open("GET",src,true,config.options.txtRemoteUsername,config.options.txtRemotePassword);
if (x.overrideMimeType) x.overrideMimeType('text/html');
x.send(null);
}
catch (e) {
if (!quiet) {
displayMessage(config.macros.importTiddlers.openErrMsg.format([src,"(unknown)"]));
displayMessage(e.description?e.description:e.toString());
}
}
}
}
config.macros.importTiddlers.readTiddlersFromHTML=function(html) {
// for TW2.1 and earlier
// extract store area from html
var start=html.indexOf('<div id="storeArea">');
var end=html.indexOf("<!--POST-BODY-START--"+">",start);
if (end==-1) var end=html.indexOf("</body"+">",start); // backward-compatibility for older documents
var sa="<html><body>"+html.substring(start,end)+"</body></html>";
// load html into iframe document
var f=document.getElementById("loaderFrame"); if (f) document.body.removeChild(f);
f=document.createElement("iframe"); f.id="loaderFrame";
f.style.width="0px"; f.style.height="0px"; f.style.border="0px";
document.body.appendChild(f);
var d=f.document;
if (f.contentDocument) d=f.contentDocument; // For NS6
else if (f.contentWindow) d=f.contentWindow.document; // For IE5.5 and IE6
d.open(); d.writeln(sa); d.close();
// read tiddler DIVs from storeArea DOM element
var sa = d.getElementById("storeArea");
if (!sa) return null;
sa.normalize();
var nodes = sa.childNodes;
if (!nodes || !nodes.length) return null;
var tiddlers = [];
for(var t = 0; t < nodes.length; t++) {
var title = null;
if(nodes[t].getAttribute)
title = nodes[t].getAttribute("title"); // TW 2.2+
if(!title && nodes[t].getAttribute)
title = nodes[t].getAttribute("tiddler"); // TW 2.1.x
if(!title && nodes[t].id && (nodes[t].id.substr(0,5) == "store"))
title = nodes[t].id.substr(5); // TW 1.2.x
if(title && title != "")
tiddlers.push((new Tiddler()).loadFromDiv(nodes[t],title));
}
return tiddlers;
}
// // FORWARD-COMPATIBLE SUPPORT FOR TW2.1.x
// // enables reading tiddler definitions using TW2.2+ storeArea format, even when plugin is running under TW2.1.x
if (typeof TW21Loader!="undefined") {
TW21Loader.prototype.internalizeTiddler = function(store,tiddler,title,node) {
var e = node.firstChild;
var text = null;
if(node.getAttribute("tiddler"))
text = getNodeText(e).unescapeLineBreaks();
else {
while(e.nodeName!="PRE" && e.nodeName!="pre") e = e.nextSibling;
text = e.innerHTML.replace(/\r/mg,"").htmlDecode();
}
var modifier = node.getAttribute("modifier");
var c = node.getAttribute("created");
var m = node.getAttribute("modified");
var created = c ? Date.convertFromYYYYMMDDHHMM(c) : version.date;
var modified = m ? Date.convertFromYYYYMMDDHHMM(m) : created;
var tags = node.getAttribute("tags");
var fields = {};
var attrs = node.attributes;
for(var i = attrs.length-1; i >= 0; i--) {
var name = attrs[i].name;
if (attrs[i].specified && !TiddlyWiki.isStandardField(name))
fields[name] = attrs[i].value.unescapeLineBreaks();
}
tiddler.assign(title,text,modifier,modified,tags,created,fields);
return tiddler;
};
}
// FORWARD-COMPATIBLE SUPPORT FOR TW2.0.x and TW1.2.x
// enables reading tiddler definitions using TW2.2+ storeArea format, even when plugin is running under TW2.0.x or TW1.2.x
if (typeof Tiddler.prototype.loadFromDiv!="undefined") {
Tiddler.prototype.loadFromDiv = function(node,title) { // Load a tiddler from an HTML DIV
var e = node.firstChild;
var text = null;
if(node.getAttribute("tiddler")) {
// get merged text from adjacent text nodes
var t=""; while(e&&e.nodeName=="#text") { t+=e.nodeValue; e=e.nextSibling; }
text = Tiddler.unescapeLineBreaks(t);
} else {
while(e.nodeName!="PRE" && e.nodeName!="pre") e = e.nextSibling;
text = e.innerHTML.replace(/\r/mg,"").htmlDecode();
}
var modifier = node.getAttribute("modifier");
var c = node.getAttribute("created");
var m = node.getAttribute("modified");
var created = c ? Date.convertFromYYYYMMDDHHMM(c) : version.date;
var modified = m ? Date.convertFromYYYYMMDDHHMM(m) : created;
var tags = node.getAttribute("tags");
this.set(title,text,modifier,modified,tags,created);
return this;
}
}
} // END OF pre-TW2.2 backward-compatibility functions
//}}}
On Sat Mar 19 19:08:37 2011, APS imported 1 tiddler from
[[http://www.tiddlytools.com/#TwitterTabs|http://www.tiddlytools.com/#TwitterTabs]]:
<<<
#[[TwitterTabs]] - replaces TwitterTabs - 10/18/2009 11:13:00 by ELSDesignStudios
<<<
----
On Sat Mar 19 19:02:26 2011, APS imported 1 tiddler from
[[http://www.tiddlytools.com/#TwitterTabs|http://www.tiddlytools.com/#TwitterTabs]]:
<<<
#[[TwitterTabs]] - added
<<<
----
On Sat Mar 19 18:53:33 2011, APS imported 1 tiddler from
[[http://www.tiddlytools.com/#InlineJavascriptPlugin|http://www.tiddlytools.com/#InlineJavascriptPlugin]]:
<<<
#[[InlineJavascriptPlugin]] - added
<<<
----
On Sat Oct 24 10:14:17 2009, APS imported 2 tiddlers from
[[http://sayginlab.tiddlyspot.com/|http://sayginlab.tiddlyspot.com/]]:
<<<
#[[TspotSetupPlugin]] - replaces TspotSetupPlugin - 8/8/2008 03:41:00 by YourName
#[[UploadPlugin]] - replaces UploadPlugin - 10/24/2009 10:10:35 by APS
<<<
----
On Thu Jul 23 13:55:19 2009, APS imported 5 tiddlers from
[[http://tiddlytools.com|http://tiddlytools.com]]:
<<<
#[[CalendarPlugin]] - added
#[[CalendarPluginConfig]] - added
#[[DatePlugin]] - added
#[[DatePluginConfig]] - added
#[[DatePluginInfo]] - added
<<<
----
On Thu Jul 23 12:20:28 2009, APS imported 1 tiddler from
[[http://devpad.tiddlyspot.com/#SimpleSearchPlugin|http://devpad.tiddlyspot.com/#SimpleSearchPlugin]]:
<<<
#[[SimpleSearchPlugin]] - added
<<<
----
On Thu Jul 23 00:34:30 2009, APS imported 1 tiddler from
[[http://sayginlab.tiddlyspot.com|http://sayginlab.tiddlyspot.com]]:
<<<
#[[StyleSheet]] - replaces StyleSheet - 8/9/2007 16:12:00 by TiddlyThemes
<<<
----
On Thu Jul 23 00:34:25 2009, APS imported 1 tiddler from
[[http://sayginlab.tiddlyspot.com|http://sayginlab.tiddlyspot.com]]:
<<<
#[[SideBarWG]] - replaces SideBarWG - 8/9/2007 16:12:00 by TiddlyThemes
<<<
----
On Thu Jul 23 00:34:18 2009, APS imported 3 tiddlers from
[[http://tiddlythemes.com/empties/LewcidOrangeBlog.html|http://tiddlythemes.com/empties/LewcidOrangeBlog.html]]:
<<<
#[[PageTemplate]] - replaces PageTemplate - 8/9/2007 16:12:00 by TiddlyThemes
#[[SideBarWG]] - added
#[[StyleSheet]] - replaces StyleSheet - 7/21/2009 13:54:00 by APS
<<<
/***
|Name|InlineJavascriptPlugin|
|Source|http://www.TiddlyTools.com/#InlineJavascriptPlugin|
|Documentation|http://www.TiddlyTools.com/#InlineJavascriptPluginInfo|
|Version|1.9.6|
|Author|Eric Shulman|
|License|http://www.TiddlyTools.com/#LegalStatements|
|~CoreVersion|2.1|
|Type|plugin|
|Description|Insert Javascript executable code directly into your tiddler content.|
''Call directly into TW core utility routines, define new functions, calculate values, add dynamically-generated TiddlyWiki-formatted output'' into tiddler content, or perform any other programmatic actions each time the tiddler is rendered.
!!!!!Documentation
>see [[InlineJavascriptPluginInfo]]
!!!!!Revisions
<<<
2010.12.15 1.9.6 allow (but ignore) type="..." syntax
|please see [[InlineJavascriptPluginInfo]] for additional revision details|
2005.11.08 1.0.0 initial release
<<<
!!!!!Code
***/
//{{{
version.extensions.InlineJavascriptPlugin= {major: 1, minor: 9, revision: 6, date: new Date(2010,12,15)};
config.formatters.push( {
name: "inlineJavascript",
match: "\\<script",
lookahead: "\\<script(?: type=\\\"[^\\\"]*\\\")?(?: src=\\\"([^\\\"]*)\\\")?(?: label=\\\"([^\\\"]*)\\\")?(?: title=\\\"([^\\\"]*)\\\")?(?: key=\\\"([^\\\"]*)\\\")?( show)?\\>((?:.|\\n)*?)\\</script\\>",
handler: function(w) {
var lookaheadRegExp = new RegExp(this.lookahead,"mg");
lookaheadRegExp.lastIndex = w.matchStart;
var lookaheadMatch = lookaheadRegExp.exec(w.source)
if(lookaheadMatch && lookaheadMatch.index == w.matchStart) {
var src=lookaheadMatch[1];
var label=lookaheadMatch[2];
var tip=lookaheadMatch[3];
var key=lookaheadMatch[4];
var show=lookaheadMatch[5];
var code=lookaheadMatch[6];
if (src) { // external script library
var script = document.createElement("script"); script.src = src;
document.body.appendChild(script); document.body.removeChild(script);
}
if (code) { // inline code
if (show) // display source in tiddler
wikify("{{{\n"+lookaheadMatch[0]+"\n}}}\n",w.output);
if (label) { // create 'onclick' command link
var link=createTiddlyElement(w.output,"a",null,"tiddlyLinkExisting",wikifyPlainText(label));
var fixup=code.replace(/document.write\s*\(/gi,'place.bufferedHTML+=(');
link.code="function _out(place,tiddler){"+fixup+"\n};_out(this,this.tiddler);"
link.tiddler=w.tiddler;
link.onclick=function(){
this.bufferedHTML="";
try{ var r=eval(this.code);
if(this.bufferedHTML.length || (typeof(r)==="string")&&r.length)
var s=this.parentNode.insertBefore(document.createElement("span"),this.nextSibling);
if(this.bufferedHTML.length)
s.innerHTML=this.bufferedHTML;
if((typeof(r)==="string")&&r.length) {
wikify(r,s,null,this.tiddler);
return false;
} else return r!==undefined?r:false;
} catch(e){alert(e.description||e.toString());return false;}
};
link.setAttribute("title",tip||"");
var URIcode='javascript:void(eval(decodeURIComponent(%22(function(){try{';
URIcode+=encodeURIComponent(encodeURIComponent(code.replace(/\n/g,' ')));
URIcode+='}catch(e){alert(e.description||e.toString())}})()%22)))';
link.setAttribute("href",URIcode);
link.style.cursor="pointer";
if (key) link.accessKey=key.substr(0,1); // single character only
}
else { // run script immediately
var fixup=code.replace(/document.write\s*\(/gi,'place.innerHTML+=(');
var c="function _out(place,tiddler){"+fixup+"\n};_out(w.output,w.tiddler);";
try { var out=eval(c); }
catch(e) { out=e.description?e.description:e.toString(); }
if (out && out.length) wikify(out,w.output,w.highlightRegExp,w.tiddler);
}
}
w.nextMatch = lookaheadMatch.index + lookaheadMatch[0].length;
}
}
} )
//}}}
// // Backward-compatibility for TW2.1.x and earlier
//{{{
if (typeof(wikifyPlainText)=="undefined") window.wikifyPlainText=function(text,limit,tiddler) {
if(limit > 0) text = text.substr(0,limit);
var wikifier = new Wikifier(text,formatter,null,tiddler);
return wikifier.wikifyPlain();
}
//}}}
// // GLOBAL FUNCTION: $(...) -- 'shorthand' convenience syntax for document.getElementById()
//{{{
if (typeof($)=='undefined') { function $(id) { return document.getElementById(id.replace(/^#/,'')); } }
//}}}
Graduate students: Please see [[Graduate School]].
Postdoctoral researchers: To find out about current training opportunities in our lab, or to discuss fellowship applications, please [[contact Dr. Saygin|mailto:asaygin@cogsci.ucsd.edu]].
Undergraduate students: If you are interested in research opportunities, including 199s and senior theses, please see [[Undergraduate Research]].
All interested trainees should also see [[Funding]].
See also: [[How to contact a PI]]
See also [[Lab Policies]], [[Advice]], [[ABOUT]], [[PROJECTS]], [[PEOPLE]], [[PUBLICATIONS]], and [[LAB]].
[[Kevin Van Aelst|http://www.kevinvanaelst.com/art.html]]
[[Robots]] [[fMRI]] [[Modeling]] [[EEG]] [[Biomotion]] [[Lesion mapping]]
This is where you can find FAQs, info, documents and tools for research in the lab.
Additional information is on the lab wiki (access limited to lab members).
[[About this Wiki]]
[[Advice]]
[[(Business) Papers]]
[[Computing]]
[[Conferences|Conferences]]
[[Courses]]
[[Data Collection]]
[[Data Analysis]]
[[fMRI]]
[[Funding]]
[[Graduate School]]
[[Human Subjects]]
[[Joining the Lab]]
[[Lab Meetings]]
[[Lab Notebooks]]
[[Lab Policies]]
[[Mentoring]]
[[News]]
[[Presentations, Talks and Posters]]
[[Productivity]]
[[Public Engagement and Media]]
[[Research Integrity and Ethics]]
[[Seminars, Colloquia, Events of Interest|Seminars, Colloquia, Events of Interest]]
[[Software]]
[[Undergraduate Research]]
[[Work-Life Balance]]
[[Writing]]
[[Your Career]]
[[Local Links]]
[[Science Links]]
In addition, there are links from many of the pages under [[LAB]]. (See also the Links tag). Many of these are articles on the web or blog posts. The opinions in these links belong to the authors. I have picked the links because they discuss relevant topics, bring up interesting points and/or provide a perspective, not necessarily because I agree with everything in them.
See also: [[PUBLICATIONS]], [[LAB]]
Lab meetings take different forms including journal club style discussions, data presentations, invited speakers, joint meetings with other labs, "career development" topics...
The current time for lab meetings are at 3 pm on Wednesdays.
We meet every week or every other week depending on current lab deadlines, travel etc...
[[List of suggested papers/topics|https://docs.google.com/Doc?docid=0AWrZ7Sfv1FBGZHFocW00c18yOGRmbTJ2OWY4&hl=en]]
[[Papers discussed in past lab meetings|https://docs.google.com/Doc?docid=0AejyilBL_oWDZGNjOTR4ZG1fNTljcjNoOTVjNQ&hl=en]]
You have to be logged into google and have permission to view the documents. To be added to lab meeting notifications, e-mail Burcu at burcu.urgen at gmail dot com.
Recent guest speakers:
- Markus Lappe (Uni Munster, Germany): "The template matching approach to biological motion: motion-from-form rather than form-from-motion"
- Geoffrey Bird (Birkbeck College, London): "Top-down modulation and social mirroring in autism"
- Steven Thurman (UC Irvine): ""Perceptual and computational analysis of critical features for biological motion"
- Arseny Sokolov (Tubingen, Germany): "Cerebellar contribution to visual body motion processing"
It is essential to keep a detailed record of your research activities. You should take detailed notes on how you organize your files, rendered your figures, any data analysis parameters, and so on. You will need these when you're preparing the research for publication and when you're writing up your thesis or dissertation. Keeping detailed logs is also enables more fruitful collaborations.
All members of lab are *required* to keep a lab notebook that is accessible to the PI and any other collaborators. You should keep a record of your research activities on a day to day basis. In addition, lab members must compile a written report on each of their projects' progress at least once per quarter. These reports should also be kept in your lab notebook.
For ease of access and security, you should keep your notebook electronically so that it can be hosted/shared online with your PI and collaborators. If you like to take notes on paper, please scan those pages in and upload to your electronic lab notebook.
[[Pbwiki: The preferred lab notebook platform at the moment| http://pbworks.com]]: Create a workspace and invite me using apsaygin at gmail dot com.
More:
[[Tiddlywiki|http://www.tiddlywiki.com/]] - this website was created using Tiddlywiki.
[[Open Wetware|http://openwetware.org/wiki/Help:Notebook]]
[[eCAT|http://www.axiope.com/electronic_lab_notebook_index.html]]
[[An Online Lab Notebook|http://www.thelabnotebook.com/]]
[[Blogger|http://www.blogger.com]]
[[Huge list of Wiki Options|www.wikimatrix.org]]
[[Collaborative Online Drawing|http://imaginationcubed.com/]]
Links:
[[Open Notebook Science|http://en.wikipedia.org/wiki/Open_notebook_science]]
[[Lab Notebooks in Biological Sciences|http://www.google.com/reader/view/#stream/user%2F10211855373410670817%2Fstate%2Fcom.google%2Fstarred]]
[[On Open Lab Notebook Software|http://scienceblogs.com/principles/2008/09/open_lab_notebook_software.php]]
See also [[Graduate School]], [[Lab Policies]], [[Undergraduate Research]], [[Productivity]], [[Research Integrity and Ethics]], and [[LAB]]
Some general policies and guidelines:
- I expect you to work well with the other members of the lab. Although members of the lab have their own projects, we are a team and we might at times be called upon to help each other out.
- Communication is key. Know what is going on in the lab. Keep your PI in the loop about your ideas, your projects, and your collaborations. While collaboration is encouraged, it is also important for graduate students and postdocs to have a line of research that is their own. I can help you find a balance. A related issue is intellectual ownership. You may sometimes have original ideas, but may be unsure how to proceed. Or you may feel like an idea or line of research in the lab is "yours", but it may have a history you don't know about. So communication is extremely important in order to avoid unnecessary conflict. Your PI can guide you in developing your own line of research within the lab. (see [[Research Integrity and Ethics]]).
- You are expected to treat everyone with respect. This does not mean that you must be best buddies with everyone. But you are expected to be courteous and fair.
- I have <b>zero</b> tolerance for bullying, malicious gossip, harassment, discrimination or disrespect based on gender, sexual orientation, race, ethnicity, disability, national origin, age, etc... It is very important that the environment in the lab is not uncomfortable or hostile for anyone.
- I usually do not pay too much attention to which specific hours you work unless we have agreed on a schedule, or you are running experiments at specific times. I do however pay attention to your progress. However, I expect you to let me know if you are not coming to work at all (e.g., if you'll be out of town or sick).
- Be a good lab citizen. Clean up after yourself. Do not leave mess around. Do not eat or drink in the testing rooms or while using the shared computers. Be considerate when working in the lab. Do not hog computers to surf the web or watch movies. Wear headphones if you're playing music. Do not make lengthy personal phone calls when others are trying to work. Report any malfunctioning equipment or software. If you use the last consent form, make copies. Leave testing rooms the way you found them.
- Please be considerate about using resources of the lab/department/university/earth. Do not print documents you can read on your computer. Recycle.
- Keep an orderly lab notebook. When someone teaches you something, take notes. Details are on the [[Lab Notebooks]] page.
- Observe the human subjects guidelines and safety regulations in the lab and at the MRI Center. You must also be careful to keep any data files or consent forms that contain personal information secure. See [[Human Subjects]] and [[fMRI]].
- When it comes to data, backup, backup, and backup again!
- You should attend the weekly [[Lab meetings]] and participate in any other lab activities. In addition I will meet with you weekly or bi-weekly to review your research progress, talk about data and any other issues as they arise.
- Friends or family cannot come to just hang out with you at the MRI scanner. You also must not give your lab access code or computer account information to anyone.
- Remember that you are representing your lab, your department, and your university when you go to conferences and seminars, when you talk to other professors, researchers or students, when you interact with research participants... You should strive to be professional and courteous at all times.
- Similarly, remember that your success is my success. I want all my trainees to get all the guidance, support, and mentoring they need. If in doubt about something, talk to me. If you need help, ask for it. Don't suffer in silence. I may not always be able to solve the problem, but we'll work on it together.
See also [[Joining the Lab]], [[Research Integrity and Ethics]], and [[LAB]]
Type the text for 'Lesion mapping'
Bio excepted from Huffington Post:
Mary Ann Mason is considered an expert on public policy issues related to the effects of parenting on academic careers; public policy issues concerning children's rights; and the history of the American family and of childhood.
Mason received her B.A. from Vassar College, her Ph.D. in American History from the University of Rochester, and her J.D. from the University of San Francisco. She taught history at several Bay Area colleges, founded and directed the largest paralegal education program in the West at St. Mary's College, and practiced law for several years.
In 1989 Mason joined the faculty of UC Berkeley as an assistant professor in law and social welfare in the Graduate School of Social Welfare, rising through the ranks to full professor. During her tenure, she championed diversity in the graduate student population, promoted equity for student parents, and pioneered measures to enhance the career/life balance for all students. Mason has been a trail-blazer for culture change to make higher education across the nation more family-friendly for faculty and students alike. Her current research project is known as "Do Babies Matter? The Effects of Family Formation on the Lifelong Careers of Academic Men and Women.” Her research findings and advocacy have been central to ground-breaking policy initiatives, including the ten-campus “UC Faculty Family Friendly Edge” and the nationwide “Nine Presidents” summits on gender equity at major research universities.
Her newly released book from Oxford University Press (co-authored with her daughter Eve Mason Ekman) is Mothers on the Fast Track: How a New Generation Can Balance Family and Careers.
Mary Ann Mason lives in Oakland with her husband, psychologist Paul Ekman; they have two grown children, Eve and Tom.
[[Rethinking the tenure clock | http://www.law.berkeley.edu/files/Rethinking_the_Tenure_Clock.pdf]]
[[Is tenure a trap? | http://www.law.berkeley.edu/files/Is_Tenure_a_Trap_for_Women.pdf]]
[[Importance of role models (UC Study) | http://www.law.berkeley.edu/files/Role_Models_and_Mentors.pdf]]
[[Bad reputation | http://www.law.berkeley.edu/files/Balancing_Act-_A_Bad_Reputation.mamason.pdf]]
[[Grad students rejecting the fast track | http://www.law.berkeley.edu/files/Grad_Students_Fast_Track_Article.mamason.pdf]]
[[Marriage and baby blues: Redefining gender equity in academia | http://ann.sagepub.com/cgi/reprint/596/1/86]]
[[Do babies matter? (2) | http://www.law.berkeley.edu/files/Do_Babies_Matter_in_Science_Article-2.pdf]]
[[Do babies matter? | http://www.law.berkeley.edu/files/Do_Babies_Matter_in_Science_Article-2.pdf]]
[[Men and mothering | http://www.law.berkeley.edu/files/Men_as_Mothers_Article.mm.pdf]]
[[Female leadership in male-dominated fields | http://www.law.berkeley.edu/files/Some_Thoughts_on_Female_Leadership.mam.pdf]]
/***
|''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);
}
//}}}
UCSD
- [[The Stuart Collection| http://stuartcollection.ucsd.edu/StuartCollection/index.htm]]
- [[UCSD TV| http://www.ucsd.tv]]
- [[Birch Aquarium| http://aquarium.ucsd.edu]]
- [[Libraries| http://libraries.ucsd.edu]]
- [[Recreation: Gyms, pools, yoga, surfing...| http://recreation.ucsd.edu]]
- [[Mission Bay Aquatics Center| http://recreation.ucsd.edu/mbac]]
What's On
- [[City Beat| http://www.sdcitybeat.com/cms/index]]
- [[San Diego Reader| http://www.sandiegoreader.com/home/]]
Visit
- [[Zoo and Wild Animal Park| http://www.sandiegozoo.org]]
- [[Torrey Pines| http://www.torreypine.org]]
- [[Sea World| http://www.seaworld.com/]]
- [[Balboa Park| http://www.balboapark.org]]
Beaches
- [[La Jolla Shores| http://www.a-zsandiegobeaches.com/lajollashores.htm]]
- [[La Jolla Cove| http://www.sandiego.gov/lifeguards/beaches/cove.shtml]]
- [[Black's Beach| http://en.wikipedia.org/wiki/Black%27s_Beach]]
- [[Del Mar| http://www.a-zsandiegobeaches.com/delmar.htm]]
- [[Windansea| http://en.wikipedia.org/wiki/Windansea_Beach]]
Events
- [[Comic Con| http://www.comic-con.org]]
- [[County Fair, Del Mar| http://www.sdfair.com/fair/index.php?fuseaction=fair.home]]
- [[Street Scene| http://www.street-scene.com]]
Music
- [[Belly Up| http://www.bellyup.com]]
- [[Casbah| http://www.casbahmusic.com]]
- [[Dizzy's| http://www.dizzysjazz.com]]
- [[M-Theory Records| http://www.mtheorymusic.com/]]
- [[Lou's Records| http://www.lousrecords.com]]
- [[FM 94.9| http://www.fm949sd.com/]]
Food
- [[Tajima|http://www.tajimasandiego.com/index.html]]
- [[Sushi Ota| http://www.yelp.com/biz/sushi-ota-san-diego]]
- [[Izakaya Sakura| http://www.yelp.com/biz/izakaya-sakura-san-diego]]
- [[Convoy Street| http://en.wikipedia.org/wiki/Convoy_Street]]
- [[Santana's| http://www.santanas.com]]
- [[La Posta| http://www.yelp.com/biz/la-posta-de-acapulcos-san-diego]]
- [[Mama Testa| http://www.mamatestataqueria.com/]]
- [[El Cotixan| http://www.gotburritos.com/]]
- [[Bronx Pizza| http://www.bronxpizza.com/\]]
- [[Madras Cafe| http://www.yelp.com/biz/madras-cafe-san-diego]]
- [[Jyoti Bihanga| http://www.jyotibihanga.com/]]
Other Attractions
- [[Hotel del Coronado| http://www.hoteldel.com]]
- [[Unarius Academy of Science| http://en.wikipedia.org/wiki/Unarius_Academy_of_Science]]
More Local Stuff
- [[Farmers Markets| http://www.signonsandiego.com/feature/farmers-markets]]
- [[Adams Ave| http://www.gothere.com/AdamsAve/]]
Nearby
- [[LA Philharmonic| http://www.laphil.com]]
- [[Coachella| http://www.coachella.com]]
- [[Anza Borrego| http://www.parks.ca.gov/?page_id=638]]
- [[Joshua Tree National Park| http://www.nps.gov/jotr]]
- [[The Getty| http://www.getty.edu]]
- [[Rosarito| http://en.wikipedia.org/wiki/Playas_de_Rosarito,_Baja_California]]
- [[Ensenada| http://www.enjoyensenada.com/english/aboutensenada.jsp]]
See also [[Work-Life Balance]], [[LINKS]]
Website for the book.
[[MATLAB for Behavioral Scientists|http://www.matlab-behave.com/]]
See also [[Courses]], [[Computing]], [[Software]], [[LAB]]
[[ABOUT]] [[PEOPLE]] [[PROJECTS]] [[PUBLICATIONS]] [[LINKS]] [[LAB]]
[[<img src="http://www.phdcomics.com/comics/archive/phd062409s.gif" width=500>|http://www.phdcomics.com/comics/archive/phd062409s.gif]]
[[<img src="http://www.phdcomics.com/comics/archive/phd062209s.gif" width=500>|http://www.phdcomics.com/comics/archive/phd062209s.gif]]
[[<img src="http://www.phdcomics.com/comics/archive/phd062909s.gif" width=500>|http://www.phdcomics.com/comics/archive/phd062909s.gif]]
[[<img src="http://www.phdcomics.com/comics/archive/phd052009s.gif" width=500>|http://www.phdcomics.com/comics/archive/phd052009s.gif]]
[[<img src="http://www.phdcomics.com/comics/archive/phd051809s.gif" width=500>|http://www.phdcomics.com/comics/archive/phd051809s.gif]]
[[<img src="" width=500>|]]
[[<img src="" width=500>|]]
See also [[Public Engagement and Media]], and [[Selected PhD Comics]].
Type the text for 'Mentoring'
Links:
[[Mentoring and Money|http://science-professor.blogspot.com/2009/07/mentoring-money.html]]
[[Postdoc Mentoring|http://science-professor.blogspot.com/2009/06/postdoc-mentoring.html]]
[[Postdoc Mentoring 2|http://science-professor.blogspot.com/2009/06/p-mentoring-2.html]]
See also [[(Business) Papers]], [[Funding]], [[Research Integrity and Ethics]], [[Work-Life Balance]], [[Your Career]], [[Advice]], and [[LAB]]
[[MySDScience - Create Your Account|http://mysdscience.com/]]
If you haven't already added yourself or been added, you might want to consider checking out [[neurotree | http://neurotree.org/neurotree]]
[[Repost: More on Neurotree : DrugMonkey|http://scienceblogs.com/drugmonkey/2009/10/repost_more_on_neurotree.php]]
|>|>|>|>|
|! Current Lab Members |>|>|>|
|>|>|>|>|
|<html><img src="http://www.sayginlab.org/p/aps2010.jpg" height=70 width=70></html>| [[Ayse P. Saygin| http://www.sayginlab.org/apsaygin.html]] | Principal Investigator |[[Website | http://www.sayginlab.org/apsaygin.html]] |
|<html><img src="http://www.cogsci.ucsd.edu/media/img/people/picture_311.thumbnail.jpeg" height=70 width=70></html>| Burcu Aysen Urgen | Graduate student |Burcu studied computer science and cognitive science before coming to UCSD. She's a cognitive science graduate student supported by a fellowship from Calit2. Burcu is using EEG and fMRI to study body movement perception. |
|<html><img src="http://www.cogsci.ucsd.edu/media/img/people/picture_345.thumbnail.jpeg" height=70 width=70></html>| Luke Miller | Graduate student |Luke is a cognitive science graduate student and is interested in perception of body movements, individual differences in perception, the representation of the body in the brain, and neural plasticity. Luke is supported by the [[Kavli Institute of Brain and Mind(KIBM)|http://kibm.ucsd.edu/]]|
|<html><img src="A.ChanPicture.jpg" height=70 width=70></html>| Angela Chan | Undergraduate (Honors Thesis) student |Angela is studying cognitive science with a specialization in neuroscience and just finished an undergraduate honors project in our lab exploring how biological motion cues direct attention. She was awarded a Calit2 undergraduate research fellowship to continue working in our lab on fMRI.|
|<html><img src="http://i1004.photobucket.com/albums/af168/sayginlab/Brain-1.jpg" height=70 width=70></html>| Arthur Vigil | Undergraduate student |Arthur is finishing his degree in Cognitive and is working on behavioral and EEG experiments on body movement perception. He was awarded a Chancellor's undergraduate research fellowship.|
|<html><img src="http://www.sayginlab.org/p/edward.jpg" height=70 width=70></html>| Edward Nguyen | Undergraduate student |Edward is working on biological motion perception, emotion, and attention, and is interested in neuroimaging. Edward's research is part of the faculty mentor program (FMP).|
|<html><img src="http://www.sayginlab.org/p/maria.jpg" height=70 width=70></html>| Maria Florendo | Undergraduate student |Maria is a new lab member and working on biological motion perception and attention.|
|<html><img src="http://www.sayginlab.org/p/cindy.jpg" height=70 width=70></html>| Cindy Ha | Undergraduate student |Cindy is a new lab member and working on biological motion perception and individual differences.|
|<html><img src="http://www.sayginlab.org/p/jingwei.jpg" height=70 width=70></html>| Jingwei Li | Undergraduate student |Jingwei is new to our lab is helping with online and in-lab behavioral experiments.|
|<html><img src="http://i1004.photobucket.com/albums/af168/sayginlab/Brain-1.jpg" height=70 width=70></html>| Paola Rossi | Undergraduate (exchange) student |Paola is an exchange student from Italy at UCSD for two quarters and is working on biological motion perception and individual differences.|
|>|>|>|>|
<html>
<center>
<table width=300 border =0>
<tr><td align = center> <img src="http://www.sayginlab.org/p/lab2011_1_sm.jpg"></tr>
<tr><td align = center><font size =1>Back: Edward, Maria, Ayse, Angela, Burcu. Front: Jingwei, Luke, Cindy.</font></td></tr>
<br> <i><b><a href="https://picasaweb.google.com/104234408144890091151/SayginLabFall2011TacoParty#" target="_blank"> More photos from Lab Taco Party are here!</a><b></i></font></td></tr>
<tr><td align = center><img src="http://www.sayginlab.org/p/group_pic2.jpg"></tr></td>
<tr><td align = center><font size =1> Burcu Urgen, Angela Chan, Ayse Saygin, Luke Miller and Arthur Vigil. <i>Photo by Pere Estupinya, 2011.</i></font></td></tr>
<tr><td align = center><img src="http://www.sayginlab.org/p/group_pic1.jpg"></tr></td>
<tr><td align = center><font size =1> Jennifer Starkey, Andrew Hostler, Angela Chan, Ayse Saygin, Burcu Urgen, Vicente Malave and Luke Miller. <i>Photo by <a href="http://www.calit2.net/newsroom/article.php?id=1878" target=_blank"><u>Chris Palmer @ Calit2</u></a>, 2011</i>.</font></td></tr>
<tr><td align = center><font size =1><i>The text behind us in the lab is a reproduction of <a href="http://www.ronnestam.com/how-to-work-better-by-peter-fischli-david-weiss/" target="_blank"><u>"How to Work Better" by Fischli & Weiss</u></a>.</i></font></td></tr>
</table>
</center></html>
|>|
|!Interested in joining us? |
|We would love to hear from you. But please start with reading about [[Joining the Lab]]. You may be interested in information on our pages for [[Graduate School]] or [[Undergraduate Research]]. Current undergrad openings are posted [[here|http://www.sayginlab.org/ugrad_openings.htm]].|
|>|
|!Research Experience for High School Students |
|Research Experience for High School Students (REHS) is a new volunteer internship program for high school students administered by the [[San Diego Supercomputer Center|http://www.sdsc.edu/News%20Items/PR062810_rehs.html]]. Our lab is proud to be part of this program which will inspire a new generation of students to participate in research. 6 students worked in our lab in 2010 and 2011.|
|[[Check out their work here!|REHS]]|
|>|>|>|>|
|! Past Lab Members |>|>|>|
|>|>|>|>|
|<html><img src="http://www.icn.ucl.ac.uk/images/ahportraits/jennifer_cook.jpg" height=70 width=70></html>| Jennifer Cook | Visiting researcher |Jennifer visited our lab from London supported by a Bogue fellowship from UCL. She's a PhD student in [[Sarah-Jayne Blakemore's lab|http://sites.google.com/site/blakemorelab/]] working on biological motion perception, and motion processing in autism spectrum disorders. [[Website|http://www.icn.ucl.ac.uk/research-groups/Developmental-Group/group-members/MemberDetails.php?Title=Miss&FirstName=Jennifer&LastName=Cook]] |
|<html><img src="http://www.icn.ucl.ac.uk/images/ahportraits/Geoff_bird.png" height=70 width=70></html>| Geoff Bird | Visiting researcher |Dr. Bird is a lecturer in the Psychology Department at Birkbeck College, University of London. His research area is social cognition and social neuroscience. [[Website|http://www.bbk.ac.uk/psyc/staff/academic/geoff_bird]] |
|<html><img src="http://i1004.photobucket.com/albums/af168/sayginlab/Brain-1.jpg" height=70 width=70></html>| Narathip (Nick) Reamaroon | Undergraduate student |Nick worked on individual differences in body movement perception. |
|<html><img src="http://www.cogsci.ucsd.edu/media/img/people/picture_312.thumbnail.jpeg" height=70 width=70></html>| Sandra Weber | Graduate student |Sandra has studied psychology, physiology, and cognitive science at the University of Salzburg, and the University of Vienna in Austria. Sandra is working on a visual search project in our lab which she started as part of a lab rotation. She is advised by Jaime Pineda. |
|<html><img src="http://i1004.photobucket.com/albums/af168/sayginlab/Brain-1.jpg" height=70 width=70></html>| Maya Sapiurska | Graduate student |Maya is a PhD student in Neurosciences who completed a rotation in our lab, working on an EEG study. |
|<html><img src="http://i1004.photobucket.com/albums/af168/sayginlab/Brain-1.jpg" height=70 width=70></html>| Sophie Buon | Undergraduate student |Sophie recently graduated with a degree in Cognitive Science and a neuroscience specialization and works on biological motion processing in the lab. She also helped supervise our project for the REHS program. |
|<html><img src="http://i1004.photobucket.com/albums/af168/sayginlab/Brain-1.jpg" height=70 width=70></html>| Jack Enneking | Undergraduate student |Jack graduated from the Cognitive Science department. As part of his research assistantship in our lab, he worked on complicated Matlab scripts for retinotopic mapping.|
|<html><img src="http://i1004.photobucket.com/albums/af168/sayginlab/Brain-1.jpg" height=70 width=70></html>| Chris Gauthier | Undergraduate student |Chris worked on a project that investigated visual search asymmetries for biological motion.|
|>|>|>|>|
||||
Also see our [[Collaborators and Friends]]
Sorry this page is under construction!
Current topics include:
- Biological motion
- The perception of artificial agents (robots, animation)
- Multisensory perception
- Visuospatial attention
- Language, perception and action
- Neuropsychological and neuroimaging methods
- Special populations (stroke patients, autism spectrum disorders, signers).
- Attention and Retinotopy
<img src="ayse_brain_retin_anim.gif" width=400>
Please see our [[PUBLICATIONS]] for recent papers on these topics.
''Selected Papers''
For a more complete list, see [[Dr. Saygin's CV|http://www.sayginlab.org/cvsaygin-web.pdf]] (last updated: 06/2011)
+: Recommended reading if you are new to our lab and our research.
+ van Kemenade, B.M., Muggleton, N., Walsh, V., Saygin, A.P. (2012) The Effects of TMS over STS and Premotor Cortex on the Perception of Biological Motion. Journal of Cognitive Neuroscience. 24(4): 896–904. [[PDF|http://www.sayginlab.org/papers/TMS_jocn_Saygin.pdf]]
Saygin, A.P. & Stadler. W. (2012) The role of visual appearance in action prediction. Psychological Research. In Press. PMID: 22371203 [[PDF|ttp://www.sayginlab.org/papers/SayginStadler2012.pdf]]
+ Saygin, A.P., Chaminade, T., Ishiguro, H., Driver, J. & Frith, C. (2011) The thing that should not be: Predictive coding and the uncanny valley in perceiving human and humanoid robot actions. //Social Cognitive Affective Neuroscience//. Epub ahead of print April 2011. [[PDF|http://www.sayginlab.org/papers/SayginEtAl_2011_SCAN.pdf]]. See also articles by [[UCSD News|http://ucsdnews.ucsd.edu/newsrel/soc/20110714BrainAndroids.asp]], [[Wired|http://www.wired.com/wiredscience/2011/07/human-android-brain-response/]] [[boingboing|http://www.boingboing.net/2011/07/18/brainscans-in-the-un.html]], [[Science Daily|http://www.sciencedaily.com/releases/2011/07/110714191539.htm]] etc.
+ Saygin, A.P. (in press). Biological Motion Perception and the Brain: Neuropsychological and Neuroimaging Studies. In K. Johnson & M. Shiffrar (Eds.) //Visual Perception of the Human Body in Motion: Findings, Theory, and Practice//, Oxford series in Visual Cognition, Oxford University Press. [[PDF|http://www.sayginlab.org/papers/Saygin_2010.pdf]] +
De–Wit, L., Lefevre, C., Kentridge, R., Rees, G. & Saygin, A.P. (2011) Investigating the status of biological stimuli as objects of attention in multiple object tracking. //Plos ONE//. [[PDF or HTML|http://www.plosone.org/article/info%3Adoi%2F10.1371%2Fjournal.pone.0016232]] [[Videos and additional discussion (blog post)|http://www.sayginlab.org/blog/?p=103]]
Gilaie–Dotan, S., Bentin, S., Harel, A., Rees, G. & Saygin, A.P. (2011) Normal form from biological motion despite impaired ventral stream function. //Neuropsychologia//. [[http://www.ncbi.nlm.nih.gov/pubmed/21237181|http://www.ncbi.nlm.nih.gov/pubmed/21237181]]
+ Saygin, A.P., Chaminade, T., Urgen, B.A., Ishiguro, H. (2011) Cognitive neuroscience and robotics: A mutually beneficial joining of forces. //Workshop: Perspectives and contributions to robotics from the human sciences. Robotics: Science and Systems (RSS)//. Los Angeles, CA, July, 2011. [[PDF|http://hri.willowgarage.com/workshops/RSS2011/downloads/Saygin.pdf]]
Saygin, A.P. (2011). A computational analysis of interaction patterns in the acquisition of Turkish. //Research on Language and Computation//. Epub ahead of print. [[PDF|http://www.springerlink.com/content/53024u1g4l729242/]]
Leech, R. & Saygin, A.P. (2011). Distributed processing and cortical specialization for speech and environmental sounds in human temporal cortex. //Brain and Language//, 116(2):83-90. [[http://www.ncbi.nlm.nih.gov/pubmed/21167584|http://www.ncbi.nlm.nih.gov/pubmed/21167584]]
Saygin, A.P., Cook, J., Blakemore, S-J. (2010) Unaffected perceptual thresholds for biological and non-biological form-from-motion perception in Autism Spectrum Conditions. //PLoS ONE//, 5(10): e13491. [[doi:10.1371/journal.pone.0013491|http://www.ncbi.nlm.nih.gov/pubmed/20976151]]
Saygin, A.P., Chaminade, T., Ishiguro, H. (2010) The Perception of Humans and Robots: Uncanny Hills in Parietal Cortex. In S. Ohlsson & R. Catrambone (Eds.), //Proceedings of the 32nd Annual Conference of the Cognitive Science Society// (pp. 2716-2720). Austin, TX: Cognitive Science Society. [[PDF|http://www.sayginlab.org/papers/Saygin-EtAl-Cogsci2010.pdf]] *
Saygin, A.P., Mc Cullough, S. Alac, M & Emmorey, K. (2010) Modulation of BOLD response in motion sensitive lateral temporal cortex by real and fictive motion sentences. //Journal of Cognitive Neuroscience//, 22(11), 2480-90. [[PDF| http://www.cogsci.ucsd.edu/~asaygin/papers/JOCNFictiveFinal_Saygin.pdf]]
Tibber, M., Saygin, A.P., Grant, S., Melmoth, D., Rees, G., Morgan, M. (2010). The neural correlates of visuospatial perceptual and oculomotor extrapolation. PLoS One. 5(3):e9664. [[PDF|http://www.ncbi.nlm.nih.gov/pmc/articles/PMC2837745/pdf/pone.0009664.pdf]]
Saygin, A.P., Leech, R., & Dick, F. (2010) Nonverbal auditory agnosia with lesion to Wernicke’s area. //Neuropsychologia//, 47(14): 3275-8. [[PDF| http://www.cogsci.ucsd.edu/~asaygin/papers/AudAgnosiaNgia2009.pdf]]
Cook, J., Saygin, A.P., Swain, R. & Blakemore, S.J. (2009) Reduced sensitivity to minimum-jerk biological motion in autism spectrum conditions. //Neuropsychologia//. [[PDF| http://www.cogsci.ucsd.edu/~asaygin/papers/Cook2009.pdf]]
Cummings, A., Saygin, A.P., Bates, E., & Dick, F. (2009) Infants’ recognition of meaningful verbal and nonverbal sounds. //Language Learning and Development//, 5: 172–190. [[PDF| http://www.cogsci.ucsd.edu/~asaygin/papers/Cummings_etal_2009.pdf]]
Saygin, A.P. & Sereno, M.I. (2008) Retinotopy and attention in human occipital, temporal, parietal and frontal cortex. //Cerebral Cortex//, 18(9): 2158-68. [[PDF| http://www.cogsci.ucsd.edu/~asaygin/papers/Saygin2008CerebCortex.pdf]] [[Suppl Fig1| http://www.cogsci.ucsd.edu/~asaygin/papers/SayginSerenoSupplFig1.gif]] [[Suppl Fig2| http://www.cogsci.ucsd.edu/~asaygin/papers/SayginSerenoSupplFig2.pdf]] [[Suppl Fig3| http://www.cogsci.ucsd.edu/~asaygin/papers/SayginSerenoSuppl_Fig3CORRECTED.pdf]] [[Suppl Data| http://www.cogsci.ucsd.edu/~asaygin/papers/SayginSerenoSupplData.pdf]] [[Suppl Methods| http://www.cogsci.ucsd.edu/~asaygin/papers/SayginSerenoSupplMethods.pdf]]
Saygin, A.P., Driver, J., de Sa, V.R. (2008) In the footsteps of biological motion and multisensory perception: Judgments of audio-visual temporal relations are enhanced for upright walkers. //Psychological Science//, 19(5): 469-75. [[PDF|http://www.cogsci.ucsd.edu/~asaygin/papers/saygin_xmodal_psysci08.pdf]]
Cummings, A., Ceponiene, R., Dick, F., Saygin, A.P., Townsend, J. (2008) A developmental ERP study of verbal and non-verbal semantic processing. //Brain Research//, 1208C: 137-149. [[PDF|http://www.cogsci.ucsd.edu/~asaygin/papers/Cummings_etal_2008.pdf]]
+ Saygin, A.P. (2007) Superior temporal and premotor brain areas necessary for biological motion perception. //Brain//, 130: 2452-2461. [[PDF|http://www.cogsci.ucsd.edu/~asaygin/papers/Saygin2007Brain.pdf]]
Borovsky, A., Saygin, A.P., Dronkers, N., Bates. E. (2007) Lesion correlates of conversational speech production deficits. //Neuropsychologia//, 45(11): 2525-33. [[PDF|http://www.cogsci.ucsd.edu/~asaygin/papers/Borovsky07.pdf]]
Dick, F., Saygin, A.P., Galati, G., Pitzalis, S., Bentrovato, S., D’Amico, S., Wilson, S., Bates, E., Pizzamiglio, L. (2007) What is involved and what is necessary for complex linguistic and non-linguistic auditory processing: evidence from fMRI and lesion data. //Journal of Cognitive Neuroscience//, 19(5): 799-816. [[PDF|http://www.cogsci.ucsd.edu/~asaygin/papers/JOCN-env-fmri.pdf]]
Hagler Jr, D.J., Saygin, A.P., & Sereno, M.I. (2006) Smoothing and cluster thresholding for cortical surface-based group analysis of fMRI data. //Neuroimage//, 33: 1093-1103. [[PDF|http://www.cogsci.ucsd.edu/~asaygin/papers/HaglerSayginSereno_2006_Neuroimage.pdf]]
Cummings, A., Ceponiene, R., Koyama, A., Saygin, A.P. & Dick, F. (2006) Auditory semantic networks for words and natural sounds. //Brain Research//, 1115: 92-107. [[PDF|http://www.cogsci.ucsd.edu/~asaygin/papers/Cummings_ERP_2006.pdf]]
Saygin, A.P., Dick, F. & Bates, E. (2005) An online task for contrasting auditory processing in the verbal and nonverbal domains and norms for younger and older adults. //Behavior Research Methods//, 37(1): 99-110. [[PDF|http://www.cogsci.ucsd.edu/~asaygin/papers/SayginDickBatesBRM05.pdf]]
Bates, E., Saygin, A.P., Moineau, S., Marangolo, P. & Pizzamiglio, L. (2005) Analyzing aphasia data in a multidimensional symptom space. //Brain and Language//, 92: 106-116. [[PDF|http://www.cogsci.ucsd.edu/~asaygin/papers/BabyBathwater.pdf]]
Saygin, A.P., Wilson, S.M., Hagler Jr., D.J., Bates, E., & Sereno, M.I. (2004) Point-light biological motion perception activates human premotor cortex. //Journal of Neuroscience//, 24: 6181 - 6188. [[PDF|http://www.cogsci.ucsd.edu/~asaygin/papers/Saygin2004JNeurosci.pdf]] [[Suppl Table|http://www.cogsci.ucsd.edu/~asaygin/papers/SayginJN2004SuppTable.pdf]]
Saygin, A.P., Wilson, S.M. Dronkers, N. & Bates, E. (2004) Action comprehension in aphasia: Linguistic and non-linguistic deficits and their lesion correlates. //Neuropsychologia//, 42: 1788-1804. [[PDF|http://www.cogsci.ucsd.edu/~asaygin/papers/Saygin2004Neuropsychologia.pdf]]
Wilson, S.M., Saygin, A.P., Sereno, M.I., & Iacoboni, M. (2004) Listening to speech activates motor areas involved in speech production. //Nature Neuroscience//, 7: 701 - 702. [[PDF|http://www.cogsci.ucsd.edu/~asaygin/papers/mirrorspeech.pdf]] [[Suppl Methods|http://www.cogsci.ucsd.edu/~asaygin/papers/mirrorspeech_suppl.pdf]]
Wilson, S.M. & Saygin, A.P. (2004) Grammaticality judgment in aphasia: Deficits are not specific to syntactic structures, aphasic syndromes or lesion sites. //Journal of Cognitive Neuroscience//, 16 (2): 238-52. [[PDF|http://www.cogsci.ucsd.edu/~asaygin/papers/TJudge.pdf]]
Dick, F., Saygin, A.P., Moineau, S., Aydelott, J., & Bates, E. (2004) Language in an embodied brain: The role of animal models. //Cortex//, 40: 226-227.
Bates, E., Appelbaum, M., Salcedo, J., Saygin, A.P., Pizzamiglio, L. (2003) Quantifying dissociations in neuropsychological research. //Journal of Experimental and Clinical Neuropsychology//, 25(8), 1128-1153.
Bates, E., Wilson, S.M., Saygin, A.P., Dick, F., Sereno, M.I., Knight, R., Dronkers, N. (2003) Voxel-based lesion-symptom mapping. //Nature Neuroscience//, 6(5), 448-450. [[PDF|http://www.cogsci.ucsd.edu/~asaygin/papers/VLSM_nn1050.pdf]] [[Suppl Fig|http://www.nature.com/neuro/journal/v6/n5/extref/nn1050-S1.jpg]]
Saygin, A.P., Dick, F., Wilson, S.M., Dronkers, N.F. & Bates, E. (2003) Neural resources for processing language and environmental sounds: Evidence from aphasia. //Brain//, 126(4): 928-945. [[PDF|http://www.cogsci.ucsd.edu/~asaygin/papers/Saygin2003Brain.pdf]]
Saygin, A.P. & Cicekli, I. (2002) Pragmatics in human-computer conversation. //Journal of Pragmatics//, 34(3): 227-258. [[PDF|http://www.cogsci.ucsd.edu/~asaygin/papers/SayginJOP2002.pdf]]
Saygin, A.P., Cicekli, I., & Akman, V. (2000) Turing Test: 50 years later. //Minds and Machines//, 10(4): 463-518. [[PDF|http://www.cogsci.ucsd.edu/~asaygin/papers/MMTT.pdf]]
<!--{{{-->
<div class='header'>
<div class='gradient' macro='gradient vert #FF8614 #DA4A0D '>
<div class='titleLine' >
<span class='siteTitle' refresh='content' tiddler='SiteTitle'></span>
<span class='siteSubtitle' refresh='content' tiddler='SiteSubtitle'></span>
</div>
<div id='topMenu' refresh='content' tiddler='MainMenu'></div>
</div>
</div>
<div id='bodywrapper'>
<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 id='contentFooter'>TiddlyWiki</div>
</div>
<!--}}}-->
/***
|''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"
});
*/
//}}}
<b>Poster Presentations</b>
- UCSD has printers available for poster printing. You can produce great quality posters at a fraction of the price you'd pay at Kinko's or similar. This is the preferred method of making posters for conferences.
- Note that just before big conferences, a lot of people are printing posters so you don't want to leave it to the very last minute.
- You need to first prepare your poster first as a large document (e.g., Using Adobe Illustrator or Microsoft PowerPoint, see [[Software]]). Make sure you check the instructions for the conference re: the maximum size and whether you should use vertical or horizontal layout.
- After you prepare the poster, you will need to save it as a postscript file, which you then print using UNIX command lpr.
- The links below provide detailed instructions.
- You will need a login and password in order to connect to sdcc12.ucsd.edu. Contact Ayse to obtain the lab's login name and password.
Links:
[[ACS Cplot1 Printer|http://acms.ucsd.edu/info/cplot.shtml]]
[[ACS Cplot1 How-To|http://acms.ucsd.edu/info/cplot.shtml#howto]]
[[Bob Buffington's Excellent UCSD Poster Printing Resource|http://crl.ucsd.edu/handbook/printing/cplot1/]]
[[Collection of Resources on Poster Presentations|http://the-aps.org/careers/careers1/GradProf/gposter.htm]]
[[Preparing Professional Scientific Posters|http://www.ce.umn.edu/~smith/supplements/poster/guide.htm]]
[[Advice on Designing Scientific Posters|http://www.swarthmore.edu/NatSci/cpurrin1/posteradvice.htm]]
[[Quick Guide to Making Posters (pdf)|http://www.ncsu.edu/project/posters/NewSite/documents/QuickReferenceV2.pdf]]
<b>Oral Presentations</b>
You will no doubt be asked to give lectures, seminars, or conference presentations. Developing oral presentation skills are thus very important.
Links:
[[How to Give a Good Talk|http://www.cs.berkeley.edu/~jrs/speaking.html]]
[[How to Give an Academic Talk(pdf)|http://www.si.umich.edu/pne/PDF/howtotalk.pdf]]
[[How to Give a Scientific Talk (pdf)|http://academic.evergreen.edu/H/heyingh/downloads/givingatalk.pdf]]
[[How to Give a Good Lecture|http://www.ehow.com/how_2123715_give-good-lecture.html]]
[[University Lectures|http://www.insidehighered.com/advice/instant_mentor/weir5]]
[[Preparing Lectures for Large Groups|http://teaching.berkeley.edu/bgd/largelecture.html]]
[[The Scholarly Lecture|http://chronicle.com/article/The-Scholarly-Lecture-How-to/34897]]
[[How to Give a Lecture Without Actually Saying Anything (humor, pdf)|http://www.jstor.org/stable/pdfplus/20342906.pdf]]
[[Tips from Toastmasters|http://www.toastmasters.org/MainMenuCategories/FreeResources/NeedHelpGivingaSpeech/TipsTechniques.aspx]]
[[Huge List of Presentation Blogs|http://sixminutes.dlugan.com/public-speaking-blogs/]]
[[The First Few Lines|http://science-professor.blogspot.com/2007/06/first-two-lines.html]]
[[You are Not Boring|http://science-professor.blogspot.com/2007/02/i-know-i-am-boring-you.html]]
[[The 20 Min Talk|http://scienceblogs.com/drugmonkey/2009/03/repost_short_seminar_skillz.php]]
[[The 10 Min Talk|http://bluelabcoats.wordpress.com/2009/02/16/10-minute-talks/]]
[[What (Not) to Wear|http://chronicle.com/article/Am-I-Looking-Good-or-What-/65238/]]
See also [[(Business) Papers]], [[Conferences]], [[Productivity]], [[Your Career]]
Tools:
[[Mendeley|http://www.mendeley.com/]] - PDF and reference management
[[Dropbox|https://www.getdropbox.com/home#/]] - File sharing and syncing across computers
[[Labmeeting.com| http://www.labmeeting.com]] - Collecting and organizing journal articles
[[Introducing the Hipster PDA|http://www.43folders.com/2004/09/03/introducing-the-hipster-pda]]
Links:
[[Overcoming Procrastination|http://tomprofblog.mit.edu/2007/11/20/833-overcome-procrastination/]]
[[Tips for E-mail Addiction|http://tomprofblog.mit.edu/2007/03/12/783-seven-tips-for-dealing-with-email-addiction/#more-191]]
[[A Plea for the Horizontally Organized (John Perry)|http://www.structuredprocrastination.com/light/organization.php]]
[[Structured Procrastination (and other essays by John Perry)]]
[[Productivity Tips for Academics|http://matt.might.net/articles/productivity-tips-hints-hacks-tricks-for-grad-students-academics/]]
[[On Efficiency|http://science-professor.blogspot.com/2007/10/thoughts-on-efficiency.html]]
See also [[(Business) Papers]], [[Computing]], [[Lab Notebooks]], [[Work-Life Balance]], [[Writing]], [[Advice]]
[[UCSD News release: "Your Brain on Androids"|http://ucsdnews.ucsd.edu/newsrel/soc/20110714BrainAndroids.asp]]
[[San Diego Union Tribune article (on the cover no less!)|http://www.signonsandiego.com/news/2011/aug/04/ucsd-exploring-why-some-robots-creep-people-out/]]
[[Why Brains Get Creeped Out by Androids (Wired)|http://www.wired.com/wiredscience/2011/07/human-android-brain-response/]]
[[Brainscans in the Uncanny Valley (boingboing)|http://www.boingboing.net/2011/07/18/brainscans-in-the-un.html]]
[[Your Brain on Androids (Science Daily)|http://www.sciencedaily.com/releases/2011/07/110714191539.htm]]
[[Brain responses to androids in the ‘uncanny valley’ (Kurzweil AI)|http://www.kurzweilai.net/brain-responses-to-androids-in-the-uncanny-valley]]
[[The Uncanny Valley and Intellectual Uncertainty|http://www.gorelets.com/uncanny/theory/the-uncanny-valley-and-intellectual-uncertainty/]]
[[UCSD News release on Calit2 Strategic Research Opportunities Awards featuring our work|http://ucsdnews.ucsd.edu/newsrel/science/05-13ResearchOpportunities.asp]]
[[Interview with Dr. Saygin (Inspirational Woman in Neuroscience, WISE Campaign)|http://www.wisecampaign.org.uk/search.cfm?widCall1=customWidgets.contentItem_show_1&cit_id=4108]]
[[UCSD Science & Engineering Library profile for Women’s History Month|http://libraries.ucsd.edu/locations/se/events/women-in-science-2011.html]] [[PDF|http://libraries.ucsd.edu/locations/se/_files/women-in-science/Saygin_Final.pdf]]
[[Inside the Brain of Roberto Donadoni (BBC Sports)|http://news.bbc.co.uk/sport2/hi/football/euro_2008/7386783.stm]]
[[What puts the creepy into robot crawlies? (New Scientist)|http://www.macdorman.com/kfm/press/Clippings/NewScientist27Oct2007.pdf]]
[[The Second Uncanny Valley (Open the Future, IEEE)|http://ieet.org/index.php/IEET/more/2083/]]
[[Voxel-Based Lesion-Symptom Mapping (VLSM) UCSD Press Release|http://ucsdnews.ucsd.edu/newsrel/soc/dbatesvlsm.htm]]
[[Kavli Brain/Mind Institute Funds Innovative Research|http://ucsdnews.ucsd.edu/newsrel/science/kavli02_09_05.asp]]
[[The Turing Test Page|http://www.fil.ion.ucl.ac.uk/~asaygin/tt/ttest.html]]
Links:
[[Public Education and Outreach (SFN)|http://www.sfn.org/index.aspx?pagename=PublicEducationOutreach]]
[[Brain Awareness Week|http://www.sfn.org/baw/]]
See also, [[Media (PhD Comics)]], [[(Business) Papers]], [[Conferences]], [[Funding]], [[News]], [[PUBLICATIONS]] and [[LAB]]
Research Experience for High School Students (REHS) is a new volunteer internship program for high school students administered by the San Diego Supercomputer Center. Our lab is proud to be part of this program which will inspire a new generation of students to participate in research.
For summer 2010, our REHS trainees were Jeff Compton, Ziru (Miriam) Liu, Tyler Simowitz, and Eugenio zur Nieden. They worked with Dr. Saygin, Burcu A. Urgen, Sophie Buon and Jo Frabetti.
About the project: Artificial agents such as humanoid robots and animated characters are actively being developed for use in various domains such as entertainment, retail, education, and healthcare. But how should artificial agents be designed? It may seem like a good idea to make artificial agents look as humanlike as possible, especially if they will be used in social settings. However, we soon encounter a phenomenon called the “uncanny valley”: As an agent’s appearance is made more humanlike, people’s reactions to it becomes more positive and empathetic, until a point at which the increasing humanlikeness leads to the agent being considered repulsive, disturbing, or “zombielike”. For example, many viewers found the film Polar Express creepy, whereas Avatar received more positive evaluations. Despite significant anecdotal evidence, there is little scientific data to characterize the uncanny valley. In our lab we are exploring the uncanny valley using various different methods such as perceptual experiments, physiological recording (GSR, heart rate), and neuroimaging.
As part of the experience, the students prepared poster presentations about their work:
[[Jeff's poster|http://www.sayginlab.org/rerehsstudentsposters/jeff.jpg]]
[[Miriam's poster|http://www.sayginlab.org/rerehsstudentsposters/ziru.pdf]]
[[Tyler's poster|tyler.pdf]]
[[Gene's poster|gene.pdf]]
Continued focus on research integrity and ethics is a crucial part of career development for scientists at all levels. We regularly discuss these issues at lab meetings. You may also be required or encouraged to participate in courses or workshops on research integrity and ethics.
While gross misconduct is relatively rare, you will almost certainly experience ethical issues in your academic career. Most situations arise from poor or insufficient communication rather than malice. You can therefore develop communication skills to minimize such occurrences.
Two <b>key</b> tips:
- Never make assumptions.
- If in doubt, ask your PI.
More specifically:
- Ask your PI about general [[Lab Policies]]. The specifics will be situation-dependent, but find out what her general procedures are re: Authorship, [[Funding]], [[Conferences]], [[Data Collection]], [[Data Analysis]] [[Lab Notebooks]], [[Mentoring]], Collaborations, Vacations, etc...
- Always clarify your role in a project with your PI and collaborators. Examples: What specifically is expected of you? What are your responsibilities? Are you expected to do data collection, analysis, writing? What can you expect from others who are involved in the project? What kind of notes or reports are you expected to keep and how? Will you get course credit? Will you be funded for doing the work? Who will pay for research expenses, conference travel, or publication costs? Will you be an author on the paper? If so, who else is on it and what is the expected order of authorship?
- Discussing the specifics at the start of a project is great. But communication also needs to be maintained as data comes in, people come and go, research interests change... You must discuss your ideas, research progress, authorship plans regularly with your PI and collaborators in an honest and clear fashion.
- Many people feel awkward about having direct conversations and may tend to avoid them. It is also possible that national origin, culture, gender, or personality affects how people feel about direct confrontation. You have to do your best to overcome any aversion you may have to open and direct communication, and to some degree, assertiveness. It is well worth it to step out of your comfort zone a little in order to avoid problems down the line. You must work on being a clear and open communicator, while remaining polite and calm. See also, [[Your Career]].
- Choose a communication style that best suits your personality. If you express yourself better in person, schedule a meeting. If you are more comfortable communicating in writing, use e-mail. It is generally a good idea to keep written record. Consider making notes of what was discussed and/or decided, and e-mail or otherwise share with everyone involved.
- Some people you work with may have poor "source memory" - i.e., they'll remember what was discussed, but may not remember from where or whom the idea came. If you feel you are not getting credit for your ideas or your work, you should gently but assertively discuss this with your PI.
Local Links:
[[UCSD Integrity of Research Policy|http://research.ucsd.edu/ethics/ucsd_policy.html]]
[[UCSD Research Ethics|http://research.ucsd.edu/ethics/index.html]]
[[UCSD Ethics Homepage|http://ethics.ucsd.edu/]]
[[Ethics Center|http://ethicscenter.net/]]
[[San Diego Research Ethics Consortium (SDREC)|http://sdrec.ucsd.edu/]]
[[UCSD Office of Sexual Harassment Prevention and Policy|http://oshpp.ucsd.edu/]]
[[Courses on Research Ethics|http://ethics.ucsd.edu/courses/index.html]]
[[Policy on Conflict of Interest|http://adminrecords.ucsd.edu/ppm/docs/200-13.HTML]]
[[Faculty Code of Conduct (pdf)|http://www.ucop.edu/acadadv/acadpers/apm/apm-015.pdf]]
[[Ombuds Office|http://ombuds.ucsd.edu/]]
[[UC System-wide Policies|http://www.ucop.edu/research/policies/ucpols.html]]
Other Resources:
[[Summary of Research on Bias|http://wiseli.engr.wisc.edu/docs/BiasBrochure_2ndEd.pdf]]
[[Introduction to the Responsible Conduct of Research(ORI)|http://ori.dhhs.gov/education/products/RCRintro/]]
[[On Being a Scientist|http://sites.nationalacademies.org/PGA/cosepup/obas/index.htm]]
[[Research Policies (HHMI)|http://www.hhmi.org/about/research/policies.html]]
[[Training in Responsible Conduct (NIH)|http://grants1.nih.gov/training/responsibleconduct.htm]]
[[Responsible Conduct (Soceity for Neuroscience)|http://www.sfn.org/index.aspx?pagename=responsibleConduct]]
[[Responsible Conduct (Research Education Consortium)|http://www.rcrec.org/]]
[[Council of Science Editors Task Force on Authorship|http://www.councilscienceeditors.org/services/atf_whitepaper.cfm]]
[[Uniform Requirements for Manuscripts Submitted to Biomedical Journals (pdf)|http://www.icmje.org/urm_full.pdf]]
Links:
[[Article on Fabrication and Falsifying (Plos ONE)|http://www.plosone.org/article/info%3Adoi%2F10.1371%2Fjournal.pone.0005738]]
[[On Ghostwriting (Inside Higher Ed)|http://www.insidehighered.com/news/2009/09/11/ghostwrite]]
[[Does Gender Matter?|http://www.nature.com/nature/journal/v442/n7099/full/442133a.html]]
See also [[Human Subjects]], [[Joining the Lab]], [[Lab Policies]], [[Mentoring]], [[Your Career]].
Originally posted 21 July 2009.
Only few hours use at this point - initial impressions
Aside from the name (Tiddler, Tiddling... Sound like something a toddler would say...), I really quite like it.
At first I did not quite get it.. Somehow the first few example sites I saw did not make it obvious to me how I could use it.
The main advantage of Tiddlywiki is that while you have the experience of browsing through a whole wiki/website/blog/what-have-you, the whole thing is a single html file!
You can use it more like a blog, more like a wiki, as a list of (searchable) notes... You can keep it in various levels of organisation or disarray. You can add carefully composed, long, detailed items, or short little blurbs, or both... No matter how you use it, it's one file and nothing to else to save or track... Edit on any browser, save, carry on your USB stick or on your phone... Or upload or e-mail to share ... I really like this one file thing!
Images or any files you want to include need to be uploaded/stored someplace (you probably want this to be online unless you're intending your page to be only available locally) and you simply add a link.
There are only a few bits of syntax you need to learn - and CSS style sheets can be embedded as well. Very efficient. To be fair, any efficiency in web design easily impresses me, as I have only a few months ago took the big leap from making my websites using a text editor - (yes, that means hand coding every single line of HTML). But I really think being able to make a basic website with content in less than an hour, has to mean Tiddlywiki is on the low maintenance side...
I also like that you can make progress without having to outline or organize a whole website. Often, you don't have time to plan all the details out but you have a bit of time to get started or add content. Tiddlywiki is great for this sort of thing.
You can use it more interactively or for collaboration between people as well. I am not currently looking for that functionality so have not tried it, but basically you want to host your file online and make changes to the html file as you make edits online. I tried tiddlyspot for this, but I was not satisfied. I found it hard to customize. Then I had trouble uploading my local edits back onto tiddlyspot, so I gave up on it. I'm editing my file locally and will just upload it to my website as an html file...
For those of you who are into it, there are several Tiddlywiki templates for Getting Things Done, including those customized for [[Hipster PDA]]. I'll probably give one of these a try soon... Right now I'm merely in "Not Getting Undone" mode... (Don't worry if you have no idea what I'm talking about, I barely do...)
I'm making a research-related website now and it might end up actually being a lab handbook type of thing... I can also envision using this for other purposes: course webpages, lab notebooks, project management, to do lists, music/book reviews, link or reference collections...
Basically if you need to make a quick, searchable, content-focused, low maintenance and efficient website, whether it's just for yourself or to share with others, consider Tiddlywiki...
I want to put it on record though that I refuse to call it tiddling, or tiddlering, or tidding or any other silly newfangled faux-onomatopoeic nonsense...
Links
http://www.tiddlywiki.com/
http://www.giffmex.org/twfortherestofus.html
Examples:
http://deferentialgeometry.org
http://espringer.web.wesleyan.edu
http://reasoningwell.tiddlyspot.com
http://technology-escapades.net/qualitative.htm
GTD:
http://tiddlywiki.org/wiki/MonkeyGTD
http://www.dcubed.ca/Welcome_to_d-cubed.html
http://nathanbowers.com/gtdtw/
http://www.checkettsweb.com/tw/gtd_tiddlywiki.htm
A zooming interface:
http://osmosoft.com/cecily/
See also, [[About this Wiki]], [[LAB]]
[img[http://apsaygin.googlepages.com/a_workbetter_cropped.jpg]]
Biological Motion Demos
- [[Mather Demos|http://www.lifesci.sussex.ac.uk/home/George_Mather/Motion/BM.HTML]]
- [[Troje Lab|http://www.biomotionlab.ca/demos.php]]
- [[Troje Interactive Demo|http://www.biomotionlab.ca/Demos/BMLwalker.html]]
Neuroimaging
- [[FMRI for Dummies| http://psychology.uwo.ca/fmri4newbies]]
- [[Simulated MRI Volumes| http://www.bic.mni.mcgill.ca/brainweb/selection_normal.html]]
- [[OHBM| http://www.humanbrainmapping.org/i4a/pages/index.cfm?pageid=1]]
Neuroscience
- [[Neuroscience for Kids| http://faculty.washington.edu/chudler/neurok.html]]
- [[Comparative Mammalian Brain Collection| http://brainmuseum.org/]]
- [[The Whole Brain Atlas| http://www.med.harvard.edu/AANLIB/home.html]]
- [[Cognitive Neuroscience Society| http://www.cogneurosociety.org/]]
- [[Society for Neuroscience| http://www.sfn.org/]]
- [[Faculty for Undergraduate Neuroscience| http://www.funfaculty.org/]]
Vision Science
- [[VSS| http://www.visionsciences.org/]]
- [[Viperlib| http://viperlib.york.ac.uk/]]
- [[Vision Science List | http://visionscience.com/mailman/listinfo/visionlist]]
Visual Illusions
- [[Illusions|http://www.michaelbach.de/ot/index.html]]
- [[More Illusions|http://dragon.uml.edu/psych/illusion.html]]
- [[And More Illusions|http://psy.ucsd.edu/~kdobkins/illusions.html]]
See also [[Collaborators and Friends]], [[Seminars, Colloquia, Events of Interest]], [[Some academic links]], [[Software]] [[LAB]], [[PUBLICATIONS]] and [[LINKS]]
Laughing never hurts. Here's a collection of some selected [[PhD Comics|http://www.phdcomics.com]]
[[<img src="http://www.phdcomics.com/comics/archive/phd072108s.gif" width=500>|http://www.phdcomics.com/comics/archive/phd072108s.gif]]
[[<img src="http://www.phdcomics.com/comics/archive/phd031910s.gif" width=500>|http://www.phdcomics.com/comics/archive/phd031910s.gif]]
[[<img src="http://www.phdcomics.com/comics/archive/phd062707s.gif" width=500>|http://www.phdcomics.com/comics/archive/phd062707s.gif]]
[[<img src="http://www.phdcomics.com/comics/archive/phd040609s.gif" width=500>|http://www.phdcomics.com/comics/archive/phd040609s.gif]]
[[<img src="http://www.phdcomics.com/comics/archive/phd033009s.gif" width=500>|http://www.phdcomics.com/comics/archive/phd033009s.gif]]
[[<img src="http://www.phdcomics.com/comics/archive/phd082508s.gif" width=500>|http://www.phdcomics.com/comics/archive/phd082508s.gif]]
[[<img src="http://www.phdcomics.com/comics/archive/phd102008s.gif" width=500>|http://www.phdcomics.com/comics/archive/phd102008s.gif]]
[[<img src="http://www.phdcomics.com/comics/archive/phd082908s.gif" width=500>|http://www.phdcomics.com/comics/archive/phd082908s.gif]]
[[<img src="http://www.phdcomics.com/comics/archive/phd022208s.gif" width=500>|http://www.phdcomics.com/comics/archive/phd022208s.gif]]
[[<img src="http://www.phdcomics.com/comics/archive/phd080709s.gif" width=500>|http://www.phdcomics.com/comics/archive/phd080709s.gif]]
[[<img src="http://www.phdcomics.com/comics/archive/phd080910s.gif" width=500>|http://www.phdcomics.com/comics/archive/phd080910s.gif]]
[[<img src="" width=500>|]]
[[<img src="" width=500>|]]
See also [[Graduate School]], [[Media (PhD Comics)]], [[LAB]]
Some relevant seminar series, talks and colloquia at UCSD:
- Cog Neuro Brownbags. Tue Noon. [[E-mail list|https://mailman.ucsd.edu/mailman/listinfo/cogneuro-brownbag-l]]
- Neurosciences Seminars. Tue 4 pm. [[Web|http://neurosciences.ucsd.edu/other.php?id=seminar]]
- Salk Seminars. Thu 4 pm (and others). [[Web|http://www.salk.edu/events/]] [[E-mail list|http://snake.salk.edu/mailman/subscribe/salk-bulletin]]
- Center for Functional MRI Talks. Mon Noon. [[Web|http://cfmriweb.ucsd.edu/event/LabTalk.shtml]]
- Calit2 Events. [[Web|http://www.calit2.net/events/index.php]]
- Center for Research in Language (CRL) Talks. Tue 4 pm. [[Web|http://crl.ucsd.edu/talks]]
- Psych Department Events [[Web|http://psy.ucsd.edu/events]]
- Computer Science AI Seminars [[E-mail list|https://csemail.ucsd.edu/mailman/listinfo/ai]]
- Center for Human Development Seminars [[Web|http://www.chd.ucsd.edu/seminar]]
See also, [[Conferences]], [[Presentations, Talks and Posters]].
/***
This CSS by DaveBirss.
***/
/*{{{*/
.tabSelected {
background: #fff;
}
.tabUnselected {
background: #eee;
}
#sidebar {
color: #000;
background: transparent;
}
#sidebarOptions {
background: #fff;
}
#sidebarOptions input {
border: 1px solid #ccc;
}
#sidebarOptions input:hover, #sidebarOptions input:active, #sidebarOptions input:focus {
border: 1px solid #000;
}
#sidebarOptions .button {
color: #999;
}
#sidebarOptions .button:hover {
color: #000;
background: #fff;
border-color:white;
}
#sidebarOptions .button:active {
color: #000;
background: #fff;
}
#sidebarOptions .sliderPanel {
background: transparent;
}
#sidebarOptions .sliderPanel A {
color: #999;
}
#sidebarOptions .sliderPanel A:hover {
color: #000;
background: #fff;
}
#sidebarOptions .sliderPanel A:active {
color: #000;
background: #fff;
}
.sidebarSubHeading {
color: #000;
}
#sidebarTabs {`
background: #fff
}
#sidebarTabs .tabSelected {
color: #000;
background: #fff;
border-top: solid 1px #ccc;
border-left: solid 1px #ccc;
border-right: solid 1px #ccc;
border-bottom: none;
}
#sidebarTabs .tabUnselected {
color: #999;
background: #eee;
border-top: solid 1px #ccc;
border-left: solid 1px #ccc;
border-right: solid 1px #ccc;
border-bottom: none;
}
#sidebarTabs .tabContents {
background: #fff;
}
#sidebarTabs .txtMoreTab .tabSelected {
background: #fff;
}
#sidebarTabs .txtMoreTab .tabUnselected {
background: #eee;
}
#sidebarTabs .txtMoreTab .tabContents {
background: #fff;
}
#sidebarTabs .tabContents .tiddlyLink {
color: #999;
border:none;
}
#sidebarTabs .tabContents .tiddlyLink:hover {
background: #fff;
color: #000;
border:none;
}
#sidebarTabs .tabContents {
color: #000;
}
#sidebarTabs .button {
color: #666;
}
#sidebarTabs .tabContents .button:hover {
color: #000;
background: #fff;
}
#sidebar {color:#999;}
/*}}}*/
[[33ad/GTDtwcal|http://33ad.org/tools/gtdtwcal.php?month=8&year=2009]]
Wiki/Lab Handbook for the UCSD Cognitive Neuroscience and Neuropsychology Lab
[[Psychtoolbox | http://www.psychtoolbox.org/wikka.php?wakka=HomePage]]
[[AFNI | http://afni.nimh.nih.gov/afni]]
[[SPM | http://www.fil.ion.ucl.ac.uk/spm-]]
[[FSL | http://www.fmrib.ox.ac.uk/fsl]]
[[Freesurfer | http://surfer.nmr.mgh.harvard.edu]]
A collection of links... Advice, resources, wisdom, or just fun!
[[Baby Gap | http://science-professor.blogspot.com/2009/07/baby-gap.html]]
[[Grad school: UK vs. USA | http://chemicalbilology.blogspot.com/2008/06/grad-school-uk-vs-usa.html]]
[[Thinkwork. Workthink. | http://science-professor.blogspot.com/2008/10/think-work.html]]
[[Grad student deconstructs takeout menu | http://www.theonion.com/content/node/27794?utm_source=Distributed&utm_medium=Embedded%2BHTML&utm_campaign=Widgets]]
[[Hunting for jobs at liberal arts colleges | http://science-professor.blogspot.com/2006/11/get-job.html]]
If you have a problem with procrastination (even if you don't), the following essays by philosopher and academic John Perry are highly recommended. I know many academics who struggle with procrastination and Perry's essays not only provide humor and camaraderie, but also insight.
[[Structured Procrastination|http://www.structuredprocrastination.com/index.php]]
[[Perfectionism and Procrastination|http://www.structuredprocrastination.com/light/perfectionism.php]]
See more at: [[Productivity]].
[[SideBarWG]]
/***
!Top Menu Styles
***/
/*{{{*/
#topMenu br {display:none; }
#topMenu { background: #000 ; color:#fff;padding: 1em 1em;}
/*}}}*/
/***
!General
***/
/*{{{*/
body {
background: #fff;
margin: 0 auto;
}
body {background-image: url(http://www.cogsci.ucsd.edu/~asaygin/Neurons4.jpg);
background-repeat: repeat-y; background-position: top; background-attachment: fixed; backgound-color: transparent; font-family: Verdana;}
#contentWrapper{
background: #fff;
border: 0;
margin: 0 auto;
width: 792px;
padding:0;
}
/*}}}*/
/***
!Header rules
***/
/*{{{*/
.titleLine{
margin: 80px auto 0em ;
margin-left:1.7em;
margin-bottom: 40px;
padding: 0;
text-align: left;
color: #fff;
}
.siteTitle {
font-size: 2.6em;
}
.siteSubtitle {
font-size: 1.3em;
display: block;
margin: .5em auto 1em;
}
.gradient {margin: 0 auto;}
.header {
background: #fff;
margin: 0 auto;
padding:0 12px;
width: 768px;
}
/*}}}*/
/***
!Display Area
***/
/*{{{*/
#bodywrapper {margin:0 12px; padding:0;background:#fff; height:1%}
#displayArea{
margin: 0em 16em 0em 1em;
text-align: left;
}
.tiddler {
padding: 1em 1em 0em 0em;
}
h1,h2,h3,h4,h5 { color: #000; background: transparent; padding-bottom:2px; border-bottom: 1px dotted #666; }
.title {color:black; font-size:1.8em; border-bottom:1px solid #333; padding-bottom:0.3px;}
.subtitle { font-size:90%; color:#ccc; padding-left:0.25em; margin-top:0.1em; }
.shadow .title {
color: #aaa;
}
.tagClear{
clear: none;
}
* html .viewer pre {
margin-left: 0em;
}
* html .editor textarea, * html .editor input {
width: 98%;
}
.tiddler {margin-bottom:1em; padding-bottom:0em;}
.toolbar .button {color:#bbb; border:none;}
.toolbar .button:hover, .toolbar .highlight, .toolbar .marked, .toolbar a.button:active {background:transparent; color:#111; border:none; text-decoration:underline;}
#sidebar .highlight, #sidebar .marked {background:transparent;}
.tagging, .tagged {
border: 1px solid #eee;
background-color: #F7F7F7;
}
.selected .tagging, .selected .tagged {
background-color: #eee;
border: 1px solid #bbb;
}
.tagging .listTitle, .tagged .listTitle {
color: #bbb;
}
.selected .tagging .listTitle, .selected .tagged .listTitle {
color: #222;
}
.tagging .button:hover, .tagged .button:hover {
border: none; background:transparent; text-decoration:underline; color:#000;
}
.tagging .button, .tagged .button {
color:#aaa;
}
.selected .tagging .button, .selected .tagged .button {
color:#000;
}
.viewer blockquote {
border-left: 3px solid #000;
}
.viewer pre, .viewer code {
border: 1px dashed #ccc;
background: #eee;}
.viewer hr {
border: 0;
border-top: solid 1px #333;
margin: 0 8em;
color: #333;
}
.highlight, .marked {background:transparent; color:#111; border:none; text-decoration:underline;}
.viewer .highlight, .viewer .marked {text-decoration:none;}
#sidebarTabs .highlight, #sidebarTabs .marked {color:#000; text-decoration:none;}
.tabSelected {
color: #000;
background: #fff;
border-top: solid 1px #ccc;
border-left: solid 1px #ccc;
border-right: solid 1px #ccc;
border-bottom: none;
}
.viewer .tabSelected:hover{color:#000;}
.viewer .tabSelected {font-weight:bold;}
.tabUnselected {
color: #999;
background: #eee;
border-top: solid 1px #ccc;
border-left: solid 1px #ccc;
border-right: solid 1px #ccc;
border-bottom: solid 1px #ccc;
padding-bottom:1px;
}
.tabContents {
background: #fff;
color: #000;
}
/*}}}*/
/***
!!!Tables
***/
/*{{{*/
.viewer table {
border: 1px solid #000;
}
.viewer th, thead td {
background: #000;
border: 1px solid #000;
color: #fff;
}
.viewer td, .viewer tr {
border: 1px solid #111;
}
/*}}}*/
/***
!!!Editor area
***/
/*{{{*/
.editor input, .editor textarea {
border: 1px solid #ccc;
}
.editor {padding-top:0.3em;}
.editor textarea:focus, .editor input:focus {
border: 1px solid #333;
}
/*}}}*/
/***
!Sidebar
***/
/*{{{*/
#sidebar{
position:relative;
float:right;
margin-bottom:1em;
display:inline;
width: 18em;
}
#sidebarOptions .sliderPanel {
background: #eee; border:1px solid #ccc;
}
/*}}}*/
/***
!Body Footer rules
***/
/*{{{*/
#contentFooter {
text-align: left;
clear: both;
color:#fff;
background: #000;
padding: 1em 2em;
font-weight:bold;
}
/*}}}*/
/***
!Link Styles
***/
/*{{{*/
a{
color: #000;
}
a:hover{
color: #FF6600;
background:#fff;
}
.button {
color: #000;
border: 1px solid #fff;
}
.button:hover {
color: #fff;
background: #ff8614;
border-color: #000;
}
.button:active {
color: #fff;
background: #ff8614;
border: 1px solid #000;
}
.tiddlyLink {border-bottom: 1px dotted #000;}
.tiddlyLink:hover {border-bottom: 1px dotted #FF6600;}
.titleLine a {border-bottom: 1px dotted #FF9900;}
.titleLine a:hover {border-bottom: 1px dotted #fff;}
.siteTitle a, .siteSubtitle a{
color: #fff;
}
.viewer .button {border: 1px solid #ff8614; font-weight:bold;}
.viewer .button:hover, .viewer .marked, .viewer .highlight{background:#ff8614; color:#fff; font-weight:bold; border: 1px solid #000;}
#topMenu .button, #topMenu .tiddlyLink {
margin-left:0.5em; margin-right:0.5em;
padding-left:3px; padding-right:3px;
color:white;
}
#topMenu .button:hover, #topMenu .tiddlyLink:hover { background:#000; color:#FF8814}
#topMenu a{border:none;}
/*}}}*/
/***
!Message Area /%=================================================%/
***/
/*{{{*/
#messageArea {
border: 4px dotted #ff8614;
background: #000;
color: #fff;
font-size:90%;
}
#messageArea .button {
padding: 0.2em;
color: #000;
background: #fff;
text-decoration:none;
font-weight:bold;
border:1px solid #000;
}
#messageArea a {color:#fff;}
#messageArea a:hover {color:#ff8614; background:transparent;}
#messageArea .button:hover {background: #FF8614; color:#fff; border:1px solid #fff; }
/*}}}*/
/***
!Popup /%=================================================%/
***/
/*{{{*/
.popup {
background: #ff8814;
border: 1px solid #333;
}
.popup hr {
color: #333;
background: #333;
border-bottom: 1px;
}
.popup li.disabled {
color: #333;
}
.popup li a, .popup li a:visited {
color: #eee;
border: none;
}
.popup li a:hover {
background: #ff8614;
color: #fff;
border: none;
text-decoration:underline;
}
/*}}}*/
.blog h2, .blog h3, .blog h4{
margin:0;
padding:0;
border-bottom:none;
}
.blog {margin-left:1.5em;}
.blog .excerpt {
margin:0;
margin-top:0.3em;
padding: 0;
margin-left:1em;
padding-left:1em;
font-size:90%;
border-left:1px solid #ddd;
}
#tiddlerWhatsNew h1, #tiddlerWhatsNew h2 {border-bottom:none;}
div[tags~="RecentUpdates"], div[tags~="lewcidExtension"] {margin-bottom: 2em;}
#hoverMenu .button, #hoverMenu .tiddlyLink {border:none; font-weight:bold; background:#f37211; color:#fff; padding:0 5px; float:right; margin-bottom:4px;}
#hoverMenu .button:hover, #hoverMenu .tiddlyLink:hover {font-weight:bold; border:none; color:#f37211; background:#000; padding:0 5px; float:right; margin-bottom:4px;}
#topMenu .fontResizer {float:right;}
#topMenu .fontResizer .button{border:1px solid #000;}
#topMenu .fontResizer .button:hover {border:1px solid #f37211; color:#fff;}
#sidebarTabs .txtMainTab .tiddlyLinkExisting {
font-weight: normal;
font-style: normal;
}
#sidebarTabs .txtMoreTab .tiddlyLinkExisting {
font-weight: bold;
font-style: normal;
}
.blog h2, .blog h3, .blog h4{
margin:0;
padding:0;
border-bottom:none;
}
.blog {margin-left:1.5em;}
.blog .excerpt {
margin:0;
margin-top:0.3em;
padding: 0;
margin-left:1em;
padding-left:1em;
font-size:90%;
border-left:1px solid #ddd;
}
#tiddlerWhatsNew h1, #tiddlerWhatsNew h2 {border-bottom:none;}
div[tags~="RecentUpdates"], div[tags~="lewcidExtension"] {margin-bottom: 2em;}
#hoverMenu {background:transparent;}
#hoverMenu .button, #hoverMenu .tiddlyLink {border:none; font-weight:bold; background:#f37211; color:#fff; padding:0 5px; float:right; margin-bottom:4px;}
#hoverMenu .button:hover, #hoverMenu .tiddlyLink:hover {font-weight:bold; border:none; color:#f37211; background:#000; padding:0 5px; float:right; margin-bottom:4px;}
#topMenu .fontResizer {float:right;}
#topMenu .fontResizer .button{border:1px solid #000;}
#topMenu .fontResizer .button:hover {border:1px solid #f37211; color:#fff;}
#sidebarTabs .txtMainTab .tiddlyLinkExisting {
font-weight: normal;
font-style: normal;
}
#sidebarTabs .txtMoreTab .tiddlyLinkExisting {
font-weight: bold;
font-style: normal;
}
I often talk about TPS reports, referring to the concept from the movie [[Office Space|http://www.imdb.com/title/tt0151804/]]. You can find out about TPS reports [[here|http://en.wikipedia.org/wiki/TPS_Reports]] if you're not familiar with the movie,
Unfortunately, academia has its own share of bureaucracy and TPS reports. A key skill to develop then is to handle only the TPS reports that absolutely must be done (e.g. anything related to [[Funding]], [[Human Subjects]], [[Lab Notebooks]]) and minimize or eliminate the rest so that you can focus your time and energy on what is really important ([[(Business) Papers]])
See also, [[Productivity]].
[[The Consumerist: Shoppers Bite Back|http://consumerist.com/]]
/%
!legal
|Name|TwitterTabs|
|Source|http://www.TiddlyTools.com/#TwitterTabs|
|Version|2.0.1|
|Author|Eric Shulman|
|License|http://www.TiddlyTools.com/#LegalStatements|
|~CoreVersion|2.1|
|Type|transclusion|
|Description|Find recent tweets by keyword or username and show results in tabs|
!end
- - - - - DO NOT EDIT ABOVE THIS LINE - - - - -
- - - - - TABSET SECTION - - - - -
!tabset
<<tabs txtTwitterTabs
'@UCSDCogNeuro' 'show tweets from @UCSDCogNeuro' [[TwitterTabs##UCSDCogNeuro]]
'@XtraStriate (A.P. Saygin)' 'show tweets from @xtrastriate' [[TwitterTabs##xtrastriate]]
'find...' 'find tweets containing...' [[TwitterTabs##search]]
'from...' 'show tweets from...' [[TwitterTabs##user]]
>>
!UCSDCogNeuro
<<tiddler [[TwitterTabs##showUserResults]] with: UCSDCogNeuro>>
!xtrastriate
<<tiddler [[TwitterTabs##showUserResults]] with: xtrastriate>>
!end
- - - - - TWEETFORMAT SECTION - - - - -
reminder: %0=image, %1=name, %2=text, %3=timestamp
!tweetformat
@@font-size:8pt;display:block;line-height:110%;
~~[<img[%0]]''[[%1|http://twitter.com/%1]] //%3//:''~~
%2 {{tagClear{
}}}@@
!end
- - - - - DO NOT EDIT BELOW THIS LINE - - - - -
!info
<<tiddler TwitterTabs##legal>>Usage
<<<
{{{
<<tiddler TwitterTabs>>
}}}
<<<
Configuration
<<<
Copy TwitterTabs into your document. Then, ''edit the tiddler to suit your preferences'' by adding/removing definitions from the ''tabset'' and related sections:<<tiddler TwitterTabs##showcode with: tabset>><<tiddler TwitterTabs##showcode with: tiddlytools>><<tiddler TwitterTabs##showcode with: jermolene>>You can also customize the appearance of the individual tweets by editing the ''tweetformat'' section, which uses //replacement markers// to insert values extracted from each tweet returned by Twitter's search results, where ''%0=user image, %1=user name, %2=tweet content,'' and ''%3=tweet timestamp''<<tiddler TwitterTabs##showcode with: tweetformat>>The most recently entered 'find... and 'from... search terms are automatically saved as TiddlyWiki cookie-based option values. You can override these values by placing the following statements into a tiddler tagged with 'systemConfig'. Each time you reload your document, the default inputs will be reset to these hard-coded values, rather than using the last value entered.
{{{
config.options["txtTweetSearch"]="search text";
config.options["txtTweetUser"]="username";
}}}
!showcode
<<tiddler TwitterTabs##out with: {{'!$1\n'+store.getTiddlerText('TwitterTabs##$1').replace(/\n\}\}\}/g,'\n}\}\}')}}>>
!out
{{{
$1
}}}
!end
!search
<<tiddler [[TwitterTabs##showSearchForm]] with: {{config.options.txtTweetSearch||'cognitive neuroscience'}}>>
!user
<<tiddler [[TwitterTabs##showUserForm]] with: {{config.options.txtTweetUser||'UCSDCogNeuro'}}>>
!end
!showSearchForm
{{small smallform{
search for tweets containing: <<option {{config.options.txtTweetSearch='$1';'txtTweetSearch'}}>><html>
<nowiki><input type='button' value='search' onclick="
var target=this.parentNode.parentNode.parentNode;
var out='\<\<tiddler [[TwitterTabs##showSearchForm]] with: {{config.options.txtTweetSearch}}\>\>';
removeChildren(target); wikify(out,target); return false;
"></html>@@display:block;white-space:normal;<<tiddler [[TwitterTabs##showSearchResults]]
with: {{config.options.txtTweetSearch}}>>@@}}}
!end
!showUserForm
{{small smallform{
show tweets from: <<option {{config.options.txtTweetUser='$1';'txtTweetUser'}}>><html>
<nowiki><input type='button' value='search' onclick="
var target=this.parentNode.parentNode.parentNode;
var out='\<\<tiddler [[TwitterTabs##showUserForm]] with: {{config.options.txtTweetUser}}\>\>';
removeChildren(target); wikify(out,target); return false;
"></html>@@display:block;white-space:normal;<<tiddler [[TwitterTabs##showUserResults]]
with: {{config.options.txtTweetUser}}>>@@}}}
!end
!showSearchResults
<<tiddler TwitterTabs##callback>>{{toolbar{<html><a href='javascript:;' onclick="
var target=this.parentNode.parentNode.parentNode;
var out='<<tiddler [[TwitterTabs##showSearchResults]] with: [[$1]]>>';
removeChildren(target); wikify(out,target); return false;
">refresh</a><nowiki></html>}}}~~__[[Recent tweets about: "$1"|http://search.twitter.com/search?q=$1]]__~~
<hr>@@display:block;height:20em;overflow:auto;<<tiddler {{
window.twitterPlace=null;
'';}}>><<tiddler {{
if (!window.twitterPlace) { window.twitterPlace=place;
place.innerHTML='connecting to twitter.com...';
var s=document.createElement("script");
s.src="http://search.twitter.com/search.json?q=$1&rpp=25&callback=twitterCallback";
document.body.appendChild(s);
document.body.removeChild(s);
}
'';}}>>@@@@display:block;text-align:right;^^scroll for more...^^@@
!end
!showUserResults
<<tiddler TwitterTabs##callback>>{{toolbar{<html><a href='javascript:;' onclick="
var target=this.parentNode.parentNode.parentNode;
var out='<<tiddler [[TwitterTabs##showUserResults]] with: [[$1]]>>';
removeChildren(target); wikify(out,target); return false;
">refresh</a><nowiki></html>}}}~~__[[Recent tweets from $1|http://twitter.com/$1]]__~~
<hr>@@display:block;height:20em;overflow:auto;<<tiddler {{
window.twitterPlace=null;
'';}}>><<tiddler {{
if (!window.twitterPlace) { window.twitterPlace=place;
place.innerHTML='connecting to twitter.com...';
var s=document.createElement("script");
s.src="http://twitter.com/statuses/user_timeline/$1.json?callback=twitterCallback";
document.body.appendChild(s);
document.body.removeChild(s);
}
'';}}>>@@@@display:block;text-align:right;^^scroll for more...^^@@
!end
!callback
<<tiddler {{
window.twitterCallback=function(data){ // data object returned from twitter.com
var fmt=store.getTiddlerText('TwitterTabs##tweetformat');
if (data.results) data=data.results; // for SEARCH results
removeChildren(window.twitterPlace);
for (var i=0; i<data.length; i++) { var item=data[i];
var img=item.user? item.user.profile_image_url : item.profile_image_url;
var who=item.user? item.user.screen_name : item.from_user;
wikify(fmt.format([img,who,item.text,item.created_at]),window.twitterPlace);
}
}
'';}}>>
!end
%/<<tiddler {{tiddler&&tiddler.title=='TwitterTabs'?'HideTiddlerBackground':''}}>>/%
%/<<tiddler {{tiddler&&tiddler.title=='TwitterTabs'?'HideTiddlerTags':''}}>>/%
%/<<tiddler TwitterTabs##tabset>>
We welcome inquiries and applications from responsible, enthusiastic, motivated, collaborative undergraduate students who are passionate about research. Students who are selected to join the lab become full members of the lab. This means they are expected to follow all lab and university policies, keep lab notebooks, attend lab meetings, and participate in lab activities. Undergraduates in our lab are not viewed as temporary workers who put in hours to help our research. Rather, they are considered active participants in research and are treated as junior collaborators. It is also important for students to receive mentoring and training in research methods, research integrity, and ethics.
In most cases, students will be part of a well-defined project and/or a small team of students and/or postdoctoral researchers. The responsibilities, expectations, and workload depend on the particular project and are discussed at the start of project and revisited regularly. Most students work on behavioral experiments with adult humans, but it is also possible for dedicated students to become involved in developmental, eye-tracking, or neuroimaging research. Students are required to present the PI with reports on the research conducted at least quarterly. In the event that there are new, interesting findings that emerge from the project, students typically will have their name on any resulting conference presentations or journal papers. Authorship as well as presentation or writing responsibilities depend on the particular project, but students who want to gain experience in presenting and publishing scientific research are always encouraged to become active in the process.
Our lab is committed to undergraduate research. However, since there is often a relatively short time within which to perform a meaningful research project, the management of undergraduate research is challenging. Students may be expected to make a minimum 2-3 quarter commitment to the lab, as for some studies, shorter research experiences simply won't not benefit students. Although this is not a rule, we also prefer students in sophomore or junior standing so that there is sufficient time to assess whether there is a good match between the student and the lab that could lead to a senior thesis, or a research assistantship.
Undergraduate students who are interested in research opportunities, including 199s and senior theses, [[please send an e-mail|mailto:199@sayginlab.org]]. Please include your name, standing (junior, senior etc), major, GPA, and include a CV if you have one. Please also mention whether you are writing in response to an advertised 199 opening. [[Current undergraduate research openings|http://www.sayginlab.org/ugrad_openings.htm]] are listed on this page.
Any student who is serious about conducting research in the lab is strongly encouraged to take [[Dr. Saygin's Matlab course in Spring 2010|http://www.matlabfun.com]]) or self study these materials. This class is designed to give students computational skills directly applicable to experimental research. Students who work on developing computational and programming skills are able to achieve productivity and independence much faster than students who do not develop these skills, and are generally able to take part in more ambitious research projects.
Students are always encouraged to be proactive in finding support and funding for research. Contact us if you're interested in applying for special programs or for funding for undergraduate research.
If you are interested in working in our lab, please read [[Joining the Lab]] and [[How to contact a PI]].
[[Current undergraduate research openings|http://www.sayginlab.org/ugrad_openings.htm]]
Resources:
[[UCSD Undergraduate Research Homepage|http://ugresearch.ucsd.edu/]]
[[UCSD Faculty Mentor Program|http://www.ucsd.edu/current-students/academics/research/faculty-mentor-program.html]]
[[UCSD McNair Program|http://aep.ucsd.edu/mcnair.htm]]
[[UCSD Summer Research Program|http://www.ucsd.edu/current-students/academics/research/undergraduate-research/opportunities/summer-research-program.html]]
[[UCSD Summer Research Opportunities|http://sea.ucsd.edu/summer_research/]]
[[UCSD Undergraduate Research Conference|http://www.ucsd.edu/current-students/academics/research/undergraduate-research/conferences/conference.html]]
[[UCSD Cognitive Science Department 199 Information|http://www.cogsci.ucsd.edu/undergraduate-study/199s/]]
[[Faculty for Undergraduate Research Resources (SFN)|http://www.funfaculty.org/drupal/node/421]]
[[Sigma Xi Grants|http://www.sigmaxi.org/programs/giar/index.shtml]]
Links:
[[Advice for Undergraduates Considering Graduate School|http://polaris.gseis.ucla.edu/pagre/grad-school.html]]
[[Choosing a Graduate Program|http://expbook.wordpress.com/2008/02/04/on-choosing-a-graduate-school/]]
[[Grad School Application Essay|http://science-professor.blogspot.com/2008/01/my-grad-school-application-essay.html]]
See also [[Graduate School]], [[Joining the Lab]], [[Lab Notebooks]], [[Lab Policies]], [[Mentoring]], [[Research Integrity and Ethics]], [[Advice]], [[PROJECTS]], and [[LAB]]
| !date | !user | !location | !storeUrl | !uploadDir | !toFilename | !backupdir | !origin |
| 20/07/2009 22:39:36 | APS | [[/|http://sayginlab.tiddlyspot.com/]] | [[store.cgi|http://sayginlab.tiddlyspot.com/store.cgi]] | . | [[index.html | http://sayginlab.tiddlyspot.com/index.html]] | . | ok |
| 20/07/2009 22:44:30 | APS | [[/|http://sayginlab.tiddlyspot.com/#SiteSubtitle]] | [[store.cgi|http://sayginlab.tiddlyspot.com/store.cgi]] | . | [[index.html | http://sayginlab.tiddlyspot.com/index.html]] | . |
| 20/07/2009 22:45:38 | APS | [[index.html|http://sayginlab.tiddlyspot.com/index.html]] | [[store.cgi|http://sayginlab.tiddlyspot.com/store.cgi]] | . | [[index.html | http://sayginlab.tiddlyspot.com/index.html]] | . | ok |
| 20/07/2009 22:47:15 | APS | [[index.html|http://sayginlab.tiddlyspot.com/index.html]] | [[store.cgi|http://sayginlab.tiddlyspot.com/store.cgi]] | . | [[index.html | http://sayginlab.tiddlyspot.com/index.html]] | . | ok |
| 20/07/2009 22:52:23 | APS | [[index.html|http://sayginlab.tiddlyspot.com/index.html]] | [[store.cgi|http://sayginlab.tiddlyspot.com/store.cgi]] | . | [[index.html | http://sayginlab.tiddlyspot.com/index.html]] | . | ok |
| 20/07/2009 23:03:39 | APS | [[index.html|http://sayginlab.tiddlyspot.com/index.html]] | [[store.cgi|http://sayginlab.tiddlyspot.com/store.cgi]] | . | [[index.html | http://sayginlab.tiddlyspot.com/index.html]] | . | ok |
| 20/07/2009 23:31:52 | APS | [[index.html|http://sayginlab.tiddlyspot.com/index.html]] | [[store.cgi|http://sayginlab.tiddlyspot.com/store.cgi]] | . | [[index.html | http://sayginlab.tiddlyspot.com/index.html]] | . | ok |
| 21/07/2009 11:26:29 | APS | [[index.html|http://sayginlab.tiddlyspot.com/index.html]] | [[store.cgi|http://sayginlab.tiddlyspot.com/store.cgi]] | . | [[index.html | http://sayginlab.tiddlyspot.com/index.html]] | . |
| 21/07/2009 13:38:07 | YourName | [[sayginlab.html|file:///Users/aysesaygin/Downloads/sayginlab.html]] | [[|file:///Users/aysesaygin/Downloads/]] | . | [[sayginlab.html | file:///Users/aysesaygin/Downloads/sayginlab.html]] | | failed |
Research is a demanding career in so many ways. It's important to be realistic about the challenges of this career choice so that you can assess whether this is a good choice for you.
When you're passionate about your work, it can be difficult to stop thinking about it, or being engaged with it. I personally do not believe in a neat divide between work and life. As summarized by Female Science Professor on her blog (linked below): "Even if I wanted to stop thinking about my work, I couldn't. And even if I could stop, I wouldn't want to". Certainly for a cognitive scientist, such a separation can be nearly impossible as potentially all aspects of life relate to our research!
But most people need for down-time, hobbies and social activities. Healthy sleep, eating and exercise habits are important. Taking breaks, vacations, and having hobbies and friends outside of work are also helpful. Regularly assess whether you are able to maintain good physical and mental health and social relationships. If you or others around you observe signs of anxiety, depression, sleep or eating disorders, substance abuse or addiction, you must take this seriously and seek advice from professionals who can help.
Links and Resources:
[[Links to Mary Ann Mason's Articles]]
[[Issue on Work-Life Balance (Academe)|http://www.aaup.org/AAUP/pubsres/academe/2004/ND/]]
[[Maintaining a Healthy Work-Life Balance as a Young Academic|http://www.jobs.ac.uk/careers/articles/1087/maintaining-a-healthy-work-life-balance-as-a-young-academic/]]
[[Work/Life for Women in Investment Banking|http://www.theglasshammer.com/news/2010/04/06/paying-the-price-worklife-issues-most-challenging-for-women-in-investment-banking/#more-4539]]
[[Recover from Overwhelm|http://tomprofblog.mit.edu/2007/02/13/775-code-o-how-to-recover-from-overwhelm/#more-183]]
[[Avoiding and Treating Repetitive Strain Injury|http://matt.might.net/articles/preventing-and-managing-rsi/]]
[[Think Work|http://science-professor.blogspot.com/2008/10/think-work.html]]
[[Avoiding Burnout|http://tomprofblog.mit.edu/2008/01/14/837-avoid-burnout/#more-245]]
[[Work-Life Balance and the Changing Academy|http://tomprofblog.mit.edu/2006/11/17/761-integrating-work-and-life-a-vision-for-a-changing-academy/]]
[[Mom's Job|http://science-professor.blogspot.com/2008/06/moms-jobs-fun.html]]
[[Unbalanced|http://science-professor.blogspot.com/2007/10/unbalanced.html]]
[[Meditation and Yoga for Stress Relief|http://helpguide.org/mental/stress_relief_meditation_yoga_relaxation.htm]]
[[My Yoga Online|http://www.myyogaonline.com]]
[[Mindfulness-Based Stress Reduction|http://www.mindfullivingprograms.com/whatMBSR.php]]
Local Resources:
[[Health and Wellness|http://blink.ucsd.edu/HR/benefits/work-life/health.html]]
[[Rec Classes at UCSD|http://recreation.ucsd.edu/clss/]]
[[Culture and Community|http://blink.ucsd.edu/HR/benefits/work-life/culture.html]]
[[Counseling and Psychological Services|http://caps.ucsd.edu/services_web/services_services.html]]
[[Cross-Cultural Center|http://ccc.ucsd.edu/]]
[[International Center|http://icenter.ucsd.edu/index.html]]
[[LGBT Center|http://lgbt.ucsd.edu/]]
[[Women's Center|http://women.ucsd.edu/]]
[[Early Childhood Education Center|http://blink.ucsd.edu/go/ecec]]
[[Mindfulness @ UCSD|http://mindfulness.ucsd.edu/mbsr.htm]]
[[<img src="http://www.phdcomics.com/comics/archive/phd092809s.gif" width=500>|http://www.phdcomics.com/comics/archive/phd092809s.gif]]
See also [[Productivity]], [[Advice]], [[LINKS]]
Resources:
[[The Elements of Style, by Strunk & White (Online Book)|http://www.bartleby.com/141/]]
[[How to Write a Lot, by Paul Silvia (Book)|http://books.apa.org/books.cfm?id=4441010]]
[[Technical Writing and Professional Communication for Non-Native Speakers, by Thomas N. Huckin, Leslie A. Olsen (Book)|http://www.amazon.com/Technical-Professional-Communication-Non-Native-Speakers/dp/007030825X]]
[[On Writing, by Stephen King (Book)|http://www.amazon.com/Writing-Stephen-King/dp/0743455967]]
[[Purdue Online Writing Lab|http://owl.english.purdue.edu/]]
Links:
[[A Matter of Style|http://chronicle.com/article/A-Matter-of-Style/44507/]]
[[Finite Space|http://science-professor.blogspot.com/2009/02/finite-space.html]]
[[Writing with Your Advisor|http://science-professor.blogspot.com/2009/01/intense-editophobes.html]]
[[Active vs. Passive Voice|http://bluelabcoats.wordpress.com/2009/01/19/unsolicited-advice-writing-part-iii/]]
See also, [[(Business) Papers]], [[Funding]], [[Graduate School]], [[Productivity]], [[Your Career]], and [[LINKS]]
[[Writing a Grant Proposal: Application Forms and Writing Tips|http://www.cumc.columbia.edu/dept/gsas/ac_programs/writing.htm]]
Local resources:
[[UCSD Career Center|http://career.ucsd.edu/]]
[[Center for Teaching Development|http://ctd.ucsd.edu/]]
[[Express to Success Programs|http://www.ucsd.edu/current-students/academics/educational-enrichment/express-to-success/]]
Resources:
[[Science Careers|http://sciencecareers.sciencemag.org/]]
[[Nature Jobs|http://www.nature.com/naturejobs/]]
[[Chronicle of Higher Education|http://chronicle.com]]
[[Inside Higher Ed|http://www.insidehighered.com/]]
[[NeuroJobs (Society for Neuroscience)|http://www.jobtarget.com/home/index.cfm?site_id=397]]
Societies:
[[Society for Neuroscience (SFN)|http://sfn.org]]
[[Cognitive Neuroscience Society (CNS)|http://cogneurosociety.org/]]
[[Vision Sciences Society|http://www.visionsciences.org/meeting.html]]
[[Organization for Human Brain Mapping|http://www.humanbrainmapping.org]]
[[Cognitive Science Society|http://cognitivesciencesociety.org/index.html]]
[[Association for Women in Science (AWIS)|http://www.awis.org/]]
[[Women in Cognitive Science (WICS)|http://www.womencogsci.org/]]
Articles, Links:
[[Dear Former Graduate Student (pdf)|http://apsaygin.googlepages.com/Massimo_Dear_Former_Grad_Student.pdf]]
[[Naturally Obsessed: The Making of a Scientist (Movie)|http://www.thirteen.org/naturally-obsessed/]]
[[Female Science Professor's Guide to Academic Etiquette|http://science-professor.blogspot.com/2008/08/fsps-guide-to-academic-etiquette.html]]
[[Getting a Job at a Liberal Arts College (LAC)|http://science-professor.blogspot.com/2006/11/get-job.html]]
[[Changing your Trajectory|http://chronicle.com/article/Changing-the-Trajectory-of/47437/]]
[[Recommendation Letters|http://bluelabcoats.wordpress.com/2008/07/20/letters-of-recommendation/]]
[[Networking|http://www.acm.org/crossroads/xrds4-4/network.html]]
[[Support Networks|http://tomprofblog.mit.edu/2005/11/18/681-circle-of-support/]]
[[Little Things that Make a Difference|http://tomprofblog.mit.edu/2009/09/15/965-its-the-little-things-that-make-the-big-difference/]]
[[Researching your CV|http://drshellie.blogsome.com/2007/07/24/citation-envy/]]
[[How to Build a "Backbone"|http://tomprofblog.mit.edu/2009/05/12/946-ten-ways-to-grow-a-backbone/#more-354]]
[[How to Be a Grown-Up|http://scienceblogs.com/ethicsandscience/2008/02/the_project_of_being_a_grownup.php]]
[[On Failure|http://science-professor.blogspot.com/2007/11/on-failure.html]]
[[Behind Peer Review|http://www.insidehighered.com/news/2009/03/04/peerreview]]
[[Postdoctoral Multitasking|http://science-professor.blogspot.com/2008/07/postdoctoral-multitasking.html]]
[[What to Wear|http://science-professor.blogspot.com/2006/07/what-to-wear.html]]
[[What to Wear 2|http://science-professor.blogspot.com/2006/09/what-to-wear-2.html]]
[[Basic Black|http://science-professor.blogspot.com/2008/10/basic-black.html]]
See also [[(Business) Papers]], [[Funding]], [[Presentations, Talks and Posters]],
[[Productivity]], [[Public Engagement and Media]], [[Graduate School]], [[Undergraduate Research]], [[Advice]], [[Mentoring]], and [[LAB]]
One method we use in the lab is Functional Magnetic Resonance Imaging (fMRI). Scanning takes place at [[UCSD Center for fMRI (cFMRI)|http://fmri.ucsd.edu/]] on campus. cFMRI has policies in place for safety and training and all members of the lab must follow these carefully.
Members of the lab must attend one of the Center organized safety sessions as soon as possible. Please explore the cFMRI website for details. See also [[mrisafety.com|http://mrisafety.com]].
See also, [[Human Subjects]], [[Data Collection]].