Tweet This Post

I've been using a list-making app called Paperless. Although I'm a big supporter of apps that use plain text files, Paperless stores its lists on Dropbox in XML. No biggie. I've already written scripts to import a list into Paperless and export a list from Paperless.

The developer includes a stylesheet in the XML files, so that if you open one up in the browser, it looks readable. All you have to do is open an XML file in your /Paperless Dropbox folder in a web browser. Unfortunately for me, I am at an office computer all day, and I do not have my Dropbox files sitting in my hard drive. So to view those XML files I would have to download them from Dropbox to my work computer hard drive and then open them in the browser.

To overcome this handicap, I have written a tool that will allow you to view any number of your Paperless lists online. All you have to do is make the lists you want to view shareable, and enter these URLs into a form. Shared Dropbox URLs are not easily discoverable, and if you really don't want someone to accidentally come upon one of your XML files, then don't make the URL public.

The script I developed generates each of your lists in an HTML table. The URLs are not uploaded to any server. The script just reads your XML files locally, so you can feel secure that the view of your lists that you see in the browser is not viewable by anyone else online. You can even just download the html file to your hard drive and use it locally (that is, open it from the hard drive into your browser).

To see how it works, visit the page, enter the following four Dropbox URLs into the input field, and then hit Publish. These are the four lists that come pre-installed when you download Paperless to your iOS device.

https://www.dropbox.com/s/1c3j4u1y7ajcwss/Today.xml,https://www.dropbox.com/s/9l46i1iojr6nc3t/Story%20Outline.xml,https://www.dropbox.com/s/ptj4f95md4fkkpd/Someday.xml,https://www.dropbox.com/s/fbp9iv7shwy5t0f/Groceries.xml

You should see four lists generated below the input form.

If you want to view your own lists, just get the shared Dropbox URL for each, and enter them as a comma-separated list.

This is version 1.0, and I will likely work on styling and generating more of a grid than having the lists stacked on top of each other.

01/31/14; 01:10:03 PM

Tweet This Post

I often forget today's date. This tiddler inserts an empty Google Calendar into the sidebar of my wiki so that I can quickly glance at it.

 

 

Just create a new tiddler, call it "Calendar" (or whatever you want) and paste this embed code into the body of your tiddler:

<iframe src="https://www.google.com/calendar/embed?src=qqndj42ted2fn9ph0v6bc0ij34%40group.calendar.google.com&ctz=America/New_York" style="border: 0" width="800" height="600" frameborder="0" scrolling="no"></iframe>

Then -- and this is the important part -- add or create this tag: $:/tags/SideBar. Then save the tiddler and you ought to see a Calendar tab in your sidebar.

You can of course use any of your current Google Calendars -- just go to the Calendar Details tab, scroll down to Embed This Calendar, and grab the embed code.

 

01/29/14; 11:47:20 AM

Tweet This Post

Inspired by Federico Viticci's Launch Center Pro action to add a photo as a reminder to Fantastical 2, I've written the following to do the same with Due:

launchpro-dropbox://x-callback-url/addlastphoto?getlink=1&x-success=due%3A%2F%2F%2Fadd%3Ftitle%3D{{[prompt]}}%2520%5Bclipboard%5D

If you're on your iOS device, you can tap on this link to install it.

This action uses /addlastphoto but there are more recent options like /addphoto?attach=photo:library which will let you choose an image from your photo library. All the options are listed in LCP's 2.1 Release Notes.

The encoding is confusing, but Viticci figured it out. When in doubt, copy. The key, really, is that the clipboard prompt has to be manually encoded or else LCP chooses what was originally on the clipboard before the Dropbox action.

Here is the x-success parameter URL-decoded:

due:///add?title={{[prompt]}}%20[clipboard]

When encoded, the URL-encoded [prompt] -- signified by the {{ }} -- should not be URL-encoded again.

01/29/14; 09:59:58 AM

Tweet This Post

I'm a frequent user of both Fargo (an outliner) and TiddlyWiki (a one-page wiki). As an amateur javascript coder, I've written two bookmarklets that let me grab the title, link, and selected text from a page and format them in either OPML or WikiText.

