Title photo
frugal technology, simple living and guerrilla large-appliance repair

Regular blog here, 'microblog' there

Many of my traditional blog post live on this site, but a great majority of my social-style posts can be found on my much-busier microbloging site at updates.passthejoe.net. It's busier because my BlogPoster "microblogging" script generates short, Twitter-style posts from the Linux or Windows (or anywhere you can run Ruby with too many Gems) command line, uploads them to the web server and send them out on my Twitter and Mastodon feeds.

I used to post to this blog via scripts and Unix/Linux utilities (curl and Unison) that helped me mirror the files locally and on the server. Since this site recently moved hosts, none of that is set up. I'm just using SFTP and SSH to write posts and manage the site.

Disqus comments are not live just yet because I'm not sure about what I'm going to do for the domain on this site. I'll probably restore the old domain at first just to have some continuity, but for now I like using the "free" domain from this site's new host, NearlyFreeSpeech.net.

Fri, 10 Jul 2015

Using dlvr.it to split my regular and 'social' posts out of Ode

I've been playing with the idea of using Ode as both a traditional blogging system as well as a social-media platform generating exactly the kinds of posts that I normally would originate on sites like Twitter.

With the help of dlvr.it, this is entirely possible not just with Ode but pretty much any blogging platform.

The key to this concept is that my social-media updates should originate on my system, where they will continue to live. They are mine. Twitter will have a copy, but I will have the "original."

And now I can tell you how easy it is to do this. And it doesn't just work for Ode but can be done on any blogging platform (including WordPress) that allows you to post to categories (or directories or folders) and tap into RSS for that specific category (or directory or folder).

For some time now, I have been using the dlvr.it service to propagate updates from this blog to social-media sites like Twitter and Facebook. I thought about splitting the duties between dlvr.it and ifttt, using one service for my "normal" Twitter posts that promote my traditional blog entries, the other for the social-media updates.

The key to this split is how and what is sent to the social-media service. A traditional blog post is pushed to a social-media site as a title and link back to the original post. But for a social-media post originated on a blog, it's better to push the body of the entry with any included links and NOT the title and a link back to the post itself.

Are you still with me?

  • Regular post = Title + link back
  • Social post = body of entry with included links, hashtags, etc.

At this point I'm sticking with dlvr.it for both kinds of posts. Dlvr.it can do it and is more flexible in the ways it accomplishes these tasks.

So how did I do it?

I created a directory called updates in my Ode system to contain the shorter social-media posts. The same thing could be accomplished in a traditional WordPress-type system by creating a dedicated Category -- call it updates if you wish.

