How Twitter Developers Can Combat Abuse


The Twitter logo.

Here's a simple step that Twitter App Developers can do to reduce the amount of abuse which is generated on the platform. A few friends of mine regularly receive harassment on Twitter. Typically, there are two ways to deal with it: Mute the offending user. This means their tweets to you never show up in your replies. Block the offending user. The same as muting, except the offender is also prevented from seeing your Tweets while they're logged in. There's a flaw with both of…

Continue reading →

New Year - New Dabr


Way back in 2008, David Carrington created Dabr - a really simple mobile website for accessing Twitter. Dabr@dabrFact of the month: @dabr is now 5 years old! Born in August 2008 when @davidcarrington was inspired by @Whatleydude.❤️ 7💬 10🔁 013:59 - Mon 16 September 2013 In those days, Twitter had a kick-arse API and were happy for people to build exciting new services on it. I was eager to contribute and got stuck in to improving it. Dabr was fast - much faster than the original mobile Twitte…

Continue reading →

Dabr Helps Ai Weiwei!


I've written before about Dabr, the Twitter client I code for. Dabr helps people around the world and is used by some of Twitter's most influential users. Today, I am pleased to announce that Chinese artist, political prisoner, and sower of porcelain sunflower seed, Ai Weiwei uses dabr! On last night's Newsnight, as part of a package on Ai Weiwei's release, they showed him using Twitter. Here's a screenshot. Click for larger image That's Dabr! I'd recognise the orange colour scheme…

Continue reading →

Displaying Twitter Photos via Entities


Twitter has announced that it will soon open up a native photo sharing service. Rather than using an external service like Embed.ly to retrieve thumbnails, all the data is embedded within Twitter Entities. So, if you request a status using "include_entities=true", you will be able to grab the image and display the thumbnail using the following code. function twitter_get_media($status) { if($status->entities->media) { $url = $status->entities->media[0]->media_url_https; …

Continue reading →

Dabr, Dabr, Everywhere...


I contribute code to Dabr - a mobile twitter client. It's a great project to keep my hand in the world of PHP, APIs, SVN, and all the other tools that are essential to the modern online world. Dabr's strength for developers is two-fold Dead easy to install. Unzip the files, fill in your API key(s), upload, done. It's under an incredibly permissive Open Source MIT License. Essentially anyone can do anything with the code and they don't need to ask permission, nor contribute anything …

Continue reading →

Getting Images from a Foursquare Checkin


Photo of a MacBook. The decal sticker is of Iron Man. His hand blaster is replaced with the Apple logo.

"Oi!" shouted Whatleydude, "Get Dabr to show images from foursquare checkins!" "Righty-ho sir!" I said. I started coding furiously. Of course, things are never quite as simple as I first thought.... So, how do we go from http://4sq.com/fgIWov to 1 Expand the URL Get your Bit.ly API Key. http://api.bitly.com/v3/expand ?shortUrl=http://4sq.com/fgIWov &login=YOUR_BIT_LY_USERNAME &apiKey=YOUR_BIT_LY_API_KEY &format=txt You can, if you prefer, get the info back in JSON or XML.…

Continue reading →

Twitter API - pagination and IDs


The Twitter logo.

Looking for some Twitter API help.  Bit of a geeky post, this... Pagination is the act of splitting data into logical  pages. Suppose I had a list of item, numbered 0 - 99.  If I want 20 items per page, it's trivial to see that pagination looks like: p1 = 0-19 p2 = 20-40 p3 = 41-61 p4 = 62-82 p5 = 83-99 If I wanted to start at, say, page 55 - pagination would look like: p1 = 55-75 p2 = 76-96 p3 = 97-99 Easy, right?  So why am I telling you this? Twitter Timeline Imagine that those items …

Continue reading →

HOWTO: Twitpic and OAuth


Logo of TwitPic.

I am no longer confused! Here is a quick tutorial in how to post images to Twitpic and Twitter when using OAuth. I'm indebted to Steve Corona of Twitpic, for his help with this. You can see the full code on Dabr's Google Code page. First of all, you'll need to have enabled OAuth for your Twitter client. I use Abraham's excellent OAuth libraries for PHP. This tutorial assumes you already have OAuth working. I'll attempt to explain what I'm doing as I go along - but the code should be…

Continue reading →

Bugs in Twitter Text Libraries


The Twitter Engineering Team have a set of text processing classes which are meant to simplify and standardise the recognition of URLs, screen names, and hashtags. Dabr makes use of them to keep in conformance with Twitter's style. One of the advantages of the text processing is that it will recognise that www.example.com is a URL and automatically create a hyperlink. Considering that dropping the "http://" represents 5% saving on Twitter's 140 character limit for messages, this is great. …

Continue reading →

Dabr - Reply to all and Geotagging


People have been very excited to see some new functionality in Dabr - the mobile Twitter client I develop for. But what is it and how does it work? @@ and geotag Reply to All The @@ symbol allows you to reply to all the people mentioned within the tweet. It only shows up on tweets which mention other users - so you should only ever see it when it can be used. Hitting @@ on the above tweet will pre-populate the text box with "@topgold @whatleydude @dabr". It should remove any duplicates…

Continue reading →

Hashtags and Implicit Knowledge


What is "Implicit Knowledge"? Essentially it's stuff that everyone knows, but no one has written down. Usually it's something that people have worked out through their own experiences. This sort of knowledge is common in life - but is fatal in computing and design. Take the following tweet I received. Mark Hawkins @Mawkins Replying to @edent …

Continue reading →

Don't Let Users Do Things They Can't Do


There are many "rules" when it comes to User Interface / User Experience design.  One that I try to stick to is "Don't let users do things they can't do." It's one of my gripes with Linux.  If you're editing a configuration file, you are relying on yourself to sanity check your input - often without knowing what the limits are. Take these two different examples. In a text file, we might have: #Maximum Widgets to fidget maxW_to-F = 0 Whereas a GUI would show How many Widgets do you want t…

Continue reading →