I need to be able to override the automatically generated feed URL, so that people can confidently subscribe to the feed for the blog. The goal is to get the docs to settle down, so we can get into some kind of a routine.

So the URL for the feed is going to be this: http://fargo.io/blog/rss.xml

With the #opmlFeed directive I can tell the CMS to use this URL instead of the one it generates pointing into my dropbox folder.

12/29/13; 20:28PM

Choose the Settings command in the System menu at the right end of the menu bar. Click on the CMS tab. There's a new checkbox that allows you to enable the "watched" folder.

Screen shot.

In a few seconds a new folder is automatically created in your Small Picture folder called watched.

Copy an image into the folder. Wait a few seconds (as many as 11 or 12).

A dialog should appear with the URL of the image.

You can use it anywhere you would use the URL of an image. It doesn't even have to be in Fargo.

People who use the OPML Editor for content management will recognize the feature.

They don't have to be images. They could be MP3s, PDFs, whatever.

A picture of a slice of cheese cake.

12/29/13; 18:34PM
  1. Carefully follow the instructions on this page.

  2. When you set up the folder for your repo, make it a direct sub-folder of the Fargo app folder in Dropbox. This is important. It must have the same name as your repo.

  3. There's a new directive, #siteFolder, that allows you to tell Fargo where to store your files. This is how I set it up for the Kim Parker site: #siteFolder "scripting.github.io/kimParker/"

  4. When you're ready to try it out with Fargo content, render the whole site with the Render All Pages command in the File menu.

  5. Verify that the pages were rendered into the sub-folder of your github folder.

  6. In the GitHub client, click on Commit & Sync button. Screen shot.

  7. View the updates on your website.

12/27/13; 13:22PM

There are two new settings in Fargo, the default file name and file suffix.

They are initially index.html and .html, but the server system you use may require you to use different values. However for most applications you can leave them as-is.

You can access the settings dialog from the System menu in the right edge of the menu bar in Fargo.

12/16/13; 07:33AM

As part of the slow software movement, I'm taking my time with a new template I call medium because it is inspired by the template used on medium.com. There's a big picture at the top of the page, a title and a sub-head, followed by the body of the post.

The idea is that it's supposed to look good no matter what picture you put up there. And the bigger the better. And it should look good on a mobile device. And all the parameters come from the attribute hierarchy, so you can have global defaults, and override them on specific pages.

Anyway, enough hype, here's the beef...

Pointers
  • The template is in this outline.

  • This is the outline for my test site.

  • Here's an example page about Dick Van Dyke in Mary Poppins.

  • And another example -- about Bargniani, a player on the Knicks.

  • I was having so much fun I did another story about Clara Peller, the Where's The Beef lady.

  • Then Adam posted a picture on Twitter, I thought it would make an interesting page.

The text on the pages of course is purely silly. It's the container that's interesting.

12/15/13; 09:04AM

I recognized the pattern, there was spaghetti starting to envelop the CMS code.

This happens when you add special cases by adding boolean parameters to routines.

That happens because when you wrote the high level code you didn't fully understand the problem. This al ways happens. The question is did you leave yourself the room in the schedule and with regard to potential breakage to actually rebuild the code so it correctly achieves its purpose? Too often you can't go back and re-engineer it, and you live with the bad construction. Then the code is fragile its whole life, so you don't build new layers on top of it, or if you do they're either inefficient or missing obviously valuable features.

I decided to rebuild this time. The problem was confusion over how and when index files would be built. And how to link to them in the Next/Prev links.

What I realized was the code was optimized for minimizing the amount of stack building. When I got to that point in the rebuild, I added a cache, so the upper level code could be totally simple and natural. It worked!

Now the question is can I use the software for its intended purpose? I was able to do that before. Can I still do that?

12/03/13; 11:43AM

There's a lot to tell in this story, and much of it is still being written.

