(If you already know what OAuth and xAuth are, you can skip this section.)
Tumblr shut down the “Version 1” of their API this week.
(For purposes of this discussion, whenever you see “API” just think “post-to and/or read -from Tumblr without using a web browser”.)
"Version 2" of their "API" uses "OAuth" which is a jargon-y word for "a more secure way to use the API" (that is, a more secure way to post-to and/or read-from Tumblr without a web browser).
OAuth is complicated. If you have used a Twitter application on the iPhone, you’ve probably seen this happen:
At each one of those steps, things can fail or break down for a variety of reasons.
OAuth is like a bodyguard.
For web apps, or even iPhone apps, OAuth might be complicated, but it’s feasible.
For a “shell script”, OAuth is much more difficult. How difficult? Twitter wrote their own custom command-line program for use with OAuth. It requires several awkward steps of configuration and generally makes things harder to do than they were before.
There is an alternative called “xAuth” which is basically “OAuth made a little easier.”
If you have an iPhone or an iPad and put your Twitter login information into the “Settings” app, that means that you don’t have to do the 4 step “dance” I described above. That’s xAuth: it has most of the benefits of OAuth, but with much less hassle to make it work.
Twitter has xAuth, but they don’t allow most people to use it. It’s basically a waste of time to even ask unless you are a Big Important Company.
Tumblr has xAuth, but it is not enabled by default. You have to ask them for permission to use it.
Two days ago I created a new shell script called “tmblr.sh”. I registered it with Tumblr, and then emailed them to ask for permission to use xAuth. (This is so I can bring the SoundOfTheBeep family of sites back online.)
Yesterday I received a reply from Tumblr Support which said:
"The name ‘tmblr.sh’ is too close to ‘Tumblr’ so we’d like you to change it…" (Paraphrased… and they pointed me to the rules that state, very clearly, that this is a requirement for everyone. Ok, fair enough.)
Then they said (and this is an exact quote):
If you could please change the name of your app to comply with the above paragraph, we’ll be happy to approve your request.
"Above paragraph" was the part about the rules for the names of apps, and "your request" was "to use xAuth". ("App" is really "shell script" but it’s the same thing.)
So I went in and renamed the script and changed all of the references. (Which wasn’t much, but did take some time and effort.) Then I emailed them back and told them I had changed the name of my app. Then I waited.
Today I received another reply from the same person in Tumblr support:
We are unable to grant xAuth access for your application at this time unfortunately.
You should be able to accomplish your apps goal without using XAuth. If you have any issues or problems please join our Google Group at http://groups.google.com/group/tumblr-api or ask a question at developers.tumblr.com/ask.
First: I posted a question on the Google Group a month ago explaining exactly what I wanted to do to try to make a shell script which could work with OAuth and the new API.
That post has received 1 reply from J. Random Stranger saying (essentially): “Um, yeah, that might work, but it isn’t going to be easy, so you might want to do it a different way.”
The post has received ZERO replies from Tumblr. None. Nothing. Zero. Zilch. Nada.
Second: Tumblr Support lied to me.
They said “If you change the name of your app, we’ll let you use xAuth.”
I changed the name of my app.
Now they say “We are unable to grant xAuth access for your application at this time unfortunately.”
So… they lied when they said t hat all I had to do was change the name of the app.
Let’s also be clear that "We are unable to grant xAuth access" really means "We have decided not to grant xAuth access." It is not as if there is some technical, moral, or legal reason why they can’t grant it. They control the system. If they wanted to do it, they could do it.
But instead of saying “No” they’re saying “We can’t.” Which is also a lie. It’s the sort of lie that Support people tell all of the time because it tends to placate people by giving the impression that nothing can be done about it. But it’s still a lie.
(This is the same sort of lie that a lot of parents tell their child when they ask for a toy at the store and the parent says “We can’t afford that” instead of saying “No” when what they really mean is “I have enough money to buy that, but I’m not going to buy that for you because I have decided that you don’t need it” or some other reason. But saying “We can’t afford it” is harder to argue with than “No”.)
((And yes, I understand that there are parents who would love to buy things for their kids but can’t because of real financial constraints. That’s not what I’m talking about.))
I find that I have neither the energy nor the enthusiasm for dealing with Tumblr, Inc. anymore. As Twitter has shown, spending time working with someone else’s API means being willing to accept whatever restrictions they decide to make, either now or in the future. As Twitter has shown, there is no reason to expect that a company will appreciate and value the work that 3rd-party developers bring to their network. Some day Tumblr might do just what Twitter did, screw all of their developers in the hopes of making money showing ads. I see no reason to think Tumblr will be any different, especially since my first experience with them in a “developer” capacity resulted in being lied to from day one, and not getting any help from their supposed “developer forum.”
(If you consider what Tumblr did a “small lie” that’s fine; but believe if someone will lie about something little, then it’s a good indication that they’ll lie about something big.)
I’m not leaving Tumblr, because I still want to stay connected with the people I follow here. But I don’t imagine that we’ll still be here in another 2 years. So until then, I’ll just wait.
(If you aren’t interested in SoundOfTheBeep or any of the related sites, you can skip the rest of this post.)
There’s good news, and there’s bad news.
When Tumblr Support told me that I couldn’t use xAuth, I decided to look for other alternatives that I would not have to support. I found a way to do it using IFTTT, otherwise known as If This, Then That.
IFTTT works like this: “If (or when) something happens, do something.”
IFTTT can automate posting the time to Tumblr.
IFTTT can automate posting the time to Tumblr each hour at :00, :15, :30, or :45 minutes.
I created 4 “recipes” for IFTTT, one for each quarter-hour.
Thus, SoundOfTheBeep was saved.
However, there’s some “bad” news, too.
The first three are fairly minor:
Now instead of relying on one free online service, we’re relying on two. (“Now you have two problems…”)
There seems to be absolutely no way to format the timestamp other than the default, which looks like this: “September 06, 2012 at 07:16PM”
So far it seems like the posts are sent “about” every 15 minutes. For example, the post that should have been sent at 7:15 arrived at “7:16:26 pm”. That’s not a huge deal. It could be that IFTTT had to re-try the post because Tumblr wasn’t responding. As long as the posts are relatively close to the right time, that seems “good enough” for me.
Each IFTTT can only post to one Tumblr “blog” from one Tumblr account. That means that I had to create a new IFTTT account to post to IFTTT (just in case I ever want to use my actual Tumblr with my actual IFTTT account). That isn’t “difficult” but it is definitely “annoying” to the point where I don’t think I am going to keep maintaining all of the other SoundOfTheBeep timezone Tumblrs.
The good news is that if others are interested in creating other “SoundOfTheBeep” Tumblrs using IFTTT, it will be fairly easy (and free) for you to do so. You will just need to is:
Get in touch with me and tell me which time zone you want to use. (More on that in a moment.)
Setup the Date and Time channel (Translation: “pick your time zone from a list”)
Setup the Tumblr channel (Translation: “Click about 5 buttons on IFTTT’s Web site and tell it which Tumblr you want to post to” (see step #1, above)
Copy my 4 recipes to this new IFTTT account. (Again, this is just a matter of clicking on the right buttons, it’s all very simple.)
Note that you could just create a new sub-Tumblr under your own account and post to it from there. However, my previous experience with Tumblr taught me that if Tumblr decides to shut down one of your Tumblr “blogs” they will probably just suspend your entire account. If you care at all about your Tumblr site, I would recommend using a separate account. There are also daily posting limits.
I have already created several accounts to manage the various SoundOfTheBeep sites, so all you will need is the login information. That way the people who are already following, say, WindyTime won’t have to find out about your new Tumblr.
Each Time Zone only needs one person to set it up. It should only take about 10 minutes or so if you are familiar with IFTTT. If you aren’t, it might take a little longer, but not much. However, I really don’t feel like doing this 6 more times.
As a reminder, here are the other sites which are a part of the “SOTB family”:
If you would like to use one of those, and would be willing to spend a few minutes getting it up and running, let me know. (Or check it out to see if it is up and running already, maybe someone else in your time zone already did it!)
If you want to start a new Tumblr for a given Time Zone, that’s fine too. If you let me know the URL I will try to help get the word out.
Remember this post (below) which explained how to make your Tumblr site a little more robust?
Well, it was fun while it lasted, but turns out that making this change may have broken your Tumblr today IFF your Tumblr site name does not end with “.tumblr.com” and IFF you followed those directions.
(If you never made the change below, or if you are not seeing the banner to update your settings, or if you do not have a custom domain name for your Tumblr, you can ignore this).
That’s (probably) why you’re seeing the banner telling you to update your site configuration.
Anyway, long story short, now is a good time to set those domains back to the recommended settings shown at: http://www.tumblr.com/docs/en/custom_domains.
Here’s a little geeky tidbit of Tumblr configuration that I wasn’t aware of (of use only if your Tumblr uses a custom domain, aka the URL doesn’t end in “.tumblr.com”):
One of Tumblr’s server went down today. It happens to be the one which is used to dish out webpages for those of us using a custom domain name (e.g. www.baohouse.net as opposed to baohouse.tumblr.com). Tumblr isn’t as fault-tolerant as I thought it was. However, there were other Tumblr servers that were still running fine.
So here’s a technique they don’t tell you that will make your Tumblr blog a little more robust. Remember when they said to add an A record with 22.214.171.124 as the value? Well, that’s just one server. What if that server goes down? Then you’re just out of luck. So let’s add multiple A records (yes, all of them!).
This image shows a typical A record scheme in GoDaddy. Your circumstance may be a little different. In this case @ = baohouse.net but you can put blog.baohouse.net in the host field if that is the address you want to use.
So if the first one goes down, your browser will move on to the second server, and if that goes down, to the third, and so on. For the techies out there, this is called a round-robin DNS technique.
I then use WhatsMyDNS.net to see if the record changes have been updated around the world. Usually it takes a few hours for the major/common servers to get the update.
Also, for those of you whose domain registrar only allows for a single A record, you may want to consider using another DNS provider. You can still keep the domain with your current registrar, just use a different name server.
I would appreciate it if you can reblog this and let your custom domain-using friends know.
Thanks for the the link to this post, thefrogman. I just reconfigured my A record, so I’m waiting for it to propagate.
Update: 2012-08-07 Recent changes at Tumblr mean that the instructions (which were previously here) should no longer be followed. See http://www.tumblr.com/docs/en/custom_domains for recommended settings.
The advantage here is that with a little bit of properly-formatted text you can get not only automatic numbering, but also easy linking from main-text-to-footnote and footnote-back-to-main-text (thus avoiding the problem of “Where was I reading before I scrolled down to find the footnote?”) problem.
The syntax is fairly easy:
This is some text[^Wh4t3v3r] [^Wh4t3v3r]: This is your footnote text.
Note the two places where I used “[^Wh4t3v3r]”. Those must be identical. The text itself is unimportant.
In the footnote, notice that there is a “: ” (colon space) after the ] but before “This is your footnote text.” That is required.
The footnote text can be placed anywhere in your document. The footnote itself will always be displayed at the bottom if the text. (I usually put my footnote text in the next paragraph, so I don’t forget to include them.)
(Update: of course they don’t work in the dashboard, it’s Tumblr! But they work on the permalink pages for your post.)
Actually it’s MultiMarkdown which is a variation on Markdown. The official version of Markdown does not include any provisions for footnotes. This is important because, as a variation (or “fork” to be more-technical) of Markdown, you can’t necessarily move it from one “Markdown compatible” system to another. That said, MultiMarkdown is very popular, and there is a WordPress plugin for it (i.e. if you ever decide to move from Tumblr to WordPress). ↩
Tumblr originally expected that if you were going to post an image, you would make an image post.
Eventually they added support for uploading images into Text Posts using the “+ Upload photo” feature (only shown when creating a Text Post).
If you use that method, you get an image like this:
That image will appear in the dashboard, small, but visible. If you click on it, it will expand to fill the width of the dashboard content section.
But what if you want to just link to an image which is hosted elsewhere, using the
<img> tag? Well, you could do that, but when it was viewed in the dashboard, people would just see an ugly little box that they couldn’t do anything with.
That has changed. Now they will see a box like this:
and if they click on that box, the image will be loaded in the dashboard.
A small improvement, but a nice one.