Scrivener Review

Scrivener

Scrivener is a powerful content-generation tool for writers that allows you to concentrate on composing and structuring long and difficult documents. While it gives you complete control of the formatting, its focus is on helping you get to the end of that awkward first draft.”

Scrivener costs $40 from http://www.literatureandlatte.com/scrivener.php

I have spent the past few days checking out a program called “Scrivener”. It is not really something I have ever thought that would be useful to me. I have been aware of it for a long time having seen it mentioned in relation to NanoWriMo and numerous of the scifi/fantasy podcasts that I listen to.

I do not write fiction, I do not write anything more than web content and the occasional report. I never even considered that this would be a useful tool for me. I always have been a fan of Online applications. For my blog posts I’d fill out WordPress with numerous plugins and have 101 tabs open for research. For Reports I’d make use of Google Docs and once again have 101 tabs open in Chrome. The problem here is the transient nature of that research and the excessive memory usage of 20+ tabs within Chrome. I continually find myself pruning tabs based upon the value of what they contain.

  • Corkboard – This is where the Index Card feature really shines. You have a board with each item “pinned” to the cork board with the ability to drag and drop them into whatever order you wish.
  • Outliner – The Outline mode is more like a directory structure. This quickly allows you to see the order in which the items are and you can easily see the status of each item.
  • Scrivenings (editor)- This mode displays the contents of all the items one after another. Much like you would in a standard Editor.
  • Integration between the corkboard, outliner and editor – All three of the above features work seamlessly together. If you change the order of the cards on the cork board you will see that change reflected in the editor instantly.
  • Text Editing – The text editing is almost a WYSIWYG editor but in combination with the Compile feature it allows for you to change the output styling. This has a lot more in common with HTML/CSS than a traditional word processor.
  • Tools for Writing Non-Fiction – Numerous options for importing of research and exporting in non-fiction formats.
  • Scriptwriting – Export to numerous recognised formats for scripts.
  • Snapshots – As a coder I would call these revisions or maybe rollbacks. Save the state of a project at specific states.
  • Full Screen—Evolved – Much like numerous applications out there for distraction free writing. Full page the item you are working on with nothing else on screen to distract you.
  • Collections – Collections function in a very similar way to Labels within Gmail. You can add particular items to a collection whilst keeping it in the main Binder. You can also create “smart collections” in a very similar way to filters/labels in Gmail.
  • Automatic backups – This has already save me several hours worth of work in the mere three days I’ve been using Scrivener.
  • Keywords – Not exactly what I expected from the point of view of creating content for the web. Much closer to Tags. These are for tracking bits of information within an item. For example what scenes a particular character appears in.

I really love the Modular approach that Scrivener takes to writing and research. A real nod towards index cards in real life it allows for you to import huge amounts of information which can be almost infinitely cut up into smaller parts and reorder into whichever way works best.

For example to write this Blog post which is mainly a test run for making use of Scrivener in the future. I started with finding another Blog post about good structures for posts. That post found it’s way into my research directory within Scrivener. I then dissected that post to create some basic templates for different style posts. From there it’s just a matter of filling out the different sections. I have different “cards” within the review folder for Overview, The Good (this section), The Bad and Overview.

Another example of why I am loving this program. On another project I am putting together a Wiki. I initially started just using the editor within Media Wiki making use of in-site links to structure the site. I very quickly discovered as I researched more and more that the page structure I had started with was not going to be especially efficient. Added to that due to the insane amount of information I was trying to compile I was killing Chrome with the number of tabs I was using. That was the deciding factor in my decision to try Scrivener. As I started importing information I could very quickly work out the best structure for how to display the info within Media Wiki.

Both the above projects show for me why Scrivener is such a god send. My usual approach to writing starts with an idea, which I then try writing about from start to finish. Any research is done on the fly and is very “volatile”.

Scrivener provides a structured methodology for the distillation of ideas and research to finished content.

From my initial experiments into Scrivener I am finding a few issues. The main issue is lack of plug ins. With the addition of the ability to add plug ins I am sure that very quickly you would find a that plugins would be developed for most things I have issues with.

I would dearly love for the ability from Scrivener to export to a WordPress blog. On the WordPress side they are covered with the XMLRPC import. However Scriveners Compile is somewhat lacking in that respect. It would also be awesome to see Export to Media Wiki.

