In version 1.50, coming in the next couple of days, Fargo will do a lite render of RSS descriptions.

What "lite" means

  1. It passes the text through the global glossary.

  2. It passes the text through your cmsPrefs.opml glossary, if you have one.

  3. It passes the text through the Markdown processor.

What's unprocessed

This will help the text in the feed look good in whatever RSS apps your readers are using. But it will still leave macros unprocessed, and it won't use any local glossaries. And the pagetable elements, if you reference them, will be unevaluated.

These things are difficult, but not impossible. However there are lots of other things that are higher priority.

Also, you have to watch out for glossary items that depend on the runtime environment of Fargo-generated pages. Anything that depends on Font Awesome being present, or Bootstrap Toolkit, won't work. I do that in my smiley characters.

But the cheesecake glossary entry should render fine.

A picture of a slice of cheese cake.

Sunday or Monday

I want to spend some time using the new version myself (I'm using it now) before making it part of the main release. This is tricky stuff and I want to be sure I got it right.

02/28/14; 08:35:52 PM

The only change in Fargo 1.49 was that Font Awesome 3 has been replaced with version 4.

This was not a small change, unfortunately, even though the goal was to make it appear as if it was a small change. Please watch for breakage.

While I was working in this area I made it so that the left and right arrow keys move between panels in the Icon Chooser dialog (accessible from the Outliner menu in Fargo).

I also updated the GitHub project.


Font Awesome is still very awesome.

But I wish they wouldn't rock the boat so much.

We've baked in support for this excellent toolkit deeply in Fargo. Such deeply integrated things are not easily replaced, especially when lots of small seemingly unnecessary changes are made.

02/28/14; 10:56:04 AM


As Fargo was booting up, if there was a watched outline in tabs.json, it would fail.

Frank reported that the icons wouldn't show up, but when I reproduced the problem it was even more serious -- the app itself didn't load.

The problem was introduced when I added Fargo Publisher support to Fargo. When the app is booting, appPrefs hasn't yet been set up, so when it tried to read the watched outline, it would fail. I added some defensive driving to the boot-up process to delay the read until the app was fully initialized. But there was some other initializing that wasn't happening, which would cause yet another failure.


I solved the problem by having Fargo use the default server to read watched outlines as it's starting up. Once the app is running, it uses the server that's in prefs.json.


Thanks to Frank McPherson for the excellent report.

02/27/14; 12:29:31 PM

If you want paragraph-level permalinks in your blog posts, there's a new directive, #flPgfPermaLinks.

If you set it to "true" your posts will have them, "false" to turn the feature off.

They are off by default.

If they're on, each paragraph in your blog post will have a small purple hash sign, that links to the paragraph. If a reader wants to point to a specific paragraph in the post, they can use the URL from the hash sign.

The link is formed from the first characters of the first five words in the paragraph. You can move the paragraph around on the page without breaking links. However, if you change one of the first five words in the paragraph, links to it will break.

If you want the feature on by default for your websites, you can put the directive in your cmsPrefs.opml file.


#flPgfPermaLinks "true"

02/25/14; 04:45:33 PM

For some Fargo users, the standard key mappings get in the way of the normal functioning of the browser. Now we have a way to disable individual key mappings, or add new ones. It's very geeky, so I'm calling it an experiment to see if it helps.

How to

Suppose you want to disable Fargo's mapping for Cmd-[ for Promote.

  1. In the System menu, the one at the right edge of the menu bar with your name as its title, choose the Settings command.

  2. Click on the Code panel.

  3. Enter this bit of code: concordKeystrokes ["meta-["] = "";

  4. Click OK.

  5. Reload Fargo.

  6. Press Cmd-[ on a headline with subs. If it worked, it should do nothing.

Screen shot.

Standard mappings

Here's a list of the standard key mappings in Fargo.


What meta means

On Macs, the "meta" key is Cmd. On Windows and Unix it's Control.

02/23/14; 08:18:15 PM

If you're a regular Fargo user, please subscribe to this RSS feed.

I will try to post notes about new features and ideas on this blog.

If you like to read my thoughts about movies, weather, the Knicks as well as tech, you could also subscribe to the Scripting News feed. I will also talk about Fargo there from time to time, but it's a regular blog so, you have to endure the other stuff too.

A picture of a slice of cheese cake.

02/22/14; 02:04:41 PM

If you have a named outline from Fargo 1, you should still be able to edit it and update it and have the results flow through to the web.

In fact, it would be a good idea to open those files now, have a brief look around and then do a Render All Pages from the File menu. This would cause your site to update into the new scheme.

Fargo 2 is close enough to Trex that your sites should render without too many problems. Mine certainly did. (That was one of the goals of Fargo 2's CMS, to run Trex sites.)

Test case -- Anton's blog

I hope Anton doesn't mind, but I saw his blog get updated, and saw it had problems. It's a Fargo 1 named outline, that means it uses features that were in Trex, and not all of them work in Fargo 2, and at least one of them works differently. This is accounting for the not-satisfactory look of his site.

  1. On the Differences from Trex page, we note that the #bootstrapTheme directive changed in Fargo 2. Anton's site is using the old definition. This means that when the page loads in its stylesheet it gets an error, so we're seeing the unadorned text on the page. (Update: I fixed this in Fargo, if you reload the app, and re-render the page, it should look good.)

  2. He's using a feature in menus that isn't implemented in Fargo 2 that was implemented in Trex, the ability to put the text of a page under a menu item. I agree that it's a nice feature, but it's harder to do in a static rendering CMS, so I didn't try to do it in Fargo 2. The answer is to create a top-level About page, and link to it from the menu item. You can see an example of this in the Kim Parker website source.

02/22/14; 01:52:03 PM

Here are some examples of what programmers can do with macros in Fargo 2.

Anything that appears inside <% and %> is considered a macro, and it runs when the page is rendered. The result of running the macro appears in the rendered page.

Macros are written in JavaScript.

The stuff inside the brackets is just a JavaScript expression, that can call any number of builtin verbs, any standard JavaScript functions, or make HTTP requests using the http.readUrl verb.

If you enter <%2 * 12%> you'll get 24 in the page.

Fargo has an array called snarkySlogans that can be useful for testing this feature.

<%snarkySlogans [5]%> gets you the sixth item in the array, or "You should never argue with a crazy man."

And here's a cute macro that lists all the snarky slogans:

<%s="<ol>"; for (var i=0; i < snarkySlogans.length; i++){s += "<li>" + snarkySlogans [i] + "</li>"}; s + "</ol>"%>

  1. Good for the environment.
  2. All baking done on premises.
  3. Still diggin!
  4. It's even worse than it appears.
  5. Ask not what the Internet can do for you...
  6. You should never argue with a crazy man.
  7. Welcome back my friends to the show that never ends.
  8. Greetings, citizen of Planet Earth. We are your overlords. :blush:
  9. We don't need no stinkin rock stars.
  10. This aggression will not stand.
  11. Pay no attention to the man behind the curtain.
  12. Only steal from the best.
  13. Reallll soooon now...
  14. What a long strange trip it's been.
  15. Ask not what the Internet can do for you.
  16. When in doubt, blog.
  17. Shut up and eat your vegetables.
  18. Don't slam the door on the way out.
  19. Yeah well, that's just, you know, like, your opinion, man.
  20. So, it has come to this.

Also: You can define your own macros, with parameters. (This is not a snarky slogan.)

02/21/14; 12:02:30 PM

The version number in the right margin still says 1.47 and the red BETA is still there, but -- when you go to you now get Fargo 2. Fargo 1 is archived, hopefully it will remain runnable for a long time to come. But the future is here, now -- we're all running Fargo 2.

Because it's a beta, keep an eye out for problems, and if possible back up your outlines outside of your Dropbox folder periodically to be sure you don't lose any data.

The big new feature in Fargo 2 is the CMS that's baked into the app.

There's also a companion server app called Fargo Publisher, that runs in node.js. It's open source. You can run it for yourself and for other users, and are encouraged to do so. It's still a bit unpolished and in development, but if you're an adventurous technical sort, it should be an interesting project. I know I'm finding it very interesting running my server.

I'm going to spend a couple of days reviewing the docs, making changes as needed to reflect the new status of Fargo 2. If you spot anything, just add a comment under the article.

A picture of a slice of cheese cake.

02/20/14; 10:39:25 AM

A new configuration option, allows you to specify whether you want Publisher to redirect to content stored on S3 (the default, and current behavior) or serve it directly.

To set the option on a "normal" Unix server:

export fpRedirect=false

To set the option for a Heroku app:

heroku config:set fpRedirect=false --app your-app-name

I've set the fpRedirect option false on, possibly as an experiment. However I'm pretty sure the server will be able to handle the extra work of serving the content instead of redirecting, and it makes things simpler all-around, which of course is a good thing.

What does this mean in practical terms? Here's a post on my test site, the one I used to develop the CMS. Because the redirect feature is off, the URL doesn't change after you click the link.

02/17/14; 01:24:01 PM

Last built: Thu, Jun 5, 2014 at 6:11 PM

By Dave Winer, Saturday, February 1, 2014 at 12:51 PM.