Five Clues That Your API isn't RESTful

I get a lot of emails asking me to get involved with API projects, and that means I see a lot of both implemented and planned "RESTful" APIs. Now, I absolutely love REST and for a data-driven application, it would be my first choice. A service of some other description may work better for other scenarios or skill sets, and non-RESTful services can be very, very useful. If you tell me that your service is RESTful, then I expect it to be. If you're not sure, look out for these clues:

It has a single endpoint

I don't really care what else is going on in your API, any "RESTful" API which has a statement such as "all requests are made to http://example.com/rest" is ... not RESTful. REST is all about handling representations of resources, each is represented by its own URI and we operate directly on that. If it looks like "pretty URLs", then it's probably along the right lines. Continue reading

How NOT to Design Your API

Recently I tweeted as a #linktuesday link the 10 Worst API Practices post from ProgrammableWeb. Today, in search of some concrete examples of APIs implementing unhelpful antipatterns, I sent out a tweet for help:

What's the most frustrating inconsistent/misleading bit of API you've seen? Looking for cautionary tales! Please RT
@lornajane
Lorna Mitchell

In the raft of responses (and thankyou all, this was fabulous, helpful and entertaining in equal parts!), there were some definite patterns that I'd like to share with you, in no particular order. Continue reading

You're Not Using Source Control? Read This!

Last week I wrote an email to a client who hasn't yet implemented source control, but who is thinking about it. It turned into rather a long email as I attempted to convey WAY too much information in one long email. After some twitter banter, I repackaged my thoughts into a whitepaper on Source Control entitled You're not using source control? Read This! (PDF, no registration needed).

The document goes on to talk about the available tools (git, Hg, SVN) and give a sales pitch for _why_ source control has benefits for an organisation. There are also some action points to follow to implement source control if you haven't already taken the leap, which I hope will help anyone looking to take that step - it's kind of awkward in this day and age to admit that your organisation doesn't have source control, but however this situation arose, hopefully this document wraps up my thoughts on how to find a good way out! Continue reading

Building on Datapoint: Weather With Icons

I wrote the other day about the new datapoint API from the MetOffice (there were some great links to other weather APIs in the comments, if you like weather). I've been using it to create a detailed forecast of the weather over the next few days, mixing in some lovely weather icons by Adam Whitcroft, from The Noun Project (the same site that the icons on my own site came from) - so I have something like this for each kind of weather:

noun_project_2590
Continue reading

Ubuntu Icons Directory Routing

I had the weirdest problem the other day so I thought I'd write it down! I uploaded a toy script for someone, but it had images in it and they wouldn't load. The image files existed, and I could request everything around them, files in other subdirectories were okay; the same files in other subdirectories also served correctly. Yet in my error logs I just had lots of:

File does not exist: /usr/share/apache2/icons/ ...

Which was really odd, because my webroot is somewhere else completely!

Eventually I spotted a /icons entry in the configuration for mod_alias in apache, which intercepts all requests to /icons on any virtual host, and rewrites it. Err, thanks? Renaming the directory to "images" solved the problem in this instance, and I hope if you googled for an error message, you will find this page and be able to fix it equally quickly :)

Datapoint: Weather API from the MetOffice

I'm working on a little hobby project which needs to know what the weather is going to be. I had a look around and noticed that the MetOffice had released a new API called DataPoint. They have a selection of APIs, including some map overlays and some actual weather data (more on that another day) but I was especially charmed by their text APIs - this is basically the basis of weather forecasts used everywhere :)
Continue reading

Unpacking and Editing a Chrome Extension

I've been having an issue with one of my chrome extensions recently - the keyboard navigation extension that I blogged about previously. This is a huge problem for me because without this extension, I can't "click" on anything on the internet! It was working on some pages, but on others it was drawing elements but not styling them correctly. The extension doesn't seem to be actively maintained, so I realised I was going to have to dive into the extension itself to understand the problems and have any chance of fixing it. Hurrah for open source software (not that I really write any js but I figured if I could understand the problem, maybe I could ask more intelligent questions) Continue reading

From MySQL to MailChimp via CSV

Don't you hate disclaimers? I do, but before I do anything else, I must ask that you don't use the techniques below unless you are emailing responsibly.

Today I needed to pull email addresses for people who had signed up to a thing out of MySQL and into MailChimp so that I could actually email them about the thing. MySQL actually has a very cute feature for exporting the results of an SQL query as a CSV file, which I had to look up to remember how to do it. It goes something like this: Continue reading

Confident Coding Report

Last week I had the pleasure of speaking at Confident Coding in San Francisco. This was a one-day event for mostly front-end developers, covering the things everyone seems to know but which seem like silly questions to ask - and it has an all-female speaker lineup.
Continue reading