Other features I would like to see:

  • Web Browsing – There are numerous context menus for “Look up on Google..” and similar functions but these all open in an external browser.
  • Thesaurus and Grammar checking.
  • Text Spinning – Bit of a grey-hat article marketing thing. It would be awesome to be able to make use of Spintax and be able to compile different versions of the same text.

If you intend to write anything longer than a diary style blog post I would highly (and un-affiliated-ly) recommend checking Scrivener out. They offer a 30 non-consecutive day trial. However after 3 days I’ve pretty much made up my mind that I don’t just want but actually NEED this program.

http://www.literatureandlatte.com/scrivener.php

 

Swinging Thrift Shop

Not even sure I recognise what this is a remix of but love it none the less.

How to Schedule Tweets for Twitter using Google Spreadsheets.

Twitter Application

oauth_applicationA little while back I spent a considerable amount of time trying to find the best way to get a list of pre-written tweets and have them published at set times during the day. For example you could recycle the content of your blog and revitalise the traffic for older posts. Or you could have a list of your favourite bookmarks and have them add value to your Twitter feed. There are solutions out there for this very purpose but I have yet to find one for free. However with a bit of fiddling with code it’s possible to do this for free using nothing more than a Google Spreadsheet.

Stage 1

Make a new App in Twitter. This is probably the trickiest bit. You need to set up a new application for your spreadsheet and this process is more than just authorising a pre-built application to make use of your account.

First you need to goto https://dev.twitter.com/apps/new (sign in with your twitter login if necessary).

Now fill out the details. Name and description can really be anything you wish. For the Website I’d put in the root of your own website e.g. for me this was timothycoxon.co.uk. Next we have the Callback URL. For this you need to add a specific URL so that after the Google script asks Twitter for authentication Twitter knows to send you back to the correct page on Google, So for Callback URL add “https://spreadsheets.google.com/macros”

After this section you will need to read and accept the Terms of Service and then fill out the Captcha code. Finally click “Create your Twitter Application”.

If you have filled everything out correctly you should now be on the Dashboard for your new Application. As a new application you will have a Read Only application and obviously if you are looking to have the spreadsheet post tweets then you are going to need to change your application to Read and Write. To do this then click on the Settings tab near the top of the page. Scroll down to the “Application Type” section and switch the radio button from “Read Only” to “Read and Write”.

Next you need to grab your secret keys. Both Consumer Key and Consumer Secret. These can be found on either the Details Tab or the OAuth Tools Tab from your Twitter Application dashboard. They are rather long random alphanumeric strings. Once you have these this is all you need from Twitter. The Keys you now have are needed in stage 3

Stage 2

Make a new spreadsheet.

Personally I have 4 columns. Column 1 is for the tweet itself. Column 2 is “Last Tweeted” this is where I have the script put the last date that the script ran for a particular row. Column 3 is “Count” this is where the script will keep track of how many times a particular row has been tweeted. Column 4, I use as a helper column and use “=len(a2)” so I can have a character count for the first column, remember that tweets should be 140 characters or less.

(I would suggest adding a couple tweets into the first column for testing in stage 3/4.)

Stage 3

Now we finally add the Google Apps Script to the Spreadsheet to make the magic happen. From the Google Spreadsheet goto the Tools section on the menubar and select “Script Editor”. On the next page select “Create New Project” and from the next screen click “Blank Project”.

Select all the script below and paste that into the editor.

function authorize() {

var oAuthConfig = UrlFetchApp.addOAuthService("twitter");
oAuthConfig.setAccessTokenUrl("http://api.twitter.com/oauth/access_token");
oAuthConfig.setRequestTokenUrl("http://api.twitter.com/oauth/request_token");
oAuthConfig.setAuthorizationUrl("http://api.twitter.com/oauth/authorize");
oAuthConfig.setConsumerKey("**************************");
oAuthConfig.setConsumerSecret("************************");
  
  var requestData = {
    "method": "GET",
    "oAuthServiceName": "twitter",
    "oAuthUseToken": "always"
  };
  var result = UrlFetchApp.fetch(
      "https://api.twitter.com/1/statuses/mentions.json",
      requestData);
}

