<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Structure in the flow &#187; pkm</title>
	<atom:link href="http://www.fsavard.com/flow/tag/pkm/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.fsavard.com/flow</link>
	<description>Website of François Savard. Topics: software engineering, personal knowledge management (PKM)</description>
	<lastBuildDate>Sun, 27 Jan 2013 22:41:16 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.5.1</generator>
		<item>
		<title>Diff revision: specific benefits (personal examples)</title>
		<link>http://www.fsavard.com/flow/2012/12/diff-revision-specific-benefits-personal-examples/</link>
		<comments>http://www.fsavard.com/flow/2012/12/diff-revision-specific-benefits-personal-examples/#comments</comments>
		<pubDate>Tue, 11 Dec 2012 22:12:41 +0000</pubDate>
		<dc:creator>Francois</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[diff revision]]></category>
		<category><![CDATA[pkm]]></category>

		<guid isPermaLink="false">http://www.fsavard.com/flow/?p=854</guid>
		<description><![CDATA[As a follow-up to the post &#8220;Diff revision: diff-based revision of text notes, using spaced repetition&#8221;, and as suggested by gwern in the comments, I&#8217;m adding a list of very specific cases where diff revision has been useful to me. Warning: some of these examples are super-specific, programming-oriented. But they make good examples. Also, in [...]]]></description>
				<content:encoded><![CDATA[<p>As a follow-up to the post <a href="http://www.fsavard.com/flow/2012/12/diff-revision/">&#8220;Diff revision: diff-based revision of text notes, using spaced repetition&#8221;</a>, and as suggested by gwern in the comments, I&#8217;m adding a list of <strong>very specific</strong> cases where diff revision has been useful to me. Warning: some of these examples are super-specific, programming-oriented. But they make good examples. Also, in some cases flashcards could have worked too, as of course there&#8217;s some overlap between the two memorization methods.</p>
<p>In all cases, keed in mind it&#8217;s impossible to say with 100% certainty what I would have remembered without the repetition, but these cases are examples where I&#8217;m pretty sure I&#8217;d have forgotten.</p>
<ul>
<li>An example dear to my heart: neuroscience was a side subject I wanted to study for a while, at least some basics.
<ul>
<li>In the past (~2003) I tried reading the first few chapters out of Purves&#8217; Neuroscience textbook, but forgot almost all of what I had read after beginning my baccalaureate (2004), for lack of time to read further. This was actually the main frustration that sparked the development for this tool.</li>
<li>Thanks to that system (I think), I now remember most of what I wanted to get out of these chapters (which I&#8217;ve had to re-read a few years later when I started my masters degree, ~2009), without having spent too much time encoding notes (I started with flashcards, then quickly realized this was way too much work for what I wanted).</li>
</ul>
</li>
<li>There are some programming concepts, functions, or bash and vim commands, etc. I remember, or started using, thanks to this.
<ul>
<li>It&#8217;s very easy to reinvent the wheel, or do things the wrong way, if you don&#8217;t remember some specific things exist. It&#8217;s easy to know you need a screwdriver when you see a screw, but it&#8217;s not immediately obvious you need a screw anchor if you don&#8217;t know about them (yeah why not simply screw into the wall? you&#8217;ll know when things fall apart weeks later)</li>
<li>Very specific examples:
<ul>
<li>some much less frequently used vi commands/features, e.g. mode lines</li>
<li>very specific: remembered to use &#8220;nohup&#8221; to start background processes because I reviewed it, otherwise I would probably have ended with something more hackish (using a GNU screen)</li>
<li>extended attributes for files, notably ACLs, specifically about 4 months ago even though I hadn&#8217;t used them in ~3 years I remembered about specific details of them (exact command) and could propose them as a solution quickly</li>
</ul>
</li>
<li>Also, it helps getting into the habit of using a command.
<ul>
<li>E.g. if I read that I can use &#8220;sudo !!&#8221; to redo the last command as super-user, by taking note of it, and reviewing it, I think I&#8217;m more likely to start using it, and then remembering comes even more easily, from using it.</li>
<li>That&#8217;s how I started using the &#8220;#&#8221;, &#8220;*&#8221; and &#8220;Ctrl+P&#8221; shortcuts in vim, as a specific example.</li>
</ul>
</li>
</ul>
</li>
<li>Of course there are <strong>higher-level notions I remember</strong>in more details thanks to this. This is not as directly useful, but it comes in handy when discussing software design ideas away from the computer. Yes you can do a lookup on Google, but often that&#8217;s just not quick enough when brainstorming with others.
<ul>
<li>General example: recently, I learned lots of high-scalability architecture concepts, such as details of Amazon Dynamo or Hadoop
<ul>
<li>to give a very specific example: the way data is stored per version in Google BigTable.</li>
</ul>
</li>
</ul>
</li>
<li>I have a much <strong>better idea of where to store</strong> (take note of) something new, and what older entries to link with completely new entries/files, and <strong>where I might find something</strong> I&#8217;m looking for. It complements wiki search, but it&#8217;s better since I have a better mental model of my notes, which also becomes a working mental model of my knowledge (I wrote about that in a <a href="http://www.fsavard.com/flow/2008/09/personal-wiki-a-tool-to-centralize-your-note-taking/">previous blog post</a>, see bit on &#8220;Mirror of your knowledge&#8221;).
<ul>
<li>Prior to using that system, I tended to forget where I had put something, and would create duplicate. I have ~1700 wiki entries, and I often won&#8217;t add anything for months at a time in a given entry. It&#8217;s hard, then, to think of the right place to put something if</li>
</ul>
</li>
<li>I feel <strong>much more confident I won&#8217;t forget something</strong>when I write it down in my wiki, that I&#8217;m not wasting my time.
<ul>
<li>Yes one could try to review things by hand, or rely on re-reading when editing their notes, but this formalizes the review with proper intervals. No need to worry about re-reading.</li>
</ul>
</li>
</ul>
 <img src="http://www.fsavard.com/flow/wp-content/plugins/feed-statistics.php?view=1&post_id=854" width="1" height="1" style="display: none;" />]]></content:encoded>
			<wfw:commentRss>http://www.fsavard.com/flow/2012/12/diff-revision-specific-benefits-personal-examples/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Diff revision: diff-based revision of text notes, using spaced repetition</title>
		<link>http://www.fsavard.com/flow/2012/12/diff-revision/</link>
		<comments>http://www.fsavard.com/flow/2012/12/diff-revision/#comments</comments>
		<pubDate>Fri, 07 Dec 2012 19:21:49 +0000</pubDate>
		<dc:creator>Francois</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[diff revision]]></category>
		<category><![CDATA[memorization]]></category>
		<category><![CDATA[my code]]></category>
		<category><![CDATA[pkm]]></category>

		<guid isPermaLink="false">http://www.fsavard.com/flow/?p=821</guid>
		<description><![CDATA[A few years ago I started getting frustrated with forgetting material I studied for side projects and interests. I knew of flashcard spaced repetition, but it didn&#8217;t really suit my need. So I built a tool to help review text notes, to better remember their content. It serves many goals, notably studying a large number [...]]]></description>
				<content:encoded><![CDATA[<p>A few years ago I started getting frustrated with forgetting material I studied for side projects and interests. I knew of flashcard spaced repetition, but it didn&#8217;t really suit my need. So I built a <strong>tool to help review text notes</strong>, to better remember their content. It serves many goals, notably studying a large number of subjects over longer periods of time, by <strong>taking advantage of text notes one would normally write anyway</strong>. The core idea is to <strong>review differences between versions of note files</strong> using spaced repetition intervals. I&#8217;ve been using this for about 3 years myself.</p>
<p>Warning: the <strong>concept is very general</strong>, and how you actually use the tool may change your experience entirely. (See &#8220;usage tips&#8221;)</p>
<p>Here&#8217;s a presentation (as a video) showing a typical use of the tool. (Note that &#8220;drev&#8221; and &#8220;diffrevision.py&#8221; are both aliases for &#8220;python path/to/diffrevision.py&#8221; on my machine)</p>
<p><center><iframe src="http://www.youtube.com/embed/2uxDvmHAeTM?vq=hd720" frameborder="0" width="640" height="360"></iframe></center></p>
<h2>What it is</h2>
<p>Here&#8217;s the typical usage scenario:</p>
<ul>
<li>Say you write notes in a bunch of text (.txt) files in a directory, or in a text-based wiki program (WikidPad, vimwiki, orgmode, etc.)</li>
<li>Every time you make a &#8220;significant&#8221; change in some files, you run the tool&#8217;s &#8220;add&#8221; and &#8220;diff&#8221; commands and it will know which files are new, which parts were modified in existing files, and which parts didn&#8217;t change.</li>
<li>You then review the parts that changed today in 2 days, then 6 days, then even further in the future, etc.
<ul>
<li>Every time you can remember longer until you need to review. That&#8217;s the spaced repetition idea, here applied to the differences in notes.</li>
<li>The idea is to highlight (in color) the parts that changed. You still see the whole text, including the old parts, when you review the new parts.</li>
</ul>
</li>
</ul>
<p>I made a command-line tool to support doing this. It&#8217;s a rewrite of something I had been using for two years, and I&#8217;ve been using the rewritten version for about a year.</p>
<p><center><br />
<a href="http://www.fsavard.com/flow/wp-content/uploads/2012/12/screenshot_diffrev2.png"><img class="aligncenter size-full wp-image-836" title="screenshot_diffrev" src="http://www.fsavard.com/flow/wp-content/uploads/2012/12/screenshot_diffrev2.png" alt="" width="275" height="310" /></a></center>Warning to spaced repetition fans:</p>
<ul>
<li>there&#8217;s no quantification for the moment, no &#8220;grading yourself&#8221; from, e.g., 0 to 5 upon review. Intervals are fixed. I&#8217;m looking at ways of adding this, but it&#8217;s not obvious to do right.</li>
<li>there&#8217;s no &#8220;hiding the answer&#8221; (as with flashcards, or with cloze deletion) either. Again it might be an interesting feature to add.</li>
</ul>
<h2>Trying the tool</h2>
<p>The <strong>tool is command-line based</strong>. The review is done in a web browser, by producing a set of HTML files, one for every &#8220;diff&#8221; to review. It works with plain text files, and if anything changed on a line, the whole line is highlighted when reviewing.</p>
<p>The <a href="https://github.com/fsav/diffrev">code is on Github</a>, or here&#8217;s a <a href="https://github.com/fsav/diffrev/archive/master.zip">.zip of an hopefully stable version</a>. See below for usage instructions, or just run the program without arguments (&#8220;python diffrevision.py&#8221;). It&#8217;s Python (no dependency on anything but core Python packages), so you&#8217;ll need the Python interpreter. I know it to work on Ubuntu Linux with Python 2.6 and 2.7, and I tested it partially under Cygwin (Windows, Python 2.5).</p>
<p>By the way I have other versions written, notably a web app version, but I have a feeling that this will appeal mostly to programmers or power users, so I&#8217;m releasing the open source version. To the business-minded readers who think one could charge for this: first read <a href="http://lesswrong.com/lw/e26/who_wants_to_start_an_important_startup/7834?context=3">this</a>, <a href="http://www.gwern.net/Spaced%20repetition#popularity">this</a> and <a href="http://wiki.supermemo.org/index.php?title=Why_isn%27t_SuperMemo_more_popular%3F">this</a>, on the marketing of spaced repetition products.</p>
<p>&nbsp;</p>
<h2>Concepts</h2>
<h3>Unix &#8216;diff&#8217;</h3>
<p>The Unix &#8216;diff&#8217; tool is a program which takes as input two files, and tells you what changed from one to the other. This is used extensively by programmers to know what parts of a source code changed from one version to the next.</p>
<h3>Spaced repetition (with flashcards)</h3>
<p>Spaced repetition programs such as Supermemo, Anki and Mnemosyne help you remember facts. I&#8217;ve<a href="http://www.fsavard.com/flow/2008/10/memorization-optimizing-flashcard-review-with-spaced-repetition/"> described them in more details here</a>. But in essence you create a question and answer flashcard, say Q: what does DNA stand for? A: Deoxyribonucleic acid. The program will ask in a day or two to review it. Then, depending on how well you remembered it, you give yourself a score. That score is then used to adjust the next interval, so maybe next review will then be in a week. This repeats itself, each time stretching the interval more and more, as you remember better every time (hopefully).</p>
<h2>The benefits (why use this?)</h2>
<p>Why you would want to do this kind of review, in addition to, or instead of, using a flashcard spaced repetition program? Succintly, and cutting corners:</p>
<ul>
<li>Putting knowledge in the form of flashcards is a lot of work (a lot of time for a relatively small quantity of knowledge).</li>
<li>Also, the result is not an <strong>easily &#8220;browsable&#8221;, readable knowledge store</strong>.</li>
<li>On the other hand, taking <strong>continuous-text notes is very natural, easily done</strong>, and helps making ideas clearer.
<ul>
<li>And you&#8217;re free to organize pieces of knowledge the way you want.</li>
<li>Also, personally, I just do it anyway, whether I review or not. In itself it helps understanding, and remembering (<a href="http://en.wikipedia.org/wiki/Generation_effect">generation effect</a>).</li>
</ul>
</li>
<li>But, contrary to flashcards, <strong>reviewing text that changes</strong> over time as we learn more on a topic, <strong>is a challenge: which parts should be reviewed</strong>, if old parts are well remembered, but novel bits, less familiar, are here and there all over the document?
<ul>
<li>Hence reviewing the changes helps being efficient in your review of what is also a useful reference text.</li>
</ul>
</li>
</ul>
<p>Also, sometimes you don&#8217;t mind forgetting some parts. You just want the main ideas to be &#8220;fresh in your memory&#8221;. I find this form of review especially well suited for this.</p>
<p>Going further, sometimes you simply don&#8217;t want to forget something even <em>exists</em>, or that you <em>have notes somewhere</em> on X or Y topic. I&#8217;m often confounded when someone tells me we discussed this or that and I&#8217;ve absolutely no recollection of the episode&#8230; I&#8217;m sure it also happens with some things I read, but I simply have no one to remind me of those.</p>
<p>Another benefit is that you can <strong>review &#8220;in context&#8221;</strong>: you see the whole text, with new parts being highlighted. So you see the old parts as well, the &#8220;context&#8221;.</p>
<h2>Using the tool</h2>
<p>I programmed a command-line utility in Python to support this. It builds a database of versions of note files.</p>
<p>In essence, you first configure the program in &#8220;core/config.py&#8221; (see explanations at the top of this file). You then write your notes in text files in a single directory (hierarchy could in principle be supported, but it&#8217;s not done yet). Say you&#8217;ve added your first two .txt files. You then run</p>
<p>python diffrevision.py show_new</p>
<p>and you&#8217;ll see a list of the new files in the directory of your notes (specified in the config). You then add them with:</p>
<p>python diffrevision.py add</p>
<p>which will simply add them to the list of files to be watched for changes.</p>
<p>When you&#8217;ve added new files or you&#8217;ve made some changes and want to construct reviews from differences, you run:</p>
<p>python diffrevision.py diff</p>
<p>This will look for changes in files that the system is tracking, and record new versions for files that changed since the last time that command was run. There are also commands to see new files, add them for tracking changes, or ignore some files.</p>
<p>When you want to review changes that are to be reviewed at this point in time, you use:</p>
<p>python diffrevision.py today</p>
<p>This will create a temporary directory and populate it with one HTML file for each &#8220;diff&#8221; to be reviewed that day. You then load the &#8220;index.html&#8221; file in a Web browser, and open tabs for each file. When finished, you run</p>
<p>python diffrevision.py finished 1234 2345 3456 &#8230;</p>
<p>where &#8220;1234 2345 3456&#8243; are the space-separated IDs of each of the diffs. To simplify this, the command is given to you in &#8220;index.html&#8221; based on the reviews (diffs) you clicked on.</p>
<p>Suggestions for Linux users: in your $HOME/.bashrc, write an alias such as &#8220;alias drev=&#8217;python path/to/diffrevision.py&#8217; to make it easier to run the program.</p>
<h3>Limitations</h3>
<ul>
<li>This is limited to plain text files, with almost no support for formatting.
<ul>
<li>Formatting of notes only supports WikidPad syntax for the moment. Writing another formatter is a bit complicated, but doable provided you&#8217;re a Python programmer and you have well-isolated Python code to export wiki syntax to HTML. See wikidpad_formatter.py and surrounding files for an example.</li>
</ul>
</li>
<li>Don&#8217;t use non-ASCII characters (accents etc.) in filenames; at first it&#8217;ll smile at you and things will work, but when you least expect it it&#8217;ll stab you in the back. For the content of the files, just configure the character encoding properly in configuration.py.</li>
</ul>
<h2>Usage tips</h2>
<p>As said in the intro, how you use the tool may change your experience from &#8220;bleh&#8221; to &#8220;how did I ever live without this?&#8221; (that&#8217;s my case anyway).</p>
<ul>
<li>The most important point: <strong>make every change small</strong>, 5-10 lines or less before you run &#8220;diff&#8221;.
<ul>
<li>Try to make changes be coherent, a single &#8220;idea&#8221;. Otherwise I find myself botching the review.</li>
<li>The tool is made for &#8220;diff&#8221; to be fast to run (checking file modification time), to allow doing exactly that.</li>
</ul>
</li>
<li>Use with a personal wiki that stores notes in plain text (WikidPad, vimwiki, orgmode&#8230;). I wrote about <a href="http://www.fsavard.com/flow/2008/09/personal-wiki-wikidpad-from-a-programmers-point-of-view/">why this is a good idea</a>.</li>
<li>Don&#8217;t delay review too much, as reviews accumulate fast, and it can get daunting. Ideally it&#8217;s done every day, just like with other spaced repetition programs.</li>
</ul>
<p>&nbsp;</p>
<h2>Main use cases (who might benefit from this?)</h2>
<p>With time, I might write more use cases here. See also my <a href="http://www.fsavard.com/flow/2012/12/diff-revision-specific-benefits-personal-examples/">follow-up post on very specific personal benefits</a> I see with this. The main use cases I see are:</p>
<ul>
<li>Studying a large diversity of topics over an extended period of time. This is typical of knowledge work, such as programming. To take an example:
<ul>
<li>Say a programming language is of interest to me, but I hear about it piece by piece (news about Erlang, say)</li>
<li>At first I&#8217;ll read about it on Wikipedia, take 10 minutes or so and write down what&#8217;s different about it in some bullet points (I like bullet points, if you hadn&#8217;t figured that out <img src='http://www.fsavard.com/flow/wp-includes/images/smilies/icon_razz.gif' alt=':P' class='wp-smiley' />  ).</li>
<li>That&#8217;ll be in a file named &#8220;Programming &#8212; Erlang.txt&#8221;</li>
<li>But then a month later I might see an interesting article about a project that benefited from it</li>
<li>I&#8217;ll add notes about this to the .txt file.</li>
<li>But in the meantime if I hadn&#8217;t reviewed my notes, as I&#8217;m pretty busy and studying Erlang is low in my priorities, I might very well have forgotten.</li>
</ul>
</li>
<li>Studying topics that change over time, such as the state of the world, or any academic field.
<ul>
<li>For topics such as politics, I&#8217;ll usually have a &#8220;trends&#8221; and &#8220;news&#8221; sections to my pages.</li>
</ul>
</li>
<li>Generally having a better mental model of the structure of your notes (no need to review the details if this is the only goal)</li>
</ul>
<h2>Cases where flashcards are better</h2>
<p>This point is important: <strong>this is not a flashcard-review replacement</strong>. For factual information you want to remember very precisely, flashcards are much better. This includes vocabulary review, dates, precise technical terms, etc. I&#8217;ll probably expand on this list at some point.</p>
<p>The other <em>very important</em> point is that there&#8217;s no way of scoring your performance on a review, and even if I wanted to implement this, it&#8217;s just not clear what would be the best way to do it. The absence of score makes it hard to measure/quantify things such as retention rate, forgetting curves, etc. There&#8217;s a lot of room for improvement on scheduling, and it&#8217;s the next feature I want to add (quantification and better scheduling).</p>
<h2>About &#8220;memorization&#8221;</h2>
<p>Memorizing is a very, er, touchy subject. When someone comes up with the topic, many people go up in arms with &#8220;but memorizing is useless; creativity, usage and comprehension are much more important!&#8221; etc. Yet I still think that for some types of tasks memorizing, to varying degrees of precision, is useful. Hence this tool.</p>
<p>I&#8217;ll later present the way I roughly divide studying tasks and the memorization/study method I think appropriate for each category. I&#8217;m no pedagogy or spaced repetition expert, by the way, so all this is just the opinions of a programmer.</p>
<h2>Personal history with this</h2>
<p>I&#8217;ve been using this for 3 years, since the start of my Masters degree (which I finished a year ago). I&#8217;ve accumulated some (qualitative) experience with the process, some of which I&#8217;ll gradually share here.</p>
<p>I have no proof that this works (hard data, graphs). My qualitative experience is that it does help me remember better. To be specific I&#8217;ve written a <a href="http://www.fsavard.com/flow/2012/12/diff-revision-specific-benefits-personal-examples/">follow-up post on some benefits I&#8217;ve seen personally</a>, using very (very) specific examples, as suggested by gwern in the comments.</p>
<p>I hope this may be useful to others. I won&#8217;t have much time to work on improving the tool, but as I use it everyday, my natural itch-scratch cycle will probably lead to some new features. Also, feel free to improve on the tool. If your extensions are clean, useful and modular (ie. does not change behavior unless a user&#8217;s config specifies it) I&#8217;ll gladly merge them with the main Git branch.</p>
<h2>Wishlist / TODO for the tool</h2>
<ul>
<li>Support for telling the program how well you remembered each diff, like with spaced repetition systems: grading yourself from 1 to 5 and adjusting the interval accordingly. Also, that will help experimenting and keeping statistics. However it&#8217;s not as simple as with flashcards, as there may be more than one single piece of information in a review, and you may remember some parts better than others. I&#8217;m open to ideas here.</li>
<li>No support for file hierarchy for the moment.</li>
<li>Adding other formatters would be very useful, notably for vimwiki, ReStructured Text and markdown.</li>
<li>For the moment, each version is stored in its entirety, which will sound stupid to anyone knowing anything about version control. But it was faster/simpler. The Storage object is well isolated: you want to make it more efficient, have a go at it <img src='http://www.fsavard.com/flow/wp-includes/images/smilies/icon_razz.gif' alt=':P' class='wp-smiley' /> </li>
</ul>
<p>There are many more tasks to be done, of course, but these are the main features I&#8217;d like to add.</p>
 <img src="http://www.fsavard.com/flow/wp-content/plugins/feed-statistics.php?view=1&post_id=821" width="1" height="1" style="display: none;" />]]></content:encoded>
			<wfw:commentRss>http://www.fsavard.com/flow/2012/12/diff-revision/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Google Reader feed maker</title>
		<link>http://www.fsavard.com/flow/2010/03/google-reader-feed-maker/</link>
		<comments>http://www.fsavard.com/flow/2010/03/google-reader-feed-maker/#comments</comments>
		<pubDate>Tue, 09 Mar 2010 00:45:22 +0000</pubDate>
		<dc:creator>Francois</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[pkm]]></category>
		<category><![CDATA[RSS]]></category>

		<guid isPermaLink="false">http://www.fsavard.com/flow/?p=586</guid>
		<description><![CDATA[UPDATE July 29, 2011: Google seems to have disabled this feature (a few months after it came out, actually). In any case, I find locally-installed extensions such as Firefox SiteDelta to be more reliable than online tools for this task, as you control the verification schedule  (e.g. I tried Page2RSS, but never got any updates [...]]]></description>
				<content:encoded><![CDATA[<p><strong>UPDATE July 29, 2011</strong>: <strong>Google seems to have <a href="http://googlesystem.blogspot.com/2010/09/google-readers-web-page-monitoring-to.html">disabled this feature</a></strong> (a few months after it came out, actually). In any case, I find locally-installed extensions such as <a href="https://addons.mozilla.org/en-US/firefox/addon/sitedelta/">Firefox SiteDelta</a> to be more reliable than online tools for this task, as you control the verification schedule  (e.g. I tried <a href="http://page2rss.com/">Page2RSS</a>, but never got any updates in the provided feed).</p>
<p><del>Just a quick post to underline a <strong>Google Reader feature</strong> which, though simple, may come in handy: <a href="http://googlereader.blogspot.com/2010/01/follow-changes-to-any-website.html">creating a <strong>feed for &#8220;feed-less&#8221; sites</strong></a>. It basically tracks updates on pages by <strong>periodically checking the pages you choose</strong>.</del></p>
<p><del>I need to mention that for <strong>table-based pages</strong> (or any page with recurring pattern but no feed) there are existing services such as <a href="http://www.dapper.net/open/">Dapper</a> which will allow you to create a more sophisticated and precise feed by creating a page scrapper on-the-fly.</del></p>
<p><del>It&#8217;s the kind of feature for which I tend to find more and more uses as  time goes on. One significant example I&#8217;m thinking of is <strong>personal homepages of friends and people</strong> who haven&#8217;t yet integrated a feed: it&#8217;d be nice to be alerted when they change.</del></p>
<p>(Via this <a href="http://lifehacker.com/5456657/google-reader-gets-smart-tracks-updates-on-feedless-web-sites">LifeHacker article</a>)</p>
<p><em><strong>Update the next day</strong>: there seems to be plenty other similar  services. <a href="http://www.changedetection.com/">ChangeDetection.com</a> is an old  one, sending updates via email. For others, just Google for &#8220;monitor  page changes&#8221;.</em></p>
<p>(To be perfectly honest, from a programmer&#8217;s point of view, I guess you could do the same by having a list of URLs and setting up a script to periodically check whether significant changes have been made (i.e. using a &#8220;diff&#8221;). Yet I never took the time to do it, and now that&#8217;s it&#8217;s easily available&#8230;)</p>
<p><del></del></p>
<p><del><br />
</del></p>
 <img src="http://www.fsavard.com/flow/wp-content/plugins/feed-statistics.php?view=1&post_id=586" width="1" height="1" style="display: none;" />]]></content:encoded>
			<wfw:commentRss>http://www.fsavard.com/flow/2010/03/google-reader-feed-maker/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Simple Javascript memory game</title>
		<link>http://www.fsavard.com/flow/2010/02/simple-javascript-memory-game/</link>
		<comments>http://www.fsavard.com/flow/2010/02/simple-javascript-memory-game/#comments</comments>
		<pubDate>Sat, 20 Feb 2010 18:24:53 +0000</pubDate>
		<dc:creator>Francois</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Clusterify]]></category>
		<category><![CDATA[my code]]></category>
		<category><![CDATA[pkm]]></category>
		<category><![CDATA[programming]]></category>

		<guid isPermaLink="false">http://www.fsavard.com/flow/?p=582</guid>
		<description><![CDATA[Here&#8217;s a little memory game I just finished, using jQuery. It&#8217;s very bare bones, and I might add features to it, but it works, doesn&#8217;t have a bunch of ads floating around (like most do on the Web), and the board size can be changed (up to 60 total cards for the moment). For the [...]]]></description>
				<content:encoded><![CDATA[<p>Here&#8217;s a <a href="http://fsavard.com/code/pairsgame/">little memory game</a> I just finished, using jQuery. It&#8217;s very bare bones, and I might add features to it, but it works, doesn&#8217;t have a bunch of ads floating around (like most do on the Web), and the board size can be changed (up to 60 total cards for the moment).</p>
<p><span id="more-582"></span></p>
<p>For the context: when we launched <a href="http://clusterify.com/projects/">Clusterify</a>, one of the early projects I proposed was a <a href="http://clusterify.com/projects/list/fsavard/3/">simple &#8220;matching pairs&#8221; game</a>. Some almost-complete code I wrote up has been sitting on my computer ever since, just needing a few last fixes, and the addition of actual pictures. So I did those last fixes, adapted stock photos for it, and now <a href="http://fsavard.com/code/pairsgame/">here&#8217;s the game</a>.</p>
<h3>Changelog</h3>
<ul>
<li><strong>2010.02.22:</strong> as per a commenter&#8217;s (Jebadiah&#8217;s) suggestion, added a score and a timer. Also, images are now shuffled so the last ones (cats and birds) show up in the smaller grid.</li>
</ul>
 <img src="http://www.fsavard.com/flow/wp-content/plugins/feed-statistics.php?view=1&post_id=582" width="1" height="1" style="display: none;" />]]></content:encoded>
			<wfw:commentRss>http://www.fsavard.com/flow/2010/02/simple-javascript-memory-game/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>A few useful augmented reality apps</title>
		<link>http://www.fsavard.com/flow/2010/02/a-few-useful-augmented-reality-apps/</link>
		<comments>http://www.fsavard.com/flow/2010/02/a-few-useful-augmented-reality-apps/#comments</comments>
		<pubDate>Sat, 20 Feb 2010 15:50:27 +0000</pubDate>
		<dc:creator>Francois</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[pkm]]></category>

		<guid isPermaLink="false">http://www.fsavard.com/flow/?p=576</guid>
		<description><![CDATA[Augmented reality is the concept of adding information to the stream your senses already provide about the surrounding scene. Concretely, these last few months, a lot of software has appeared for smartphones, taking advantage of the integration of a camera with a good-enough screen. Here are a few examples: The recent Google Goggles and Google [...]]]></description>
				<content:encoded><![CDATA[<p><a href="http://en.wikipedia.org/wiki/Augmented_reality">Augmented reality</a> is the concept of <strong>adding information to the stream your senses already provide about the surrounding scene</strong>. Concretely, these last few months, a lot of software has appeared for <strong>smartphones</strong>, taking advantage of the integration of a camera with a good-enough screen. Here are a few examples:</p>
<ul>
<li>The recent <a href="http://www.google.com/mobile/goggles/">Google Goggles</a> and <a href="http://www.google.com/mobile/shopper/">Google Shopper</a>. Goggles adds information to objects you take a picture of, or uses GPS to retrieve information about shops you walk by and add it to the picture (most AR apps I&#8217;ve seen focus on this). Shopper adds information about the current product.
<ul>
<li>Another feature of Goggles is the <a href="http://www.youtube.com/watch?v=ae01yz5z99E">instant translation of text in a picture</a>. This could be quite handy when travelling.</li>
</ul>
</li>
<li>There are <strong>augmented reality &#8220;browsers&#8221;</strong> which provide a platform to add features to. For example, <a href="http://www.youtube.com/watch?v=b64_16K2e08">Layar</a> lets you select <a href="http://layar.com/layers/">&#8220;Layers&#8221; of information</a> to add to the scene.
<ul>
<li>There&#8217;s also <a href="http://www.junaio.com/">Junaio</a>, a browser which allows the addition of 3D animations to the image, with lots of <a href="http://www.readwriteweb.com/start/2009/11/junaio-will-editable-3d-object.php">potential for entertainment apps</a>.</li>
</ul>
</li>
<li><a href="http://www.wikitude.org/">Wikitude</a> uses augmented reality to add traveller&#8217;s guide type information to the scene.</li>
<li><a href="http://www.youtube.com/watch?v=tb0pMeg1UN0">TAT augmented ID</a>: use the cam to get a good image of someone to identify, and this uses an online face recognition service to provide public information they want to share if they&#8217;ve set up their &#8220;public ID card&#8221; (Twitter profile etc.).</li>
</ul>
<p>Augmented reality appears a lot in science fiction. For the most part, though, it involves directly augmenting the field of view of a person. If you&#8217;ve ever seen Ghost in the shell (the movie, especially the second one), you&#8217;ll know what I mean. I remember being quite excited when I read about the possibility of added information through semi-transparent head-mounted displays (this <a href="http://www.youtube.com/watch?v=wJItdmumxYY">video demonstrates</a>, though in this case it&#8217;s not transparent at all, and obviously not something you&#8217;d walk with in your everyday life <img src='http://www.fsavard.com/flow/wp-includes/images/smilies/icon_razz.gif' alt=':P' class='wp-smiley' />  ). Cam-and-screen is more reachable for the moment, I guess, and a lot less cumbersome.</p>
 <img src="http://www.fsavard.com/flow/wp-content/plugins/feed-statistics.php?view=1&post_id=576" width="1" height="1" style="display: none;" />]]></content:encoded>
			<wfw:commentRss>http://www.fsavard.com/flow/2010/02/a-few-useful-augmented-reality-apps/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Organizing documents for easy retrieval</title>
		<link>http://www.fsavard.com/flow/2010/02/organizing-documents-for-easy-retrieval/</link>
		<comments>http://www.fsavard.com/flow/2010/02/organizing-documents-for-easy-retrieval/#comments</comments>
		<pubDate>Fri, 12 Feb 2010 17:00:55 +0000</pubDate>
		<dc:creator>Francois</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[pkm]]></category>

		<guid isPermaLink="false">http://www.fsavard.com/flow/?p=569</guid>
		<description><![CDATA[Given the original topic of this blog (personal knowledge management), it&#8217;s been a while since I should have addressed the issue of filing documents for easier retrieval. I haven&#8217;t done it yet because the issue is just so large (many options). To solve this, I&#8217;ll just start small, with what I do personally, and grow [...]]]></description>
				<content:encoded><![CDATA[<p>Given the original topic of this blog (personal knowledge management), it&#8217;s been a while since I should have addressed the issue of filing documents for easier retrieval. I haven&#8217;t done it yet because the issue is just so large (many options). To solve this, I&#8217;ll just start small, with what I do personally, and grow the topic as time goes on.</p>
<p>By the way, the following are <strong>just simple tips</strong> I use. Some will seem <strong>obvious maybe, but they lay ground work</strong> for (potential) next posts.</p>
<h2>Motivation and (*ahem*) philosophical considerations</h2>
<p>Since I started graduate studies, I&#8217;ve been accumulating a lot of documents, mostly PDFs of research papers (which, btw, I annotate heavily with PDF XChange Viewer, see <a href="http://www.fsavard.com/flow/2009/03/pdf-annotation-under-linux-with-wine-and-pdf-xchange-viewer/">this post</a>). Yet it&#8217;s easy to forget where I&#8217;ve put one of them.</p>
<p>Now, for academic documents, there are dedicated solutions for document management, such as <a href="http://www.zotero.org/">Zotero</a>. These obviously offer lots of options for filing, searching (and citing).</p>
<p>Yet I have a <strong>tendency to prefer lightweight solutions</strong>, based on <strong>basic filesystem principles (filenames and directories)</strong>. This simplifies incremental backups, never becomes obsolete, and will always be cross-platform <img src='http://www.fsavard.com/flow/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  Also, from a programmer perspective, it&#8217;s easy to use such a structure with scripts, too, if the need ever arises (e.g. for backup scripts).</p>
<h2>Using plain old filenames with &#8220;tags&#8221;</h2>
<p>My current system is simply a hierarchy of documents in directories (dah, but bear with me). Yet I&#8217;m careful in the way I name the documents. A <strong>basic problem with hierarchies</strong> is that a given <strong>document can often be placed in multiple places</strong>. In turn, a common solution is to place it somewhere that nevertheless makes sense, even though there might be other classification options, and then use tags (keywords) for those other options. Then you can <strong>list by tags (see Virtual folders) and get it in multiple places</strong>.</p>
<p>Concretely, <strong>I name my documents this way: &#8220;title, authors, date, tags .extension&#8221;</strong>. For example, &#8220;Learning representations by back-propagating errors, Rumelhart Hinton Williams, 1986, neural networks, machine learning.pdf&#8221;.</p>
<p>Yet hierarchies are also highly intuitive, so most of the time I can locate the document by browsing the filesystem, not searching. So, the final solution is: <strong>1) try hierarchy, if that doesn&#8217;t work, 2) search filenames</strong> for keywords, authors, dates, etc.</p>
<p>This might seem quite obvious, actually, but it requires planning. Notably, <strong>consistency is required for tags</strong>. If applicable, I try to use <strong>directory names as tags</strong>. For example, a document might be relevant to &#8220;signal processing&#8221; and &#8220;machine learning&#8221;. So I&#8217;d use the tag &#8220;digital signal processing&#8221; if I filed it under the &#8220;machine learning&#8221; directory.</p>
<h2>Virtual folders</h2>
<p>Now the <strong>fun part of being consistent in tags</strong> and naming: if you&#8217;re using this convention, you can then use <a href="http://en.wikipedia.org/wiki/Virtual_folder">the <strong>Virtual folder</strong> principle</a> to <strong>group documents</strong> by tags, <strong>as if they were in a real directory</strong>, which would otherwise be in <em>different</em> directories. That way, in my &#8220;signal processing&#8221; directory, I can create a saved search which will grab the document I put in the &#8220;machine learning&#8221; directory automatically.</p>
<p>Basically, instead of typing a query each time, you just save it like a file, and the results now behave like a new directory. This is available on all OSes, see this <a href="http://en.wikipedia.org/wiki/Virtual_folder">Wikipedia page</a>.</p>
<h2>Searching in the files themselves</h2>
<p>I use <strong>filename search because it&#8217;s fast</strong> and very easy, and makes &#8220;virtual folders&#8221; work real swift. It&#8217;s also possible to search inside the files, of course. I won&#8217;t say much about this, except mention the essential: <strong>for content search to be fast, files need to be indexed in advance</strong>.</p>
<p>There are many programs which can do this, and some of them <strong>now come integrated with operating systems</strong> (Explorer does it on Windows, Spotlight for Mac OS, and there are a variety of options for Linux, notably Beagle). For more advanced functionality and to handle more information sources (e.g. emails, IMs&#8230;), <a href="http://desktop.google.com/"><strong>Google Desktop</strong></a> must be mentioned.</p>
<h2>Musings and relation to other posts</h2>
<ul>
<li>The &#8220;lightweight&#8221; principle starts to come back often in my posts. It&#8217;s one <a href="http://www.fsavard.com/flow/2008/09/personal-wiki-wikidpad-from-a-programmers-point-of-view/">strength, to me, of Wikidpad</a>: wiki entries are plain text files.</li>
<li>The hierarchy-and-tags principle is the idea behind might <a href="http://www.fsavard.com/flow/2008/10/repetition-and-my-wikidpad-dynamic-search-extension/">Wikidpad &#8220;saved search&#8221; extension</a>.</li>
</ul>
 <img src="http://www.fsavard.com/flow/wp-content/plugins/feed-statistics.php?view=1&post_id=569" width="1" height="1" style="display: none;" />]]></content:encoded>
			<wfw:commentRss>http://www.fsavard.com/flow/2010/02/organizing-documents-for-easy-retrieval/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Memorization software database, updates</title>
		<link>http://www.fsavard.com/flow/2010/02/memorization-software-database-updates/</link>
		<comments>http://www.fsavard.com/flow/2010/02/memorization-software-database-updates/#comments</comments>
		<pubDate>Tue, 09 Feb 2010 18:40:49 +0000</pubDate>
		<dc:creator>Francois</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[pkm]]></category>

		<guid isPermaLink="false">http://www.fsavard.com/flow/?p=563</guid>
		<description><![CDATA[A quick link to this very comprehensive flashcard/memorization software database, with very detailed reviews (see their rating criteria). I personally have been using Mnemosyne for a few months (to study a new language &#8212; spaced repetition is very well suited for the task). This really does seem to work on this timescale. I have yet [...]]]></description>
				<content:encoded><![CDATA[<p>A quick link to this very <a href="http://learn.how.to/">comprehensive flashcard/memorization software database</a>, with very detailed reviews (see their <a href="http://www.quingle.com/softarea/flash-cr.htm">rating criteria</a>).</p>
<p>I personally have been using Mnemosyne for a few months (to study a new language &#8212; spaced repetition is very well suited for the task). This really does seem to work on this timescale. I have yet to discover if after 5, 10&#8230; years the knowledge still sticks (if using only that schedule).</p>
<p>&#8212;</p>
<p>Also, following this <a href="http://lifehacker.com/5467037/add-universal-keyword-control-to-all-of-your-browsers-with-quix">Lifehacker article</a>, I updated the <a href="http://www.fsavard.com/flow/2010/01/quix-a-bookmarklet-and-toolbox-of-web-oriented-commands/">recent post on Quix</a>.</p>
 <img src="http://www.fsavard.com/flow/wp-content/plugins/feed-statistics.php?view=1&post_id=563" width="1" height="1" style="display: none;" />]]></content:encoded>
			<wfw:commentRss>http://www.fsavard.com/flow/2010/02/memorization-software-database-updates/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Quix, a bookmarklet and toolbox of web-oriented commands</title>
		<link>http://www.fsavard.com/flow/2010/01/quix-a-bookmarklet-and-toolbox-of-web-oriented-commands/</link>
		<comments>http://www.fsavard.com/flow/2010/01/quix-a-bookmarklet-and-toolbox-of-web-oriented-commands/#comments</comments>
		<pubDate>Thu, 28 Jan 2010 15:55:17 +0000</pubDate>
		<dc:creator>Francois</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[pkm]]></category>

		<guid isPermaLink="false">http://www.fsavard.com/flow/?p=557</guid>
		<description><![CDATA[Quix is a new tool that allows you to unclutter you bookmarklets by using a &#8220;command-line&#8221; like syntax. You simply drag-and-drop their bookmarklet to your bookmarks and invoke its prompt by clicking it on the page you need it. For example, if you&#8217;re on this page and type &#8220;gs wiki&#8221;, it will Google Site Search [...]]]></description>
				<content:encoded><![CDATA[<p><a href="http://quixapp.com/" target="_blank">Quix</a> is a new tool that allows you to <strong>unclutter you bookmarklets</strong> by using a <strong>&#8220;command-line&#8221; like syntax</strong>. You simply drag-and-drop their bookmarklet to your bookmarks and <strong>invoke its prompt by clicking it</strong> on the page you need it. For example, if you&#8217;re on this page and type &#8220;gs wiki&#8221;, it will Google Site Search this page for the term &#8220;wiki&#8221; (see video below).</p>
<p><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="400" height="285" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="src" value="http://vimeo.com/moogaloop.swf?clip_id=8540763&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=0&amp;show_portrait=0&amp;color=ff9933&amp;fullscreen=1" /><embed type="application/x-shockwave-flash" width="400" height="285" src="http://vimeo.com/moogaloop.swf?clip_id=8540763&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=0&amp;show_portrait=0&amp;color=ff9933&amp;fullscreen=1" allowscriptaccess="always" allowfullscreen="true"></embed></object></p>
<p>Two <strong>very concrete uses</strong> of this I see here is accessing a <strong>wider variety of search engines and dictionaries</strong> and <strong>submitting to social sites</strong>. The webmaster tools seem very interesting too, if you&#8217;re into that.</p>
<p>By the way, this is <strong>similar to the Firefox &#8220;bookmark keyword&#8221;</strong> feature, which, combined with the &#8220;Add a keyword for this search&#8230;&#8221; feature gives a similar functionality (see <a href="http://lifehacker.com/196779/hack-attack-firefox-and-the-art-of-keyword-bookmarking">Lifehacker guide</a>). Yet, Quix has a <strong>wide range of integrated commands</strong> (just reading the list I made a bunch of fun discoveries) and the <strong>replacements are more flexible</strong>.</p>
<p>Sure earlier there were &#8220;command lines for the Web&#8221; such as, notably, <a href="http://yubnub.org/">YubNub</a>. But Quix is different in that it executes in the context of the current page, allowing it to be a portal to other bookmarklets. YubNub is interesting for the wide variety of commands it already has, by the way (and it could be integrated through Quix easily, I guess).</p>
<p>You can also add <strong>custom commands to use in the Quix prompt</strong>. To do this, you have to <a href="http://quixapp.com/help/syntax/">understand its syntax</a>, but it&#8217;s very simple. As an example, I added a command to clean up the current page for easier reading with the <a href="http://www.instapaper.com/text">&#8220;Instapaper Text&#8221; tool</a> (which is similar to Readability, which <a href="http://www.fsavard.com/flow/2009/04/clean-up-webpages-for-easier-reading-with-readability/">I posted about about a year ago</a>). The basic command structure is:</p>
<pre>command  "bookmarklet code or url"  "description"</pre>
<p>To <a href="http://quixapp.com/extend/">use your own extension</a> (go there for form), you&#8217;ll have to put up a text file somewhere on the Web. I suggest using <a href="http://www.pastie.org">Pastie</a>, and clicking on the &#8220;Raw&#8221; link. Here&#8217;s the <a href="http://pastie.org/798866.txt">textfile for the above Instapaper command</a>.</p>
<p><strong>Update</strong>: as this new <a href="http://lifehacker.com/5467037/add-universal-keyword-control-to-all-of-your-browsers-with-quix">Lifehacker guide</a> suggests, you can even get the Quix prompt quicker by setting up a keyword/keybinding in Firefox, or similarly in other browsers. See the <a href="http://quixapp.com/browsers/firefox/">guidelines for each browser</a>. Also, Lifehacker points to <a href="http://www.kungfugrippe.com/search/quix">Merlin Mann&#8217;s own extensions</a>.</p>
<p>Via <a href="http://www.readwriteweb.com/">ReadWriteWeb</a>.</p>
 <img src="http://www.fsavard.com/flow/wp-content/plugins/feed-statistics.php?view=1&post_id=557" width="1" height="1" style="display: none;" />]]></content:encoded>
			<wfw:commentRss>http://www.fsavard.com/flow/2010/01/quix-a-bookmarklet-and-toolbox-of-web-oriented-commands/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Clean up webpages for easier reading with Readability</title>
		<link>http://www.fsavard.com/flow/2009/04/clean-up-webpages-for-easier-reading-with-readability/</link>
		<comments>http://www.fsavard.com/flow/2009/04/clean-up-webpages-for-easier-reading-with-readability/#comments</comments>
		<pubDate>Fri, 17 Apr 2009 23:47:08 +0000</pubDate>
		<dc:creator>Francois</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[pkm]]></category>

		<guid isPermaLink="false">http://www.fsavard.com/flow/2009/04/clean-up-webpages-for-easier-reading-with-readability/</guid>
		<description><![CDATA[I just discovered Readability via the Academic Productivity blog. Similar in intention to the Aardvark extension I posted about a few months ago, it allows you to reformat a page for easier reading: grab only the main content, change the font to a format of your choice. All through a configurable bookmarklet. In contrast to [...]]]></description>
				<content:encoded><![CDATA[<p>I just discovered <a href="http://lab.arc90.com/experiments/readability/">Readability</a> via the <a href="http://www.academicproductivity.com/">Academic Productivity</a> blog. Similar in intention to the <a href="http://karmatics.com/aardvark/">Aardvark extension</a> I <a href="http://www.fsavard.com/flow/2008/10/cleaning-up-web-pages-with-aardvark-firefox-extension/">posted about</a> a few months ago, it allows you to <strong>reformat a page for easier reading</strong>: grab only the main content, change the font to a format of your choice. All through a configurable bookmarklet. In contrast to Aardvark, though, Readability does all of this automatically.</p>
<p>I tried it on a few sites I visit frequently and it seems pretty solid for the most part. On the other hand, it failed on <a href="http://education.stateuniversity.com/pages/2095/Instructional-Design-PEDAGOGICAL-AGENTS-TUTORS.html">this page</a>. Creating an algorithm to find the main content is quite hard, though, which is why I thought previously a program automating the procedure would not surface. Yet I think it&#8217;s still a valuable tool: try it on a page; if it works: great, otherwise use something like Aardvark or deal with dancing bananas and ads for ever more efficient diets.</p>
 <img src="http://www.fsavard.com/flow/wp-content/plugins/feed-statistics.php?view=1&post_id=418" width="1" height="1" style="display: none;" />]]></content:encoded>
			<wfw:commentRss>http://www.fsavard.com/flow/2009/04/clean-up-webpages-for-easier-reading-with-readability/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Plyn: Yet another textfile-and-scripts based ToDo system</title>
		<link>http://www.fsavard.com/flow/2009/03/plyn-yet-another-textfile-and-scripts-based-todo-system/</link>
		<comments>http://www.fsavard.com/flow/2009/03/plyn-yet-another-textfile-and-scripts-based-todo-system/#comments</comments>
		<pubDate>Sat, 14 Mar 2009 20:44:24 +0000</pubDate>
		<dc:creator>Francois</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[my code]]></category>
		<category><![CDATA[pim]]></category>
		<category><![CDATA[pkm]]></category>
		<category><![CDATA[programming]]></category>

		<guid isPermaLink="false">http://www.fsavard.com/flow/?p=405</guid>
		<description><![CDATA[<p><strong>Warning</strong>: this post is</p>
<ol>
<li>out of the normal scope of this blog (it's about personal _information_ management, not personal _knowledge_ management).</li>
<li><strong>mostly for geeks</strong>/programmers who will never be fully satisfied by any planning system, ever.</li>
</ol>
<p>Over the years I've tried different ways of handling my<strong> ToDo, planning and work logging</strong>. This is my Xth iteration.</p>
]]></description>
				<content:encoded><![CDATA[<p><strong>Warning</strong>: this post is mostly for geeks</strong>/programmers who will never be fully satisfied by any planning system, ever.</p>
<p>Over the years I&#8217;ve tried different ways of handling my<strong> ToDo, planning and work logging</strong>. This is my Xth iteration. I wonder if anyone but a programmer could use this, but hey, programmers are a non negligible fraction of society (which I happen to be part of)!</p>
<p>I&#8217;ve long wanted to create a program which would do <strong>precisely what I want in terms of planning</strong>, but was always put off by the &#8220;*knocks head on wall* the GUI is so long to code!&#8221; aspect. Well to hell with the GUI!</p>
<p><span id="more-405"></span></p>
<p>Err, sooo&#8230; <strong>Plyn</strong> (ie. this system) is inspired by <a href="http://ginatrapani.github.com/todo.txt-cli/">the todo.txt scripts of Gina Trapani</a> (LifeHacker author). Basically it allows you to have a very simple yet powerful todo.txt file, and the file is meant to be read directly (in contrast to other programs which use databases only the program can read). The difference is that my version:</p>
<ol>
<li>is written in <strong>Python</strong> (in contrast to Bash for Gina&#8217;s todo.txt)</li>
<li><strong>allows for hierarchy, empty lines, comment lines</strong>, etc. in the file, so the <strong>file can really be structured and read by itself</strong>, and a good deal of everyday tasks can be done without ever using the scripts</li>
<li>includes a <strong>work log aspect</strong>, ie. you can record how much time you spent on tasks to keep stats.</li>
<li>includes <strong>time estimates</strong>, but for the moment it&#8217;s not very developed.</li>
</ol>
<p>So I&#8217;d say it departs from the need to be simple, to be expandable and support other dimensions of planning&amp;logging.</p>
<p><strong>Google Code link for the project &amp; code: <a href="http://plyn.googlecode.com">http://plyn.googlecode.com</a></strong></p>
<p>The todo.txt format is pretty simple. Here&#8217;s an example of content:</p>
<pre>12 Elephant in refrigerator project ||| Yeah, I shouldn't try myself at humor.
	# Open refrigerator door
	# Put elephant in refrigerator
	# Close refrigerator door

	-- This line is just a comment</pre>
<p>A few observations:</p>
<ul>
<li>You see a <strong>task may be nested</strong> in another one (which you can see as a project), simply using tabs.</li>
<li>Each line begins either with an ID (number) or with #. The # is replaced by a proper ID by cleanchanges.py (more on this later).</li>
<li>The ID is followed by a title, then |||, which indicates the start of parameters/comments.</li>
<li>You can <strong>have blank lines, and comments lines (starting with &#8211;)</strong>.</li>
</ul>
<p>After the &#8216;|||&#8217; characters, you can place different <strong>parameters</strong>. In more detail, the format of a line is:</p>
<p>(INDENT) ID TITLE ||| {PRIORITY} &lt;MINUTES_DONE/MINUTES_TODO&gt; [START_DATETIME-ENDDATE_TIME] COMMENTS</p>
<p>As you can see, many more options may be specified (see the &#8220;format.txt&#8221; file for detailed information about each of these parameters), and of course this can be expanded (it all relies on a huge regex). But everything following ||| is optional.</p>
<p>So you can edit the todo.txt file manually, but there are, of course, <strong>helper scripts to automate </strong>certain tasks. The one you&#8217;d use the most is <strong>today.py</strong>. It gives you a list of all high-priority tasks, late/coming up tasks, and tasks awaiting feedback (&#8220;+feedback&#8221; tag in title). By editing the script you could add whatever other list you need.</p>
<p>You can also, of course, <strong>filter tasks by text using grep</strong>. So you could have <strong>tags</strong> or <strong>contexts</strong>, for example, if you&#8217;re into GTD.</p>
<p>The <strong>cleanchanges.py</strong> script will replace the # at the beginning of the line by an ID which can then be used to refer to the ToDo item in other scripts. cleanchanges.py will also transform dates, so you can write:</p>
<pre>-- Today is 2009/03/14
# Clean refrigerator ||| [-+15]</pre>
<p>and the item will be changed into</p>
<pre>15 Clean refrigerator ||| [-2009/03/29]</pre>
<p>ie. the date can be specified as the number of days in the future, which saves finger mana.</p>
<p>The work log is also simple. To say you&#8217;ve just spent the last 3 hours cleaning the refrigerator, you would do:</p>
<pre>./log.py 15 180 "Some comment to add to the log"</pre>
<p>(where 15 is the task ID and 180 is 3 hours expressed in minutes). This will add a line to the log.txt file, and will change the MINUTES_DONE field of the item in todo.txt.</p>
<p>Scripts are meant to be called from a command line you keep open somewhere in the scripts directory, so you can use autocompletion. Path for todo.txt and other files are configured in cfg.py.</p>
<p>And, of course, the whole thing can be extended as you please. My ultimate goal is to have a script with which I can truly estimate the free time I have, ie. to determine if I can engage in a new task or not.</p>
<p>If anyone ever uses this, be sure to let me know! I&#8217;m especially interested in hearing of other must-script-the-procrastination-away coders who expand this thing in whichever direction their urges take them.</p>
 <img src="http://www.fsavard.com/flow/wp-content/plugins/feed-statistics.php?view=1&post_id=405" width="1" height="1" style="display: none;" />]]></content:encoded>
			<wfw:commentRss>http://www.fsavard.com/flow/2009/03/plyn-yet-another-textfile-and-scripts-based-todo-system/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