Basically here's the plot outline:

  • In December of 2012, I started a new project that became Fargo.

  • Fargo was patterned after the outliners I created at Living Videotext and UserLand in the 1980s and 90s. The user interface was a gesture-for-gesture clone. The reason I wanted this is because I depend on outliners, but the operating systems my outliners ran on are not as reliable platforms as they once were. Fargo runs in web browsers, and therefore on all operating systems that support the web.

  • We also developed a server component so we could use Fargo to write blog posts and documentation.

  • It worked! Fargo is a great outliner. I use it all the time. I'm using it right now to write this.

  • Then disaster struck. The programmer I was working with on the server quit. The software wasn't finished, and as I wrote at the time, it was largely a black box to me. I tried to develop with it, but it was ridiculous. It ran in a one-off server environment, and there was no debugging, and it was in a language I was far from expert in (JavaScript). Those are too many disadvantages, so I decided to release that software under the GPL, and look for another route.

  • I had an immediate problem because my blog, Scripting News, was running in Trex, and I was writing it with Fargo, and I didn't want to give that up. So I quickly wrote a Frontier tool to generate the site from Fargo.

  • Then I had an idea! Why not do what I had done in Frontier using JavaScript instead, and design it to run in the browser? I took a look at it, and tried out some ideas, and it seemed possible. A really bizarre idea, because we don't usually think of browsers as a platform for running a CMS! But why not?

  • It worked! I say that as if it just happened overnight. It didn't. It took 1.5 months of everyday work. I didn't want to do this again. I had written this code in various contexts probably a half-dozen times since 1996. I know where the pitfalls are. I know that if you do it too quickly you create a tangled mess that's impossible to evolve. Instead, I did it slowly and carefully, with a lot of testing.

Now, I want to say a few things to Fargo users, so that expectations are set correctly.

  • This is not Trex. There are two big things missing, both by design: Rules-based outline rendering and dynamic serving.

  • Instead of using outline rules for automated formatting, we use Markdown. It's not as powerful, but it's easier, and much more popular. It's like embracing JavaScript and Bootstrap and Font-Awesome. By using Markdown integrally, and it wasn't added as an afterthought, the CMS was built around Markdown, we have to solve the problems in a way that will make sense to a lot more people.

  • Dynamic serving can still be done, either using this CMS in another form of deployment, or using the GPL'd Trex. But right now, I want to fill in the pieces we need for static content, served via commodity systems like Amazon S3. I want robust sites that don't hit scaling walls, like we did with Trex. Using this method means it will be more complicated for users right now, but it shows us all, not just me, very clearly, what's needed to complete the puzzle. A piece of software that's easy to build, but that as far as I know, no one has built yet.

11/30/13; 12:05PM

Trashcan icon in arrowpad

  • Chuck Shotton noticed there's no way to delete stuff in the arrowpad interface. Now there is.

  • But be careful cause you need a keyboard to undo. Still need to figure that out.

  • Screen shot of the new feature.

An internal "virtual" keyboard

  • This change has no user interface at this time, but if it works it will get one.

  • The keyboard in Fargo is now virtualized. This means that there's a layer between the physical keyboard presented by JavaScript and the one used by the outliner. So we should be able to make this something the user can modify.

  • If it works here, I'll also add it to the Concord open source release.

  • Coders who want to see what the key definitions are, have a look in this JavaScript file.

  • Also, not all the mappings are done yet, there are keystrokes that are caught at a higher level, in the Fargo app, not in Concord. They have to be accounted for as well.

09/19/13; 09:27AM

Cmd-keystrokes for Expand and Collapse

  • An oversight, there should have been keystrokes for Expand and Collapse.

  • These keystrokes go all the way back to ThinkTank for the Apple II, circa 1981 or so. Pretty ancient stuff.

  • Cmd-comma expands and cmd-period collapses.

  • The mnemonic for this is that the symbol over the comma is < which looks a bit like expanding. And > looks like collapsing (even though the meaning of the characters is opposite).

  • As a bonus, inherited from Frontier, cmd-shift-comma toggles expand and collapse state of the bar cursor headline

Experimental feature: The Arrow Pad

  • The arrow pad is designed to make reorganizing and navigating in an outline easy on a tablet like the iPad.

  • It's not finished, there's still tweaking to be done, but I wanted to get an idea of how it works for people before going further.

  • To access the arrow pad, choose the command from the Outliner menu.

  • Screen shot below.

    • A picture named arrowPad.gif
  • There are two buttons and four arrows.

  • The leftmost button says either Navigate or Reorg.

    • If it says Navigate, the arrows move the cursor.

    • If it says Reorg, the arrows reorganize the outline.

  • The arrows move in the indicated direction, when you click them.

    • They are only enabled if movement in the indicated direction is possible. They are structural, so left moves to the parent when navigating, or moves the bar cursor outline out a level in
  • The rightmost button says either Expand or Collapse.

    • The setting depends on whether the cursor is on a headline that is expanded or collapsed, and it says what the button will do if you click on it.
  • When you're in text mode in the outline, the arrow pad automatically goes into Reorg mode.

09/09/13; 10:25AM

Pretty sure I found and fixed the problem that was causing some files to become encrypted without the user deciding to encrypt them. If you were experiencing the problem, and found it reproducible, please let me know via a comment here, whether this fix worked or not. Thanks!

09/07/13; 15:25PM

Last built: Mon, Jan 6, 2014 at 5:28 PM

By Dave Winer, Sunday, November 10, 2013 at 1:54 PM.