To split traditional blog posts and social-media posts going out of the blog, I now have two RSS feeds going into dlvr.it:

  • The first is my "general" feed. To avoid double-posts, I used dlvr.it's "exclude" function on my main feed, excluding everything with URLs that include the path /blog/updates/. With this exclusion, dlvr.it should only post non-social entries in the traditional way, which is with title and link.

  • The second feed out of my Ode blog, now added to dlvr.it, contains just the posts under /blog/updates/. (On my site that feed can be found at http://stevenrosenberg.net/blog/updates/index.rss2.) Remember, you can probably get a feed for a single category/directory out of your blogging system, be it WordPress or something else.

In the case of the /blog/updates/ feed, I am taking advantage of the flexibility in dlvr.it, which I configured to post the text body and not the title to Twitter. I also configured dlvr.it to post any full URLs without shortening. Sometimes a URL is part of the message, and having it look shortened can hurt the context. (Note: Twitter basically shortens EVERY URL it gets using its t.co service, but in most cases your URL will read like it hasn't been shortened and not lose any context it may be carrying in your social-media entry.)

I also configured dlvr.it NOT to include a link back to the blog entry. Since the purpose of this project is to post to Twitter out of the blog, If I want a link back, I can put it in. This way I have more "space" for the other links I want to share via Twitter.

Most of this can be done just as easily with ifttt. You can choose to post the title, post body and link in any combination. What you can't do with IFTTT is send a link that doesn't look shortened. Instead of a "pure" link that doesn't look shortened but really is, you get an ifttt link that's further shortened by t.co and loses all context in your social-media post. That "feature" tipped dlvr.it over the top as the platform I'm using to post both the normal and social entries.

(Remember, the links in the Twitter posts out of dlvr.it look unshortened, but every link in Twitter gets a t.co redirect, so this is just for the sake of appearances and context.)

Long story short, it works, and you can see the social media posts both on my blog and on Twitter.

I rarely post "original" tweets that don't link at least somewhere. Instead I share article links all the time and retweet even more often, but I just don't feel right typing even a few characters into the Twitter window when I could be writing that content, however short, and keeping it for myself.

Update on Dec. 21, 2015: Since using this setup, I definitely post more to Twitter and feel better about doing it.

Users of Ode should know that I'm using the EditEdit GUI in the browser to do many of these quick, social-media-targeted posts. Maybe the only problem is that it's hard to know when you're going over 140 characters. When I do get close, I dump the contents of the entry into a text editor (Geany works well for this and many other purposes) I might work on a hack for that.

I still create some of these social-media entries with my normal workflow, which is:

  • Use Linux file manager (I use Thunar) to create a file in my local mirror of the server's Ode filesystem

  • Open the file and write the post with the Gedit text editor (using my Indexette date script as a Snippet to insert a date stamp)

  • Run a local script that syncs local files with server via Unison, rebuilds the index for Indexette and builds and uploads a new static archive page

There are two problems with this setup.

First of all, photos that appear in your blog posts via the normal HTML img tag will not appear as photos in Twitter. This is normal behavior in terms of how web pages are normally shared on Twitter.

Update: Images DO appear when using dlvr.it to shift the body of these blog entries to Twitter. This is a configurable option (Thanks @robreed) in dlvr.it, with the default being to include the images.

Second, the free tier of dlvr.it doesn't guarantee that it will post all that often. Response times vary. But ifttt.com seems to post every 10 minutes, which could make that service more attractive. I'm not so hung up on the immediacy of these posts. Having them originate and live locally is way more important to me.

Update: This is true. With dlvr.it, a post can happen quickly, or take awhile. This lack of timeliness doesn't bother me too much, but a self-hosted tool that posts instantly would take care of this problem.

Where do I go from here? I think the way to go here is to bypass services like dlvr.it and ifttt and use a local application to feed blog data to Twitter via its API. Twitter has a console app called twurl that facilitates this, and there is an independent console app called t, written in Ruby, for this same purpose.

My thoughts at the moment: Write some kind of wrapper for twurl or t that takes blog RSS, creates the appropriate data (including any images in the post) and pushes it to Twitter either on demand, or on a regular basis. This could run on the client, or a server.

One of the problems that needs to be solved is keeping track of what has been shifted to Twitter so there are no double posts. This could be done with a "this was posted" list, or maybe via timestamps.

Further thoughts: (this on Nov. 18, 2015) I believe in originating social posts on my own systems. I'm thinking about developing both an Android app and Google Chrome Extension to make this kind of social sharing easier.

Dec. 21, 2015: Five months later, this has been working remarkably well.

I acknowledge that while I do have a sizable archive of my own social-media posts on this blog, any interactivity with those posts that happens on Twitter or Facebook stays on those sites. This isn't a substitute for an Identi.ca-like service that functions like a stand-alone social-media service. It's just a way to preserve the thinking and writing that goes into social-media posts that very probably help the social-media site (Twitter, Facebook) earn revenue more than they help me promote myself or my blog entries.

So the bottom line is that I want the "reach" of social media, even though it's not much of a reach given that I have a few followers short of 1,000, but I want the "record" of those posts to begin and continue living on a site that I control. I've now got that.