Category Archives: Tech

Detailed look at scheduling

There has been some discussion on post scheduling and it’s specifics. I wanted to outline it in a bit more detail so people who are interested can get a better understanding.

Firstly, as Nino eloquently put it, scheduled posts are written in stone. There’s currently no way to edit them in any way. These features are on the roadmap, but they don’t exist today, and it’s not clear when we’ll get to them. Fire a comment below if it’s a priority feature for you.

Secondly, posts are scheduled with the service information as it exists right now. I’ll explain this point in a bit more depth, starting with some background. Different services work differently. Facebook gives us a token to use which is supposed to be valid for 60 days. While for WordPress sites, we use your username and password to authenticate.

If you schedule a post to Facebook today, it’ll use the Facebook token we have today. If you schedule the post 90 days in the future, the token we have today should have expired by then. In practice, the token might still work, but it is supposed to fail according to Facebook.

If you schedule a post to WordPress next week, then tomorrow change your WordPress password, and then update your WordPress service on Composer, the post will fail. The old password will be saved along with the scheduled post, and there’s currently no way to change it.

The reason for this design was simplicity. It allowed us to launch the feature now rather than later. At some point we’ll update the architecture so that scheduled posts are linked to the service, and so if you update the service, it updates the scheduled posts.

For all these reasons, we recommend you only schedule posts 30 days or so into the future. In all likelihood, posts scheduled further into the future will work, but the risks of something going wrong increase the longer a scheduled post is kept in the system.

If anything is unclear, or you have any feedback, fire a comment below, send an email, or release a carrier pigeon in our direction. 🙂

Twitter and their “shortener”

tl;dr Composer just got better at posting tweets, so post full urls instead of shortening.

Twitter automatically parse out any domain name or url in a tweet and replaces it with a t.co link. If you type something like twitter.com your 11 character domain gets converted into (currently) a 22 character t.co link.

Until today, Composer wasn’t very good at understanding this. Sometimes, it would shorten your post before sending it to twitter when it wasn’t necessary. And worse, with the introduction of images, sometimes posts to twitter would fail. If you add an image, you lose (currently) 23 characters from your tweet because twitter posts a link to the image (22) plus a space (1).

So, from today, we’ve built custom handlers just for twitter. We parse out any domain or url, replace it with (currently) 23 characters, and then check if your tweet is <140.

Shortlinking

This means, if you post a massive url to twitter, it gets auto shortened on twitter’s side, and now Composer is smart enough to figure that out. So if you’re posting links to Facebook, Twitter and WordPress, post the full url, no need to use a shortener.

Two caveats, we’re a little conservative because twitter’s t.co links are 22 characters for http links and 23 for https links. So we assume all links are 23 just to be on the safe side. Also, we parse out all domains (like composer.io or github.io) which Twitter doesn’t. I filed a bug.

This was made substantially easier thanks to twitter-text-php, thanks to its authors.

Identica issues

Looks like we’re having issues posting to identica. They’ve switched to pump.io I think. Anyone know what that means for the API? I’ll probably look into it at some point, but if you’re hurting with the lack of Identica support, let me know in the comments, the more feedback, the faster it’ll get fixed.

Updated internals, faster posting

If you were posting on a mobile connection or to many services, you might have noticed that after clicking “Submit Post” you sometimes had to wait quite a long time for the next page to load. This has been holding us back from adding extra networks and features.

Today, we’ve deployed a new architecture which should fix this. Now posts are pushed into a queue and then published from the queue. It’s all a behind the scenes change, but the bottom line is, it should result in much faster posting.

We’re also tracking how long each part of the process takes, so we can monitor and optimise those delivery times. Data galore.

If you notice any issues over the next couple of days, please let us know in the comments.

Online Invoicing with a Social Side

I’ve been chatting with one of the guys behind online invoicing tool BeachCandy, who has been using Composer.

He’s given us some great feedback on the product, which is really helpful.

While checking out his website, I saw his product BeachCandy and was pretty impressed. BeachCandy is an online invoicing tool, allowing users to create and send invoices via their web browser. They have a pretty competitive pricing structure, and the bit that I was most impressed about, they donate 20% of all subscription revenues to social projects.

Yes, you read that right, not 20% of profits, but 20% of revenue! That’s a might impressive thing to do for a company.

They also have a busy and interesting blog. I’ve read a few posts recently and they cover a range of tech based topics, but generally give an interesting insight on them, and provide some news and information on some niche topics, that are probably less covered by the big tech blogs.

The Composer bookmarklet

Update: Now there are multiple bookmarklets here.

By popular request, Composer has a bookmarklet. Heavily inspired by the WordPress “Press This” feature, it uses the same javascript. You’ll find it on the compose screen under the Submit button.

It works in the usual way. Add it to your bookmarks then click it on any page. If you select some text on the page before you click it, that text will also be copied into the compose screen for you.

Tech

With this change, the compose screen supports 4 new url arguments: body, s = text selection, t = page title, and u = page url, on the new target url http://composer.io/posts/add/b.

The bookmarklet runs its javascript magic and constructs a url that looks like this (all values are url encoded):
http://composer.io/posts/add/b?s=foo&t=bar&u=http://foo.bar/

The body argument was added so you can roll your own bookmarklet and combine whatever javascript variables you want in your own order. The body argument is used first, then the others are combined in the usual way and appended.

For example, this url will load a compose screen like:

I'm the awesome body
This is the text I selected
Title of Awesome http://awesome.tld/

If you do roll your own, please let us know in the comments below. 🙂