function postTweet(tweet) {
// Authorize to Twitter
    authorize();
// Tweet must be URI encoded in order to make it to Twitter safely
    var encodedTweet = encodeURIComponent(tweet);
    
    var requestData = {
// Twitter API requires us to send an HTTP POST request
      "method": "POST",
// This should be the name of the service we configure in authorize()
      "oAuthServiceName": "twitter",
// Always send an OAuth token along with this API request
      "oAuthUseToken": "always"
    };
    try {
// Actually make the request that posts a tweet!
      var result = UrlFetchApp.fetch(
          "https://api.twitter.com/1/statuses/update.json?status=" + encodedTweet,
          requestData);
    } catch (exception) {
// An error occurred!  Log it, so that it’s visible in the script editor’s log
      Logger.log(exception);
    }
}

function getTweet() {
  var sheet = SpreadsheetApp.getActiveSheet();
  var dataRange = sheet.getDataRange().getValues();
  var postNo =   Math.ceil(Math.random()*(dataRange.length-1));
  Logger.log("random numer:" + postNo);
  Logger.log(new Date());
  var tweet = dataRange[postNo][0];
  Logger.log("tweeting:" + tweet);
  postTweet(tweet);
  sheet.setActiveCell("B"+(postNo+1));
  sheet.getActiveRange().setValue(new Date());
  sheet.setActiveCell("C"+(postNo+1));
  var no = sheet.getActiveRange().getValue();
  sheet.getActiveRange().setValue(++no);
}
									

Now we make use of the Consumer Key and Consumer Secret from Stage 2. On lines 7 and 8 replace the **** with the details and save your script.

Finally for this section you need to make sure that this script is authorised by Twitter. Click the Play icon on the toolbar to run your script, this will try post a random row to Twitter to which Twitter will ask you for authentication. It’s important to run the script manually first so that you can set the authorisation. When the script runs later via triggers it will need to already have the authentication.

Stage 4

Finally the automation part. On the Script Editor Window. Goto the Resources section on the Menubar and select “Current project’s triggers..”. This will bring up a fairly simple interface for adding time based triggers for when to run your script. In the first column switch the pulldown from “authorize” to “getTweet”, Next switch “From Spreadsheet” to “Time-Driven”, Finally Select when you want this script to run on your spreadsheet and tweet to twitter.

Personally I have three triggers running at 9am, 12am and 4pm to hit good times for people in the UK.

 

Finally if anyone has any other tips or tricks along these lines please leave a comment as I am always looking for new and interesting things like this.

My top 10 Android Apps.

android icon

I love my little Android. It’s not the latest or greatest of phones but it’s small and has a hardware keyboard. It doesn’t have much by way of internal memory either so I have to think long and hard about what apps I should allow to take up space on it.

  • Speed 3d FX – Simple wireframe Wipeout style game. My goto game for any time I am bored. It has been a contiunal feature on my phone since I moved to Android.
    • Download (currently unavailable but I mailed them to find out why.)
  • Sanity –  A new app which has very quickly attained essential status on my phone. It has numerous features but the main ones I make use of are the text to speech caller ID and the timeout for silent mode, no more forgeting I silenced my droid and missing calls or texts.
  • Google Music – My first choice in music apps and currently the location of most of my music collection.
  • SoundCloud – Close Second for music apps. This is where I get most my new music from. Anything I love on Soundcloud will get Downloaded and added to gMusic.
  • Google+ – My preferred social network. Brilliant Network with an equally brilliant App.
  • Push Over ( IFTTT ) – Essential App to bridge the gap from automating your internet via IFTTT to getting that on your mobile device.
  • SMS Backup+ –  Another long term resident on my droid. It lurks in the background and backsup my sms and call log to my gmail account.
  • Ingress – The only other ‘Game’ I keep on my phone. Still waiting for better weather and more portals in my area but this in my humble opinion is the future of gaming.
  • Goggles - Love the versititly of this app. Predominately I use this for reading QR codes but I have used it all sorts such as translating Polish food labels through to research of odd items found in charity shops.
  • Gmail – Has to be said I had a hard time deciding between this and Drive, but in terms of usage the Gmail app is probably my most used app and I am guessing I don’t really need to explain why.

 

Been taking a second look at Empire Avenue..

Empire Avenue

My ‘signed up right at the begining and got an awesome ticker name’ Empire Avenue account.

http://www.empireavenue.com/TCOX

 

RKGM7PJY42QX