TiddlyWiki uses Wiki style markup, a way of lightly "tagging" plain text so it can be transformed into HTML. Edit this Tiddler to see samples.\n\n! Header Samples\n!Header 1\n!!Header 2\n!!!Header 3\n!!!!Header 4\n!!!!!Header 5\n\n! Unordered Lists:\n* Lists are where it's at\n* Just use an asterisk and you're set\n** To nest lists just add more asterisks...\n***...like this\n* The circle makes a great bullet because once you've printed a list you can mark off completed items\n* You can also nest mixed list types\n## Like this\n\n! Ordered Lists\n# Ordered lists are pretty neat too\n# If you're handy with HTML and CSS you could customize the [[numbering scheme|http://www.w3schools.com/css/pr_list-style-type.asp]]\n## To nest, just add more octothorpes (pound signs)...\n### Like this\n* You can also\n** Mix list types\n*** like this\n# Pretty neat don't you think?\n\n! Tiddler links\nTo create a Tiddler link, just use mixed-case WikiWord, or use [[brackets]] for NonWikiWordLinks. This is how the GTD style [[@Action]] lists are created. \n\nNote that existing Tiddlers are in bold and empty Tiddlers are in italics. See CreatingTiddlers for details.\n\n! External Links\nYou can link to [[external sites|http://google.com]] with brackets. You can also LinkToFolders on your machine or network shares.\n\n! Images\nEdit this tiddler to see how it's done.\n[img[http://img110.echo.cx/img110/139/gorilla8nw.jpg]]\n\n!Tables\n|!th1111111111|!th2222222222|\n|>| colspan |\n| rowspan |left|\n|~| right|\n|colored| center |\n|caption|c\n\nFor a complex table example, see PeriodicTable.\n\n! Horizontal Rules\nYou can divide a tiddler into\n----\nsections by typing four dashes on a line by themselves.\n\n! Blockquotes\n<<<\nThis is how you do an extended, wrapped blockquote so you don't have to put angle quotes on every line.\n<<<\n>level 1\n>level 1\n>>level 2\n>>level 2\n>>>level 3\n>>>level 3\n>>level 2\n>level 1\n\n! Other Formatting\n''Bold''\n==Strike==\n__Underline__\n//Italic//\nSuperscript: 2^^3^^=8\nSubscript: a~~ij~~ = -a~~ji~~\n@@highlight@@ Unfortunately highlighting is broken right now.\n@@color(green):green colored@@\n@@bgcolor(#ff0000):color(#ffffff):red colored@@ Hex colors are also broken right now.\n
Javascript "plugins" for the TiddlyWiki instance.
\n// this function lifted mostly from Josh's incomingTags macro at serversidewiki.com\n// makes a wiki text list of all tagged tiddlers\nfunction getTaggedTiddlersText(title, sortby) {\n if (!sortby) {\n // sortby="modified";\n sortby="title"; \n }\n var tags = store.getTaggedTiddlers(title,sortby);\n str=""; \n for (i=0; i<tags.length; i++) {\n str+="* [[" + tags[i].title + "]]\sn";\n // TODO. make a comma separated version too\n // have an option to select between them\n }\n return str;\n}\n\n// use this to (re)build the tagged list for a tiddler\nfunction refreshTaggedList(title) {\n\n var theViewer = document.getElementById("viewer"+title);\n\n if (theViewer) {\n\n var theTaggedList = document.getElementById("tagged"+title);\n if (theTaggedList) {\n theViewer.removeChild(theTaggedList);\n }\n\n var taggedText = getTaggedTiddlersText(title,"title");\n\n if (taggedText != "") {\n var newTaggedList = createTiddlyElement(theViewer,"div","tagged" + title,"tagged",null); \n wikify(getTaggedTiddlersText(title),newTaggedList); \n }\n }\n}\n\n// I want to refresh the tagged list in other visible tiddlers\n// this is to refresh if we remove a tiddler\nwindow.deleteTiddler_orig_mptw_tagglytagging = window.deleteTiddler;\nwindow.deleteTiddler = function(title) {\n var oldtags = [];\n var tiddler = store.tiddlers[title];\n if (tiddler) {\n var oldtags = tiddler.tags;\n }\n\n deleteTiddler_orig_mptw_tagglytagging(title);\n\n for (i=0; i<oldtags.length; i++) {\n refreshTaggedList(oldtags[i]);\n }\n}\n\n// this is if we edit a tiddler\n// refresh tags on screen\nwindow.saveTiddler_orig_mptw_tagglytagging = window.saveTiddler;\nwindow.saveTiddler = function(title) {\n\n var newTitle = document.getElementById("editorTitle"+title).value;\n\n var oldtags = [];\n var tiddler = store.tiddlers[title];\n if (tiddler) {\n var oldtags = tiddler.tags;\n }\n \n saveTiddler_orig_mptw_tagglytagging(title);\n\n var newtags = store.tiddlers[newTitle].tags;\n\n for (i=0; i<newtags.length; i++) {\n refreshTaggedList(newtags[i]);\n }\n\n // will do lots twice. should do a unique on oldtags and newtags\n // probably its fast enough that we don't care\n\n for (i=0; i<oldtags.length; i++) {\n refreshTaggedList(oldtags[i]);\n }\n\n}\n\n//==========================================================\n\nwindow.createTiddlerViewer_orig_mptw_tagging = window.createTiddlerViewer;\nwindow.createTiddlerViewer = function(title,highlightText,highlightCaseSensitive) {\n createTiddlerViewer_orig_mptw_tagging(title,highlightText,highlightCaseSensitive);\n refreshTaggedList(title);\n}\n\n\n//==========================================================\n// only change in this is to put the footer above the title... \n// I know that's a bit strange but it's the easiest way to move the tag buttons\n\nwindow.createTiddlerSkeleton_orig_mptw_tagging = window.createTiddlerSkeleton;\nwindow.createTiddlerSkeleton = function(place,before,title)\n{\n var theTiddler = createTiddlerSkeleton_orig_mptw_tagging(place,before,title);\n theFooter = document.getElementById("footer"+title);\n theTitle = document.getElementById("title"+title);\n // want to put the footer up above the title\n theTiddler.childNodes[0].insertBefore(theFooter,theTitle);\n return(theTiddler);\n}\n\n\n//==========================================================\n// I want a TiddlyLink in place of a TagButton\n\nwindow.createTagButton = function(place,tag,excludeTiddler) {\n return createTiddlyLink(place,tag,tag);\n}\n\n//==========================================================\n// this is to make the Tags tab work the same. TiddlyLink instead of Tag button\n// TODO: currently we lose the Tag count display\n\nconfig.macros.allTags.handler = function(place,macroName,params) {\n var tags = store.getTags();\n if(tags.length == 0) {\n createTiddlyElement(place,"div",null,null,this.noTags);\n }\n for (t=0; t<tags.length; t++) {\n var theTag = createTiddlyLink(place,tags[t][0],tags[t][0] + " (" + tags[t][1] + ")");\n theTag.setAttribute("tag",tags[t][0]);\n place.appendChild(document.createElement("br"));\n }\n}\n\nconfig.views.wikified.tag.labelNoTags = "";\nconfig.views.wikified.tag.labelTags = "";\n\nsetStylesheet(\n "div.tagged {background:#f8f8f8;margin-top:0.5em;border: solid #f0f0f0 3px;}\sn"+\n "div.tagged ul {padding-top:0px;margin-top:4px;margin-bottom:8px;list-style-type:square;}\sn"+\n "div.footer a.tiddlyLink { padding-top:0px;margin-right:1.2em;}\sn"+\n "div.footer {margin-top:0px;padding-top:0px;}\sn"+\n "",'tagglyTaggingStyles');\n\n\n
\nwindow.createTiddlerEditor_orig_mptw_focustweak = window.createTiddlerEditor;\nwindow.createTiddlerEditor = function(title)\n{\n // open the window\n createTiddlerEditor_orig_mptw_focustweak(title);\n\n // get the input boxes\n var theTitleBox = document.getElementById("editorTitle" + title);\n var theBodyBox = document.getElementById("editorBody" + title);\n\n // tweak the focus\n if (title == 'New Tiddler') {\n theTitleBox.focus();\n theTitleBox.select();\n }\n else if (theBodyBox.value == config.views.editor.defaultText.format([title]) ||\n theBodyBox.value == config.views.editor.defaultText.format(["New Tiddler"])) {\n theBodyBox.focus();\n theBodyBox.select();\n }\n else {\n theBodyBox.focus();\n }\n}\n
\nwindow.onClickToolbarCloseOthers = function(e) {\n if (!e) var e = window.event;\n clearMessage();\n if(this.parentNode.id)\n closeAllOtherTiddlers(this.parentNode.id.substr(7));\n e.cancelBubble = true;\n if (e.stopPropagation) e.stopPropagation();\n return(false);\n}\n\nfunction closeAllOtherTiddlers(thisTitle) {\n clearMessage();\n var place = document.getElementById("tiddlerDisplay");\n var tiddler = place.firstChild;\n var nextTiddler;\n while(tiddler) {\n nextTiddler = tiddler.nextSibling;\n if(tiddler.id) {\n if(tiddler.id.substr(0,7) == "tiddler") {\n var title = tiddler.id.substr(7);\n if(!document.getElementById("editor" + title) && title != thisTitle) {\n place.removeChild(tiddler);\n }\n }\n }\n tiddler = nextTiddler;\n }\n window.scrollTo(0,0);\n}\n\nconfig.views.wikified.toolbarCloseOthers = {text: "close others", tooltip: "Close all tiddlers other than this one"};\n\nwindow.createTiddlerToolbar_orig_mptw_closeothers = window.createTiddlerToolbar;\nwindow.createTiddlerToolbar = function(title,isEditor) {\n createTiddlerToolbar_orig_mptw_closeothers(title,isEditor);\n var theToolbar = document.getElementById("toolbar" + title);\n var lingo = config.views.wikified;\n if(!isEditor) {\n createTiddlyButton(theToolbar, lingo.toolbarCloseOthers.text, lingo.toolbarCloseOthers.tooltip, onClickToolbarCloseOthers);\n insertSpacer(theToolbar);\n \n // this gets a little hacky\n // want to put my new button next to close button\n closeOthersButton = theToolbar.childNodes[9];\n spacer = theToolbar.childNodes[10];\n secondButton = theToolbar.childNodes[3];\n\n\n theToolbar.insertBefore(spacer,secondButton);\n theToolbar.insertBefore(closeOthersButton,spacer);\n\n }\n}
Yeah, you wish I had a subtitle..
config.macros.newJournal.handler = function(place,macroName,params)\n{\n var now = new Date();\n var title = now.formatString(params[0].trim());\n var createJournal = function() {\n displayTiddler(null,title,2,null,null,false,false);\n var tagsBox = document.getElementById("editorTags" + title);\n if(tagsBox && params[1])\n tagsBox.value = String.encodeTiddlyLink(params[1]) + " " +tagsBox.value;\n };\n var label = this.label;\n if(params[2])\n label = params[2];\n createTiddlyButton(place,label,this.prompt,createJournal);\n}
\nwindow.onClickToolbarNewHere = function(e) {\n if (!e) var e = window.event;\n clearMessage();\n if(this.parentNode.id) {\n displayTiddler(this.parentNode,"New Tiddler",2,null,null,false,false);\n tagBox = document.getElementById("editorTagsNew Tiddler"); \n tagBox.value = "[["+this.parentNode.id.substring(7)+"]]";\n }\n e.cancelBubble = true;\n if (e.stopPropagation) e.stopPropagation();\n return(false);\n}\n\nconfig.views.wikified.toolbarNewHere = {text: "new here", tooltip: "Create a new tiddler with tagged as this tiddler"};\n\nwindow.createTiddlerToolbar_orig_mptw_newhere = window.createTiddlerToolbar;\nwindow.createTiddlerToolbar = function(title,isEditor) {\n createTiddlerToolbar_orig_mptw_newhere(title,isEditor);\n var theToolbar = document.getElementById("toolbar" + title);\n var lingo = config.views.wikified;\n if(!isEditor) {\n createTiddlyButton(theToolbar, lingo.toolbarNewHere.text, lingo.toolbarNewHere.tooltip, onClickToolbarNewHere);\n insertSpacer(theToolbar);\n }\n}\n
BP's BayCHI TiddlyWiki
<<search>><<closeAll>><<permaview>><<newTiddler>><<newJournal 'Journal MM-DD-YYYY' journal>><<saveChanges>><<slider chkSliderOptionsPanel OptionsPanel options 'Change TiddlyWiki advanced options'>>
div#mainmenu hr {margin:0px;padding:0px;padding-top:10px;\n border-style:none;\n border-width:1px;\n border-color:#ccc;\n border-bottom-style:solid;\n}\n.viewer pre { font-size:105%; }\n/* colour scheme begin */ \ndiv#titleLine { padding-top:30px; background:#369;}\ndiv#sidebarOptions { background:#696; }\ndiv#sidebarOptions a.button { color:#eef;}\ndiv#sidebarOptions a.button:hover { color:#fff; background:#252;}\ndiv#mainmenu .tiddlyLink { font-weight:bold;color:#369; }\ndiv#mainmenu .tiddlyLink:hover { background:#369;color:white; }\ndiv#mainmenu .button { font-weight:bold; color:#363; }\ndiv#mainmenu .button:hover { background:#363;color:white; }\ndiv.viewer a.tiddlyLink { color:#369; }\ndiv.viewer a.tiddlyLink:hover { background:#acd; }\ndiv.footer a.tiddlyLink { color:#369; }\ndiv.footer a.tiddlyLink:hover { background:#acd; }\n.editorFooter a.button, .tiddler .button { color: #369; background:#eee; }\n.editorFooter a.button:hover, .tiddler .button:hover { color: #fff; background: #369; }\n.editorFooter a.button:active, .tiddler .button:active { color: #fff; background: #369; }\n.editorFooter a:link { color: #369; } \n#popup {color:#eee; background:#369;}\n#popup a {color:#fff; background:#369; }\n#popup a:hover {color:black; background:#eee;}\ndiv.tabset {background:#696;}\na.tab {background:#369;}\n#mainMenu .externalLink { color:#252; }\n#mainMenu .externalLink:hover { color:white;background:#696; }\n.tiddler .externalLink { color:#252; }\n.tiddler .externalLink:visited { color:#252; }\n.tiddler .externalLink:hover { color:#252;background:#ada; }\n.viewer a:link { color: #252; } \n.viewer a:visited { color: #252; } \n.viewer a:hover { color:#252; background:#ada; }\n#titleLine a {color:white;}\na.tabSelected {background:#369;font-weight:bold;}\n#sidebarTabs {color: white;background-color: #69b;}\n#sidebarTabs .tabSelected {color: white;background-color: #369;}\n#sidebarTabs .tabUnselected {color: white;background-color: #369;}\n#sidebarTabs .tabContents {background-color: #69c;}\n#sidebarTabs .txtMoreTab .tabSelected {background-color: #7ad;}\n#sidebarTabs .txtMoreTab .tabUnselected {background-color: #369;}\n#sidebarTabs .txtMoreTab .tabContents {background-color: #7ad;}\n#sidebarTabs .txtMoreTab .tabset {background-color: #69b;}\n#sidebarTabs .tabContents .tiddlyLink {color: #135;}\n#sidebarTabs .tabContents .tiddlyLink:hover {background-color: #eee;color: black;}\n#sidebarTabs .tabContents .button {color: #eee;}\n#sidebarTabs .tabContents .button:hover {color: #white;background-color: #252;}\n/* colour scheme end */\n\n#displayArea {\n margin-right: 15.5em;\n margin-left: 2em;\n}\n\n// this works great in firefox but breaks something with ie. help??\n// .toolbar { float:right; }\n\n\n.viewer h1,\n.viewer h2,\n.viewer h3,\n.viewer h4,\n.viewer h5 { font-family: 'Trebuchet MS' Arial sans-serif; background:#f8f8f8; }\n\n.viewer h1 { font-size:1.2em; }\n.viewer h2 { font-size:1.1em; }\n.viewer h3 { font-size:1.0em; }\n.viewer h4 { font-size:0.9em; }\n.viewer h5 { font-size:0.8em; }\n\nbody {\n background:#eee;\n}\n\ndiv.tiddler {\n background:white;\n border-top:solid #ccc 2px;\n border-left:solid #ccc 2px;\n border-bottom:solid #aaa 2px;\n border-right:solid #aaa 2px;\n margin-bottom:5px;\n padding-bottom:10px;\n}\n\n\ndiv.title {\n font-family:'Trebuchet MS' Arial sans-serif;\n font-size:150%;\n}\n\ndiv.editor input,\ndiv.editor textarea {\n background:#ffe;\n border:solid #aa9 2px;\n margin:4px;\n}\n\n@media print {\n div.tiddler {border:none white 0px; border-top:solid #bbb 1px;}\n div.tagged {border:none white 0px;}\n #titleLine { display:none; }\n #displayArea { margin-right: 0px; margin-left: 0px; }\n .toolbar { display:none; }\n}
Show and tell:\n\n----\nStewart Butterfield - [[flickr|http://flickr.com]]\n* Originally was a heavy user of Usenet/talk/gopher - URLs were cool.\n* Linked through\n* Then, dynamic content\n* Now, partial page application requests - AJAX\n* If you do things this way, you've *automatically created a public API*\n** Take that one step further, ala [[the flickr api|http://www.flickr.com/services/api/]]\n*** Geotagging photos, geeky, but still there are 26k photos geotagged in flickr already.\n** Tag browser, related tags browser\n** demo of interestingness, clustering\n\n----\nDavid Sifry - [[technorati|http://technorati.com]]\n* Not going to focus on technorati, other stuff:\n* instead.... trends that we're seeing, what to expect.\n* Weblogging is a *symptom* of what's happening to ease of publishing on the web.\n* Weblog growth, doubling every 5.5 mos for 30 months (~15million), 55% still posting after 3 months\n* --> attention economy\n* Almost a third of blog posts use tags or categories\n* Folksomy (he didn't use the word) created, machine-extractable now, as well.\n\n----\nPaul Rademacher - [[HousingMaps|http://housemaps.com]]\n* Craigslist housing data superimposed over Google Maps\n* Gotta' decide what to show with what (colors of icons, etc.)\n* Public APIs make for sites like his - remixes of others, basically\n* (Alleges he can't find a copy of the Grey Album...)\n* Existing problems:\n** Authentication\n** Payment (especially since ads are where most money is flowing)\n** UI problems:\n*** Still moving from document/database centric view to applications\n*** Hard to build large, complicated apps.\n\n----\nThomas Vander Wal\n* The web has moved from "I Go Get" to "Come To Me"\n* Rough cloud of attraction\n** Personal Infocloud\n** Local (LAN)\n** Global (Internet)\n** External (info beyond someone else's firewall)\n\n\n\n
Here's a (possible out of date) list of stuff you should check out. Check out the Timeline (on the right sidebar) if you're looking for newer stuff.
[[Top]]
{{{\nAre you ready for Web 2.0?\nPanel: David Sifry, Technorati; Stewart Butterfield, Flickr/Yahoo!; Paul Rademacher, HousingMaps; Thomas Vander Wal, PersonalInfoCloud.com; Rashmi Sinha, Moderator\n\n Many exciting new web sites and services are associated with the concept of "Web 2.0." But what does "Web 2.0" really mean?\n\n Current use of the term is focused on the concepts of the web as a read/write platform, using APIs to create new services, user-generated content, and the concepts of reuse and remixing.\n\n As of July, 2005, Wikipedia defines Web 2.0 as "a term often applied to a perceived ongoing transition of the World Wide Web from a collection of websites to a full-fledged computing platform serving web applications to end users."\n\n So, what is Web 2.0? When did we transition from Web 1.0? What are the implications of Web 2.0 for users, content creators, and designers? We have assembled a panel of experts who will explore this issue. Some of the themes we will discuss are:\n o Syndication of content.\n o -The web as a platform.\n o -Remixing the web.\n o -User generated content and tags.\n o -Distributed content and navigation.\n o -What all of this means for the individual.\n\n Photo of Dave Sifry David Sifry is a serial entrepreneur with over nineteen years of experience. Before founding Technorati, Dave was cofounder and CTO of Sputnik and cofounder of Linuxcare, where he served as CTO and VP of engineering. He has a Bachelor's degree in Computer Science from Johns Hopkins University. Dave lectures on everything from wireless spectrum policy and Wi-Fi to weblogs and open-source software.\n\n Paul Rademacher is the creator of HousingMaps, a combination of Craigslist housing listings and Google Maps. By day, he is an R&D software engineer at Dreamworks Animation, where he specializes in interfaces for character animation. Paul received his Ph.D. in Computer Science from the University of North Carolina at Chapel Hill.\n\n Stewart Butterfield is the president and founder of Ludicorp (acquired by Yahoo! in March, 2005), the makers of Flickr, a collaborative platform for photos. He is a renowned interaction designer and successful entrepreneur with a long history of involvement with the internet. He founded the 5K competition, has served on the W3C's XForms working group, has been nominated for a Chrysler Design Award, and is a frequent speaker on design and technology topics.\n Thomas Vander Wal is a designer and web innovator. His day job is in the government contracting world, and he has been involved with the web and technology sector for seventeen years. He writes about the Personal InfoCloud, a framework for people designing and developing of the "come to me" web that is replacing the original "I go get" web. Recently, he coined the term folksonomy, which has come to represent the popular tagging phenomenon. Thomas speaks regularly on social computing, information architecture, folksonomy, and his Personal InfoCloud and Model of Attraction frameworks.\n\n Rashmi Sinha, who will moderate the panel, is a BayCHI program chair and principal of Uzanto Consulting, specializing in design research. She also maintains a blog at www.rashmisinha.com.\n}}}
// ---------------------------------------------------------------------------------\n// shorten names in tabs\n\nwindow.createTiddlyLink_orig_mptw_shortnames = window.createTiddlyLink;\n\nwindow.createTiddlyLink = function(place,title,includeText) {\n\n // first create the button using the standard create function\n // this will survive upgrades better than the my old way which\n // was to replace the entire function\n var btn = createTiddlyLink_orig_mptw_shortnames(place,title,includeText);\n\n // use this trick to check if we are in a sidebar\n if (btn.parentNode.className && btn.parentNode.className == "tabContents") {\n // we must be in a sidebar\n // so lets do our thing\n\n var trimAt = 20; // tweak this if you want longer or shorter\n \n // check if we need to trim\n if (title.length > trimAt) {\n shortTitle = title.substring(0,trimAt).trim(); // why doesn't this trim seem to work???\n // wouldn't need this bit if the trim worked.\n while (shortTitle.substr(shortTitle.length-1) == " ") {\n shortTitle = shortTitle.substr(0,shortTitle.length-1);\n }\n removeChildren(btn); // btn is an a element and only has one child, the text node\n btn.appendChild(document.createTextNode(shortTitle+"...")); // cool.\n }\n }\n return btn;\n}\n
----\nWhat affordances were important when developing your sites (particularly aimed at Stuart)\n\nButterfield:\n* Depends on your audience. Flickr was originally geeky.\n** ie. announcing a "tag for this event"\n\nSifry:\n* Make a conscious effort to publish an XML version of any tool they come out with... but it's for non-commercial use only, usually.\n\nRademacher:\n* Data should be free...\n** Realtor MLS system used to be slow, closed.\n* Opening the data benefits the consumer, but not always a clear benefit for the data owner\n\n----\nHow is HousingMaps financed?\n\nRademacher:\n* Self-financed.\n\n----\nHow do we make Web2.0 work without having the malicious-intent folks (spammers, malware, etc.) from getting to us?\n\nVander Wal:\n* Opt-in. Granularity lets you pick what info to consume.\n* Filtering at that level, using the digital identity.\n\nSifry:\n* Doctorow: Every healthy ecosystem has parasites.\n* ie, if there's value, there'll be parasites.\n* Multilayer defence needed.\n* Understand //why// people spam\n* Social networking provides some implicit structure.\n\n----\nWhat approach is being taken to make OpenAPI's a business advantage?\n\nButterfield: \n* Sometimes it's nice to have stuff get done without having to do it yourself...\n* Yes, ever since the rise of Microsoft, it's seemed like a good idea.\n* People can feel comfortable that their data is safe...\n\nSifry:\n* Like to be upfront about what they're doing\n* And yes, it gives them new ideas/stuff happens they don't have to do.\n\nRademacher:\n* Brings up the burdern of building a new app (since it's no longer about getting the data) - you have to build a better UI, or it's not worth it (or the user will at least get access to a lot of different implementations)\n\n----\nWhat are the disadvantages of OpenAPI?\n* Stuck supporting this API\n* Don't get the ad revenue\n* Dealing with security problems in the APIs\n\nButterfield:\n* If you have to do it, of course, you have to do it. Flickr tries to give notice.\n* Yeah, downsides: you have lots of bad programmers hammering on your APIs (accidental DoS).\n** Although, in the scheme of things, extra machines is a cheap solution against even another developer or two.\n\nSifry:\n* Do you trust your users?\n** Be smart in your design\n** Forwards compatible design\n* When you design for public APIs, sometimes you find that it's easier to build your own apps on your own public APIs.\n** This makes the internal development process easier/cleaner\n* Yeah, technorati's gotten DoSsed. Watch out for badly written examples in your own API kits.\n* Lost revenue? That's one of the reasons for the non-commercial restriction.\n** Can also return in licensing...\n\n----\nHave you designed HousingMaps to be mashed-up, as well?\n\nRademacher:\n* Haven't specifically thought about it, but no more protected than Google (the Javascript is out there).\n* Some people have made clones with slight changes.\n* New sites, of course, can sometimes break things.\n* One of the things that's really missing: CSS and HTML provide consistency and design sorts of things. But, application-level common elements are still missing from this environment.\n** Such tools are coming...\n\nButterfield:\n* Why Google Maps is so widely mashed up - not because of how great the UI idea was, but because they had the backend working, and fast.\n\n----\nTrends? Quality of tagging, network effects, etc?\n\nButterfield:\n* Design principle: primary value to the individual user\n* Don't have to get it all right, can do extraction on a big enough set. How many good photos of Tokyo do you really need?\n\nSifry:\n* Force tags to come in via html links.\n** Makes spamming more obvious/detectable\n** Provides an interesting pivot for the readers.\n\n\n\n
[[Link to the talk announcement|http://www.baychi.org/calendar/20050809/]]\n\ntags: [[baychi|http://technorati.com/tag/baychi]], [[flickr|http://technorati.com/tag/flickr]]\n(anyone know how to insert the rel="tag" into the above links using TiddlyWiki?