Let's say I want a bookmark and note from the Fargo docs:

 

 

I've selected the text, "Fargo is a simple idea outliner, notepad, todo list, project organizer."

Wiki

Now I want to put this info in my wiki.

I add the following in my browser's bookmark manager, and title it "wiki"

javascript:window.alert('%5B%5B'+document.title+'%7C'+location.href+'%5D%5D\n\n> '+window.getSelection());

When I click on the bookmarklet, I get the following alert:

 

 

If I copy that text and paste it into a Tiddler, it looks like this:

 

 

Fargo (OPML)

If I want to put that info into Fargo, it's a bit more complicated.

First I add the following in my bookmark manager and title it "opml".

Then I add the following to my menubar.opml file:

add opml in dialog box

     dialog.ask ("paste raw opml here", "", "", function (data) {

          op.insertOpml (data, down);

          });

Visit the Fargo scripting page in the docs to learn how to install this script, or watch this video.

I click on the bookmarklet and see the following alert:

 

 

Then, in the outline into which I want to insert my notes, I choose the "add opml in dialog box" script. A dialog box pops up and I paste the contents from the previous alert:

 

 

The script will insert some new OPML into my outline:

 

01/24/14; 01:15:20 PM

Tweet This Post

I have become a regular user of TiddlyWiki and have become so accustomed to using Font Awesome icons in Fargo that I wanted to incorporate the icons into my wikis as well.

After some fiddling around, I finally found out how to do it. I'm going to start with "The Hard Way" in case you want to follow the steps yourself, and then follow with "The Easy Way" in case you want to just start with an "empty" TiddlyWiki html file that has the Font Awesome stylesheet pre-installed.

The Hard Way

Please read the Addendum at the end of this post before attempting "The Hard Way."

In your wiki, click on the More tab; click on System; then click on $:/boot/boot.css

Click on the edit icon (the pencil).

