After you install this script, put your cursor on the title of the post you just published in your named outline, and then choose Tweet Trex from your Scripts menu. A new window will pop open including the title and URL of your post. (The smallpict.com domain is always used, but if you're using domain forwarding, the URL will redirect when the user clicks on it.)

(There should be a github embed above this line. If not, please reload this page or get the raw code here.)

07/31/13; 03:08:21 PM

I work at a desktop computer all day at an office. Because I don't have personal apps installed on it, I've found it more efficient to use Drafts to take snippets of text and do stuff with it: send a text message; save a note to Evernote; add a meeting or to-do item to Fantastical or Due, respectively.

Many months ago, I developed a PHP web app called Taskpusher that allows me to enter some text in a form and specify an Action to perform on it in Drafts. All of this info is encoded and sent to my iPhone via an iOS app called Pushover. I get a notification on my phone, swipe it, tap on the link in Pushover, and the text I entered on my desktop computer is "pushed" into another app via the Drafts Action.

An example: I can create a Messaging Action in Drafts called "Message Wife." I type the text I want to send into a form on the desktop, tell the app that the Action I want to perform is "Message Wife," and hit Send. After I tap on the link in my Pushover notification, the iPhone messaging app opens with the recipient and the text already pre-filled. All I have to do is hit Send.

Since scripting has been enabled in Fargo, I have been learning bits of javascript, and I finally figured out how to replicate the functionality of Taskpusher in Fargo, with the help of Gmail.

This script does the following:

  • I enter my "draft" into a headline in Fargo.

  • I choose Gmail to Pushover from the Scripts menu.

  • A dialog box pops up. I enter the exact wording of the Drafts Action I want performed on my text. If I just want the text imported into Drafts, I enter nothing. I then hit OK.

  • A gmail compose window opens in a new tab. The recipient is my Pushover email address, which is available on the website after I've purchased the app in the store and registered an account. The subject is "draft." The body is a specially-encoded string.

  • I hit Send (or Tab + Enter], get a notification on my iPhone, swipe it, tap on the link.

  • The Drafts Action is performed.

  • Caveat: Pushover limits messages to 512 characters, including the title. Because the draft needs to be encoded and then the string needs to be modified to be successfully transferred to the body of the email, a blank space in your draft is the equivalent of four characters. Hence, your draft cannot be very long. A dialog box will pop up if your encoded draft is too long to be successfully sent to Pushover.

Some things you can do with this script:

  • Create a headline: "Meet Matthew Saturday 2pm"

  • Enter this action in the dialog box: "Parse in Fantastical"

  • Create a headline: "9:30pm don't forget umbrella"

  • Enter this action: "Send to Due"

  • Create a headline: "IPA is a good beer."

  • Enter this action: "Save to Evernote"

  • Above come with Drafts "out of the box," but there are lots of actions you can import into Drafts here.

Add These Scripts to Your Menubar

See the Fargo Scripting blog for info on how to set up a Scripts menubar.

First, make sure to get your Pushover key (buy the app and register an account) and put it in the quotes where it says "YOUR_PUSHOVER_KEY_HERE"

I've also created a script to get the encoded character count of a headline. This does not include the character count of the Drafts Action, but you'll get an idea if your headline is already too long.

I understand all of this is very complicated, but I use this script (and the Taskpusher app) all the time. If there are any points of confusion, please leave a comment and I will fill out the blog post as necessary.

07/31/13; 11:10:04 AM

The img attribute lets you add an image URL as a value in a headline below the title of your blog post. It is set to float right, with some padding on the left and bottom, as is Dave Winer's m.o.

  • The following is included after the image tag: style="float: right; margin-left: 25px; margin-bottom: 15px;"

This script lets you choose Insert Image from the Scripts menu, after which you paste the URL of an image in a dialog box. Hit OK and the image is added. (The Small Picture image to the right was added via this script.)

If you haven't already, create a new outline called menubar. Title the first headline Scripts. (See the Fargo Scripting blog for details.) Then paste the code below into your outline and make sure that Insert Image is indented such that it is a "child" of the Scripts headline.

  • Insert Image

    • dialog.ask ("Paste the URL of your image below", "", "here!", function (name) {

    • op.attributes.setOne("img", name);

    • });

After the menu reloads, go into your named outline and try it out. Just make sure to put the cursor in the body of your blog post, not the title.

WARNING: This script does not check that the URL you enter into the dialog box is valid. It will insert whatever you enter into the src="" following the img tag. On this headline, I entered "hi" into the dialog box, and you'll see there's a broken image to the right. If you made a mistake, click on the briefcase icon in Fargo and delete the img attribute or enter the correct image URL in the value field.

07/31/13; 08:37:03 AM

Fargo is a great place to keep lists of books, movies and music that you want to "consume" -- or just things you want to learn more about -- at a later date.

These scripts allow you to quickly learn more about the text on any headline in any of your outlines. They take the text and enter it as a search query in a new window.

To get going, add these scripts to your menubar outline. (Visit scripting.smallpict.com to learn how to set up.)

  • Tastekid

    • var a = op.getLineText();

    • window.open("http://www.tastekid.com/like/" + a,"_blank");

  • Google

    • var a = op.getLineText();

    • window.open("http://www.google.com/search?q=" + a,"_blank");

  • Wikipedia

    • var a = op.getLineText();

    • window.open("http://en.wikipedia.org/wiki/" + a,"_blank");

  • Amazon

    • var a = op.getLineText();

    • window.open("http://www.amazon.com/s/field-keywords=" + a,"_blank");

Once your menubar has reloaded, just put the cursor on the headline in question, and choose the appropriate service from the menu.

I'm sure you're familiar with the last three. Tastekid provides a list of similar movies/authors/books/musicians to your search query.

Make Your Own

You can easily create new scripts to query other websites. Just figure out the query parameter and enter the preceding URL in the quotes in the script. For example, I enter "how far is sun from moon" in Wolfram Alpha, and see the following URL in the address bar:

I can see the query string follows http://www.wolframalpha.com/input/?i=. Let's see if that works:

  • Wolfram Alpha

    • var a = op.getLineText();

    • window.open("http://www.wolframalpha.com/input/?i=" + a,"_blank");

I wrote "what is the tallest building" in a headline in Fargo, chose "Wolfram Alpha" from the menu, and successfully got this page.

Please share your own search query URLs in the comments below.

07/30/13; 02:02:07 PM

By default, comments are enabled on Fargo blogs, but they are hidden (you have to click on "Show comments" to see them). If you want to selectively remove comments entirely on a particular post, or show comments on posts that are already generating a discussion, you have to add new attributes to the title headline.

To save you some time, here are some short scripts you can use. You first have to create an outline called menubar and title the top headline something like Scripts. Then paste the following below that headline, and make sure to indent them so that they are children of the Scripts headline:

  • Show Comments

    • op.attributes.setOne("flCommentsVisible", "true");
  • Remove Comments

    • op.attributes.setOne("flDisqusComments", "false");

A new menu bar will show up to the right of Docs. If you want to show comments or remove them, put your cursor on the title of your post, and click on the appropriate item in the menu.

07/30/13; 11:54:02 AM

There is a moment in Bruce Broder’s delightfully engaging documentary film Chops (2007) when T.J., a very talented young trombonist, asks famed trumpeter Wynton Marsalis the difference between the sound of church in one’s horn playing and the sound of soulfulness. Marsalis offers a great response:

O.K., this is the difference between soulfulness and church. Soulfulness is something that everybody has. Soulfulness is the feeling that when I am around you, I don’t want to leave. That’s soulfulness. You walk into somebody’s house, man you want to sit down there forever […] And that’s a part of our music, the down home, the soulful, the warm, the inviting. Sometimes church is that, sometimes it [ain't].

I watched Chops on Netflix last night -- definitely worth watching if you love jazz.

07/29/13; 03:53:29 PM

I often jot down little text notes into Drafts on my iPhone -- a book I want to read, something I need to buy, an idea for my blog. I've previously written Drafts actions that convert text into OPML that can be imported into an outline in Fargo, but now that's no longer necessary. Dave Winer just introduced a scripting language that allows a user to add their own menu of actions. It's all based on javascript, but you don't need to know this language to get stuff from your iPhone into your Fargo outline.

After you follow these steps, you'll be able to jot something down in Drafts, send it to your Fargo folder using a Dropbox Action, and then insert the text wherever you want. All you need to know is the hour you initiated the Dropbox Action.

Create the Dropbox Action

If you're on your iOS device right now, tap on this link. It will import the Dropbox Action into your version of Drafts. If you'd rather create the Action yourself, here are the parameters:

  • Name: text-fargo

  • Path: /Apps/Fargo/[[date|%a %b %d %Y]]/

  • File (predefined): [[date|%I]] <-- that's an uppercase i

  • Ext: txt

  • Write: Append

  • Template: [[draft]]

Add the "Import Text" Script to Fargo

  • decimal

  • If you haven't already, create a new outline called menubar.

  • Create a headline called Scripts.

  • On the next line, hit Tab and write Import Text.

  • Paste the following as children nodes below Import Text (i.e., make sure they're indented again):

    • var d = clock.now().toDateString();

    • dialog.ask ("Enter the hour in two digits", "", "Disregard am or pm", function (name) {

    • file.readWholeFile (d + "/" + name + ".txt", function (data) {

    • op.insert (data, down);

    • });

    • });

  • In a few moments, a new menu bar will be created next to the Docs menu.

Create a Draft and Import It into Fargo

  • decimal

  • In Drafts, create a note.

  • Tap on the text-fargo action.

  • Put your cursor on a headline in Fargo underneath of which you would like to import your text.

  • In Fargo, open the Scripts menu and click on Import Text.

  • A dialog box will pop up. Enter the two-digit hour in which you initiated the Dropbox Action.

    • If it's 2pm, enter 02 and hit OK.

    • If it's 11am, enter 11 and hit OK.

    • If it's 11pm, enter 11 and hit OK.

    • Click this wedge if you want to know why I'm using the hour.

    • I was trying to figure out the least amount of mental effort necessary to import the contents of the text file. It defeats the purpose to enter the contents of the text file as the name of the text file; I also didn't want to use a #tag because people tag their drafts differently. For example, I might put a book title in the first line of my draft, and then #book in the second line. Do I then tell Drafts to make line 2 the title of the text file? That seems too limiting because what if my draft has multiple lines? Also I didn't want to put a tag in the first line of the draft, because naturally I put my tags at the end and I didn't want to cut and paste it into the beginning just so that I could use the first line as the title of the text file. So I decided to just use the hour in which the Dropbox Action is initiated. If I'm sitting at my computer and want to get a draft into Fargo, I know what time it is. I just hit text-fargo and enter the current two-digit hour. (Military time, e.g., 14 for 2pm, is too much work for me!)

    • The only downside to this solution is the case in which I perform a Dropbox Action more than once in the same hour. I have the action set to "Append" to the text file, so I will have imported the previous text as well as the current text. In this case, I will just have to delete the previous draft from the headline.

  • Your text will be inserted into a new headline.

Acknowledgements

Special thanks to Dave Winer for help with an earlier version of this script.

And Eric Davis, whose script for writers inspired me to create a folder in Dropbox with the day's date.

07/29/13; 02:29:46 PM

I set this up on Sasstrology ages ago (i.e., the rel=author connection). I honestly believe that it's working now because I updated my photo in Google+ after years of using the same picture of myself that I've used almost everywhere.

  • It's showing up on my Fargo blog too!

07/25/13; 02:30:06 PM

Once a politician has deceived people, he gets a second chance. When he deceives them a second time on the same issue, he loses whatever public trust he might have hoped for.

07/25/13; 11:27:28 AM

Read this post for background.

  • decimal

  • In the Fargo Settings menu (where your name shows up at the far right), choose the CSS tab and enter the following:

    • .red {

    • color: red !important;

    • }

  • As you set up the Scripts menu, name your second order headline Red.

  • Enter the following as the child of the Red node:

    • op.attributes.setOne("cssTextClass","red");
07/25/13; 10:17:35 AM

Dave just recently released a new tool in which you can create a new Fargo menu with short javascript functions.

I know javascript from Adam, but I was able to create an easy script after looking at Eric's link headline script and Dave's list of "verbs." It allows me to quickly assign one of my more frequently used Font Awesome icons to a headline without having to either open the Edit Attribute dialog () or scroll through the many pages of the Choose Icon picker.

  • decimal

  • If you haven't already, create a new outline and call it menubar.

  • At the top headline, write something like Scripts. This will be the title of a new menu bar sitting to the right of Docs in Fargo.

  • Create a child node and call it Star.

  • Then create a child node for that node, and enter the following:

    • op.attributes.setOne("icon", "star-empty");
  • Refresh your browser to load the new menu.

  • In a different outline, click on a headline then choose Star from the Scripts menu.

This will work for any icon, you just need to sub out star-empty with the name for any other icon from the icon cheatsheet.

07/25/13; 09:50:45 AM

I think one can theoretically be a good mayor and "recovering from sexual compulsivity." But the lack of Anthony Weiner's integrity -- as evidenced by his consistent lies to the public (regardless of whether his denial is a "symptom" of his "disease") -- does not inspire confidence in this voter.

  • I'm not totally convinced one can apply the Addiction Model to sexually compulsive behavior, but try this thought experiment: A congressman resigns after having had some very public alcoholic "benders." He continues to have very public benders after having resigned. After he has earned his 1-year sobriety chip in AA, he runs for mayor. Would you feel comfortable voting for someone with so little sobriety under his belt?

I'm impressed by Bill de Blasio's commitment to keeping health care accessible, but his polling numbers are so far behind Weiner's and Quinn's that his success in this race seems unlikely. However, I would vote for him anyway.

I think Quinn will win the primary.

07/24/13; 11:58:51 AM

I would much rather read witty (or even catty) tweets than see photos of social gatherings that I did not attend.

07/24/13; 10:58:59 AM

This news is upsetting on two levels.

    1. Retirees who devoted their lives to jobs that they may not have otherwise taken without the promise of pensions are being screwed by the city.
    1. Hammers home the belief that there is no such thing as security. You pretty much have to do things for the Now because there are no promises for the Future. Other people may have the best of intentions, but they are just that -- intentions.

      • Don't trust institutions!
07/22/13; 12:18:47 PM

To follow up on my earlier post, I have created www.opmldirectory.com

07/17/13; 04:45:12 PM

I just checked out Hi, the new publishing platform by Craig Mod, in which a user writes a short snippet about a photo. All posts are geotagged, and a user can "extend" their narrative about the moment depicted in the photograph if she wishes. Someone can browse by location, for example: "moments in New York". I can see how a community can build pretty quickly around this platform: it's visual and it's geographic.

I wonder if Fargo gets little attention from the tech press because it's low on the "bells and whistles" quotient. Also, its sociability is nonobvious.

  • There is the Fargo Community River, a stream of RSS feeds of blogs published from Fargo. You can check out the outline from which any of these blogs is published by using the "Open by name..." menu item in Fargo. (For example, to see Dave Winer's outline for his dave.smallpict.com blog, just enter "dave" into the "Open by name..." field.) The social aspect of this is the ability to peek into someone else's Content Management System. Also, I can see when a named outline has changed (I'll see a icon next to it.)

  • Also, I know that I can open any public OPML file in Fargo (using the "Open by URL..." menu item). Here is an OPML file I found, Dave Winer's workspace for the World Outline. It was not created in Fargo, but I can still read it in Fargo.

  • Essentially, I can view other people's outlines. Although I have no experience with Dave's early World Outline project, I assume this is what he's getting at.

However, it's hard to get "viral" in this manner. You have to be pretty geeky (as I am) to think, "Oh I wonder how Eric did that on his Fargo blog, let me check out his named outline to find out!"

Ideally, lots of people would make content available in OPML. If someone were to, say, host a giant OPML file with a database of recipes, you could just "subscribe" to that in Fargo. If the author updates the file, you'll see the updates in Fargo. You don't have to go elsewhere to read recipes (just like with an RSS reader you don't need to go elsewhere to read many blogs).

  • How would the creator of "World Recipes" even publicize this OPML file? There needs to be a central repository where OPML people can post their public outlines. Not everything is going to be a smallpict.com blog.

I'm going to take a first step.

  • If you have a public outline that you want to share with the world, email me the URL for the OPML file and I'll publish it. Just include a description of what it's about. (Don't send the OPML file for smallpict blogs, though, as they're already being promoted in the river. Also, I'm not interested in OPML files of RSS feeds, e.g., your export from Google Reader.)

  • The directory lives in three places:

07/17/13; 12:19:32 PM

I popped by Google Webmaster Tools to see how far I could get with my smallpict blog.

I first tried to verify blog.jeffreykishner.com, which I'm using as my domain (using the #domain directive). I obviously couldn't upload a file to the domain, but I was able to authenticate using my Google Analytics ID, since I have a #googleAnalyticsID directive set up. That worked.

I then found out that I can submit an RSS feed as a sitemap. I entered blog.jeffreykishner.com/rss.xml and received multiple errors because all the items in the feed link to jeffrey.smallpict.com.

So I then authenticated jeffrey.smallpict.com via Google Analytics, which again worked. And I submitted jeffrey.smallpict.com/rss.xml as my sitemap, which was accepted with only one error ("Missing XML tag").

I also set up Google Authorship, as much as I loathe linking to my Google Plus profile.

Hopefully the above actions will get this blog crawled a bit more frequently.

07/15/13; 01:41:10 PM

Sometimes I am sad for weeks, or for a day or so, or a few minutes. My emotional reaction has no bearing on one's value as a human being, or even as an artist, just on the personal impact he or she has had on me.

Some artists have a distinctive voice that speaks to me on a deep level, and when they are gone I feel a heart-rending ache. Others are actors whom I admire and who have performed in works that have been a part of my life for many years, and I am grateful for their "service" in bringing the joy of immersive TV to so many fans. And others apparently are entertainers who seem like parts of a machine, even if the entertainment experience produced by that machine has elicited strong emotions within me.

That being said, it's always sad when someone dies prematurely. I often feel like his or her best work has yet to come, and it's a shame that this potential never had the chance to realize.

  • This is all to say that I feel guilty that I don't feel very sad that Cory Monteith died.
07/15/13; 12:03:55 PM

Wouldn't it be cool if Trex could take all of the isFeedItem=true items in a named outline and use them to create a sitemap xml file, which a blogger could submit to Google Webmaster tools? I've read a few accounts from Fargo bloggers who notice that Google doesn't index smallpict blogs very often.

07/15/13; 09:48:24 AM

My "rivers" stopped updating two days ago, so I figured I'd have to log back in to my Amazon EC2 instance to get it going again.

I searched for Remote Desktop clients for the iPad, and found PocketCloud. The free version works fine -- I just had to enter the address for my EC2 instance and log in. Amazing that I can access Windows Server from my iPad! I just chose the Scan Now setting in the OPML Editor (not even sure that was necessary) to get my feeds updated.

I don't quite understand why the process of updating the json files discontinued, since I never stopped my instance from running. Hope I don't have to do this very often.

07/13/13; 03:36:39 PM

Adam Curry expresses concern that his Fargo blog is not hosted on his own server. Which got me thinking: what happens if this new service I've come to love shuts down?

I know that all my data is sitting in a Dropbox folder on my computer, so I never need to worry about data portability or exporting. But now that I'm blogging to a smallpict.com subdomain (forwarding to blog.jeffreykishner.com), what would happen to my site?

It wouldn't be difficult to repost my content to WordPress.

  • Create a blog.jeffreykishner.com subdomain and upload WordPress to the root folder.

  • Set up a permalink structure: /yyyy/mm/dd/blogPostName

  • Import my named OPML file into a supporting web service to make it readable. It likely won't import all the attributes, but the content will still be there. Then I can copy the content for each post, paste into WordPress, and then just edit the permalink field and paste the value of the name attribute so that the URL is exactly same as it was on my Fargo blog. (For example, WordPress would by default turn "My First Blog Post" into "my-first-blog-post" not "myFirstBlogPost".)

  • I believe I would be all set. No htaccess file necessary, as all links would still go to the correct page. The only downside is that any cool outlining tricks (like collapsed nodes) would no longer function.

07/11/13; 02:11:37 PM

I watched this documentary about the Punch Brothers on Netflix Instant. Been a long-time fine of mandolin virtuoso Chris Thile, back to his Nickel Creek days.

I was struck by a comment from one of his bandmates, all of whom are excellent string musicians in their own right. He wants them to be perceived as a band -- not as a Chris Thile side project -- which means that they're not just playing "staggering" Chris Thile compositions (in one of the player's words) but all creating something as a unit.

Watching this film, I got the impression that Thile -- who his bandmates recognize as a musical genius -- both wants to be pulled down to earth by collaborating with excellent musicians, and is in a world of his own, in which he writes beautiful, complex arrangements that even his bandmates couldn't compose. The Punch Brothers would not exist without him, yet he desperately wants a sense of brotherhood, not just to be a singularly brilliant mandolinist who is "backed up" by instrumentalists at the top of their game.

His bandmates regularly talked about how grateful they were to be part of Punch Brothers and that they wanted to make the most of it, because they didn't know how long it would last. After all, Chris could move on to some other project that fancied him. I sensed some "security fear" -- it's difficult to make a living as a musician even if you're great at your craft -- and also a feeling that this moment -- in which five guys are at the bleeding edge of contemporary string music -- could end at any time.

The film is structured around the Punch Brothers' performance of all four movements of The Blind Leaving the Blind, which is exciting but not terribly accessible music (if you're a fan of simple bluegrass song structures). I would recommend this film if you're a fan of challenging string music and/or Chris Thile, or if you want to understand the dynamics of a growing band.

07/11/13; 09:16:30 AM

Just a story I'm working on.

Unfortunately, Font Awesome doesn't have a "broken heart" icon, and <strike> doesn't quite do it:

07/10/13; 01:12:35 PM

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

By Jeffrey Kishner, Wednesday, July 3, 2013 at 7:22 PM.