Copy the entire contents of this stylesheet and paste it after the default CSS. In the beginning of the code where it says @font-face, there will be a few instances of the following: url('../. Replace the .. with http://netdna.bootstrapcdn.com/font-awesome/4.0.3.

After you're done, click on the checkmark to save.

Then save your wiki by clicking on the icon that looks like . Now when you open this wiki in your browser, the Font Awesome stylesheet will "boot up." (Note that if you are working offline, the icons will not load because the stylesheet is still making calls to font files.)

The Easy Way

Click here to download an "empty" TiddlyWiki html file with Font Awesome already installed. (Or view the actual wiki here.) Note that it uses TiddlyWiki 5.0.6-beta and Font Awesome 4.0.3, so if either has upgraded since this writing, you will not have the latest version.

How to Use Font Awesome in Your Wiki

In the file referenced above, I added the following to the "Getting Started" Tiddler:

I created that header with the following code:

! <i class="fa fa-star-o"></i> Congratulations! <i class="fa fa-star-o"></i>

Visit the icons page and click on the icon you want to use -- you'll be provided with the code to use. Just copy and paste it into your Tiddler.

Addendum (2014-01-23 1:40 PM)

I just learned on the TiddlyWikiDev google group that it is not necessary to post the stylesheet contents into $:/boot/boot.css. You can create any tiddler, call it whatever you want, post the stylesheet contents, and tag it $:/tags/stylesheet. This stylesheet will also boot up when you open the wiki in the browser. (HT Eric Shulman of Tiddly Tools.) I think an advantage to this approach is that -- if you upgrade by dragging your HTML file into an empty TiddlyWiki -- you don't lose the Font Awesome stylesheet.

Tags: tiddlywiki, font awesome

01/23/14; 10:06:25 AM

Tweet This Post

Yesterday I wrote about tracking dependencies in TiddlyWiki. Today, I've written another TaskManagement-related list filter to show all open tasks that have due dates, sorted by date.

To add a due date to a Tiddler, scroll to the bottom of a draft and enter due where it says "Add a new field" and then hit the Add button.

Where it says "field value," type in a date. For sorting purposes, I like to use the format YYYY-MM-DD, so today would be 2014-01-17.

In a separate Tiddler -- I use one called To Do -- enter the following filter:

! Due 

<$list filter="[has[due]!tag[done]sort[due]]">

<$link to={{!!title}}><$view field="title"/> | <$view field="due"/></$link>

</$list>

In screenshot below, I show the output of this filter, provided that I have only one task that both has a field called "due" and is not tagged "done". In this case, the Tiddler is called "performance review" and the value of the due field is 2014-01-31. The generated anchor text is the Tiddler title and the value of the due field, separate by a pipe |. It links to the Tiddler.

When a task is complete, just add the "done" tag, and it will no longer show up in this list.

Tags: tiddlywiki

01/17/14; 11:22:30 AM

Tweet This Post

I've playing around with TiddlyWiki, a single html file run on javascript that can contain an entire wiki. You don't have to upload it to a server, it works directly in the browser. TiddlyWiki5 beta includes a script for Task Management -- I'm including the full content of that "tiddler" below:

TiddlyWiki5 can be used as a simple task management system without further customisation. The idea is that tasks be tagged `task`, with those that are completed also tagged `done`. In this way it is straightforward to generate task lists.

! Outstanding tasks

<$list filter="[!has[draft.of]tag[task]!tag[done]sort[created]]">

<$checkbox tag="done"> <$link to={{!!title}}><$view field="title"/></$link></$checkbox>

</$list>

! Completed tasks

<$list filter="[!has[draft.of]tag[task]tag[done]sort[created]]">

<$checkbox tag="done"> ~~<$link to={{!!title}}><$view field="title"/></$link>~~</$checkbox>

</$list>

That tiddler looks like this:

If you click on the checkbox, it automatically tags the tiddler for that task as done.

Tracking Dependencies

If am am waiting for someone else to complete a task before I can complete my task, it is helpful to keep track of that in the Task Management tiddler. For example, if for Task A I am waiting for Mike to do something, I'll tag Task A with waiting:Mike.

In the script above, I've included the following:

! Waiting

''Mike''

<$list filter="[tag[waiting:Mike]!tag[done]]"></$list>

The above list filter logic says, "Generate a list of tiddlers that are tagged waiting:Mike but that are NOT tagged done." Once Mike has done his part and I've completed the task and marked it as done, that tiddler will no longer be in the Waiting for Mike list.

Tags: tiddlywiki

01/16/14; 11:15:26 AM

Tweet This Post

Launch Center Pro's new list tag allows a user the ability to enter a string into an URL scheme from a list of predetermined choices. I've earlier offered an action to view one's favorite Instagram profiles. The action I'm offering in this post allows a user to choose from various preset timers in Due.

If you're on your iOS device, tap on this link to install. By default, I have White Rice|Coffee|Chicken as choices. Anywhere in between [list:Timer| and the closing ] you can put whatever you want, as long as (A) you put a pipe | between each one; (B) the string exactly corresponds with the name of a timer that you have already preset in Due.

Here is the URL scheme if you want to enter it manually:

due://x-callback-url/search?query=[list:Timer|White rice|Coffee|Chicken]&section=Timers
01/10/14; 04:00:40 PM

Tweet This Post

Use Case: I am on the NYC Subway with no cell phone service. I recall something I want to text my wife but I won't be above ground for another 30 minutes. With this action, I can type my text message into Launch Center Pro and indicate how many minutes from now I want to send the text. At that time, Due will send me a notification. I click that my "task" is done, and the app will ask me to open an URL. The URL then "magically" opens the messaging app with the body and recipient already filled in. I just have to click Send.

How to Install This Action on Your iPhone

While on your device, click on this link to install in Launch Center Pro. Here is the URL scheme if you want to add it manually:

due://x-callback-url/add?title={{launch://messaging?to=555-555-5555&body=[prompt:Message]}}&minslater=[prompt-num:Minutes]

This action uses the minslater parameter in Due and the In-App Messaging System Action in LCP.

Thanks to Phillip Gruneich and Alex Guyot for thought-provoking Due actions.

01/10/14; 12:53:29 PM

Tweet This Post

Jesse Grosjean has released the source code of TaskPaper for iOS on GitHub.

Paul Thrasher has published an online TaskPaper editor that works with the /TaskPaper folder in Dropbox. Here's the code on GitHub.

David Hilowitz has posted on GitHub some javascript to convert TaskPaper files to HTML. It works with shared Dropbox URLs.

01/08/14; 04:14:37 PM

Tweet This Post

After the announcement that development of TaskPaper for iOS is being halted, I've been looking for alternative todo apps that are based on the reading and manipulation of text files and that sync with Dropbox. I've found three so far: Listacular, TaskAgent, and Todo.txt.

Todo.txt is a little too command-line Terminal-y for me, but the other two are pretty user-friendly. Both support dragging of tasks and swiping or tapping to denote completion. Also, both share a similar "grammar" such that one can have both apps read text files from the same location in Dropbox.

What Listacular and TaskAgent Have in Common

In both apps, in the actual text files a - is used to denote an open task, and an x is used to denote a completed task. However, TaskAgent requires that the very first character in a line contains - or x. Listacular is built to support the reading of TaskPaper files, which means that it will read a line that starts with a tab as an open task that is subordinate to either a project or a higher-order task. For both apps to successfully read tasks out of the same text file, one must avoid the use of tabs, which essentially means you cannot format the text file as an outline.

Listacular has many other functions that are not supported by TaskAgent.

  • Listacular lets you start a line with a * to denote a bullet point -- TaskAgent will add a - before it, thus de-rendering that formatting in Listacular.

  • Listacular supports TaskPaper-like due dates formatted as follows: @due(2014-01-07 14:00) (which can be interpreted as, "This task is due January 7, 2014 at 2pm.") TaskAgent will insert a space after the tag and before the parens, because anything included between parens is read as a note. If I create a task in Listacular like pay mortgage @due(2014-02-01 10:00) TaskAgent will make the task pay mortgage @due and the note accompanying the task 2014-02-01 10:00. Because of the inconsistency between these two apps, TaskPaper-like due dates cannot be supported if both apps read the same text file.

    • As an aside, Listacular also uses @remind to schedule an alert notification. When the alert is acknowledged, it turns @remind into @reminded.

Strengths of TaskAgent

As of this writing, TaskAgent is the only of these two apps that supports URL schemes and x-callback-url support. However, the developer of Listacular has mentioned on Twitter that his app will soon support URL schemes. With TaskAgent, you can open or create a list, and add a task with an optional note and/or done status using an app like Launch Center Pro or Drafts.

TaskAgent has an Action menu for individual tasks. If you know the URL scheme of an app that you would like to send the task to, you can include the following blocks: [task-title][task-note][task-done]. After reading a tweet by @benwhiting, I developed the following Action, which will open an URL in the note field in Safari (requires Launch Center Pro):

launchpro://?url=[task-note]

TaskAgent also has a search function (requires In-App Purchase) that supports #tags.

Strengths of Listacular

Listacular has a "home page" that shows all due dates in priority order, combining all lists. And as I wrote above, it supports reminders and alerts, and is compatible with TaskPaper files. (Its only drawback with regard to TaskPaper due dates is that if the value does not include a time as well as a date, Listacular will remove the @due tag entirely -- so @due(2014-01-07) is unsupported.)

How to Make Them Work Together

TaskAgent creates a Dropbox folder at /Apps/TaskAgent. You can read any Dropbox folder with Listacular. I am currently having Listacular point at /Apps/TaskAgent. TaskAgent only reads text files appended with .txt, whereas Listacular will read files created in TaskPaper, such as those that are appended with .taskpaper. TaskAgent does not recognize these files, which means that it won't touch them. If there are functions of Listacular that are important to me, I can create a text file ending in .taskpaper, so that I can do things like schedule reminders and have indented tasks.

Listacular does not do anything special with parens that are not associated with a tag (like @due and other TaskPaper-like tags that support values). However, it doesn't change them. So if I create a task with a note in TaskAgent (like task="Buy veggies" and note="kale, cauliflower"), in Listacular it will just read as Buy veggies (kale, cauliflower).

In my experience so far, Listacular will remove the # if I start a task with a tag, but if I put the tag anywhere else in the task, it will leave it alone. As I wrote above, you can use TaskAgent search to pull up all tasks associated with a tag.

Here is one line in a text file which can easily be read by both apps:

- buy vinyl floor protection that comes on a roll #homeDepot (shop supplies or garage stuff)

Which One Is Better?

I don't know yet, which is why I'm using both on (mostly) the same to-do lists. I love that TaskAgent has URL scheme and Action support. Also, TaskAgent just looks nicer and is more iOS7y (for example, swipe left to right to go to the home page). I love that Listacular supports due dates and alerts and that it works (mostly) well with TaskPaper. Please comment below or hit me up on Twitter with your assessment.

01/07/14; 10:07:22 AM

Tweet This Post

Jesse Grosjean just announced that he has downsized his company and will no longer produce iOS apps. I'm upset, because I just started using TaskPaper again a few weeks ago.

Jesse recommends Listacular which supports TaskPaper format. It is another text file-based task app that syncs with Dropbox. It is much simpler than TaskPaper. There are a few additions:

  • In addition to the use of a - for checkboxes, you can prepend a task with * for a standard list bullet.

  • In addition to @due you can use @remind if you specifically want to set an alert. However, for both you need to set a time (e.g., 16:00 for 4pm) in addition to a date in YYYY-MM-DD format. For example, if I want to set an alert for 6pm today, I'd write @remind(2014-01-06 18:00).

The downside of Listacular is that it doesn't support TaskPaper's powerful search query language. You can't pull up a specific project or sort by tags. I will try it out. I would prefer to stick with TaskPaper, but I assume that as iOS development continues, it will eventually break.

01/06/14; 03:32:28 PM

Tweet This Post

I've moved back to TaskPaper for iOS to manage my todos. However, I am at an office computer all day. Although I have a license for the Mac version of TaskPaper -- which I've installed on my desktop -- I cannot use Dropbox for sync at the office. Regardless, if I want to work with my todo.taskpaper file, I have to somehow get it from Dropbox and put the text file into a desktop or web app.

Recently, I've been using TextDrop -- a browser-based Dropbox text editor -- to copy the complete text file of my todo list, and then I paste the clipboard contents into Oak Outliner, which is a browser-based outliner developed by the same team that makes TaskPaper. Oak Outliner uses local storage in the browser, it does not sync. It appears to be a place where Jesse Grosjean and his team work out their ideas for Folding Text. (Also check out Mango Markdown which is to Markdown what Oak Outliner is to outlining.)

One benefit of Oak Outliner is that it supports Markdown links. If I have a task like this in TaskPaper,

- [google](http://google.com)

it will look like

- google

in Oak Outliner.

Working with Links in TaskPaper While on iOS

I've already shared a Launch Center Pro action to open a task that contains an URL. Here is an action that will allow you to preview a link written in Markdown, replicating the functionality of Oak Outliner. Just copy the task in TaskPaper to the clipboard, tap on the LCP action TaskPaper Markdown Preview, and it will open the text in Drafts in Markdown Preview mode. (You will also need TextTool to make this action work.)

Tap on this link while in LCP to install the action.

Here is the URL scheme:

texttool://x-callback-url/transform?text=[clipboard]&method=delist&style=dash&x-success=drafts%3A%2F%2F%2Fcreate%3Ftext%3D%5B%5Boutput%5D%5D%26action%3DMarkdown%253A%2520Preview

The above action sends the clipboard contents to TextTool, which strips the tab-dash-space preceding the task. (If you don't do this, then Markdown will think you're writing code and won't translate the text into a clickable link.) Then TextTool sends the output to Drafts and performs the Markdown: Preview action.

01/02/14; 04:14:30 PM

Last built: Tue, Mar 31, 2015 at 2:05 PM

By Jeffrey Kishner, Thursday, January 2, 2014 at 4:14 PM.