How to track down the original owners of stolen Twitter accounts


The Twitter logo drawn in circles.

Recently, one of the accounts I follow on Twitter was hijacked. It was turned into a PS5 giveaway scam. The people who hijacked the account changed the name, avatar, and deleted all the previous Tweets. Here's how I found who the original owner was, and managed to contact them. A Twitter account has a screen name. Mine is @edent. It is possible to change your screen name. Each Twitter account has a unique user ID. This is a numerical code that the API uses to keep track of users. Mine is…

Continue reading →

Disintermediate The State


The "That's a paddling" meme - saying "Renew your goose tax? That's an API!"

As part of my MSc, I'm being asked to think about "digital disruption" - so here are some personal thoughts about the future of transactions with the state. The UK Government has a lot of APIs to let computers communicate with each other. Most of them are department-to-department. For example, the Ministry of Birds wants to get an updated list of incidents from the Department of Avian Accidents and Catastrophes. So it gets the information from api.daac.gov.uk But some APIs are human to…

Continue reading →

WordPress's undocumented stats API


WordPress console showing a JSON output.

This blog runs on WordPress. Using their JetPack plugin, I get fairly detailed stats on views and visitors. But, bizarrely, the API is undocumented. Well, sort of... Let me explain: Just Show Me The Code Here's the API call to get a year's worth of data about your blog. https://public-api.wordpress.com/rest/v1.1/sites/shkspr.mobi::blog/stats/visits ?unit=day &date=2021-01-03 &quantity=365 &stat_fields=views%2Cvisitors' Replace shkspr.mobi::blog with your blog's ID as found on…

Continue reading →

Introducing - On This Day in Twistory


A list of columns with Tweets in them.

One of the things I loved about Facebook was its "On This Day" feature. There's something delightful about seeing what nonsense you were talking about on this day a decade ago. Twitter doesn't have anything like that. So I built it. Introducing - Twistory.ml Note: Twitter's recent changes means this no longer works. Stick your @ name in, hit the big button, and you'll get a list of everything you said on this day in previous years. The code is open on GitLab. It's not the prettiest site, …

Continue reading →

Moneyed - a personal OpenBanking API


API Token generation screen.

After writing about how to use MoneyDashboard's unofficial API, the good folk at Moneyed told me about their officially supported API! So here's a quick review & howto guide. Moneyed is a slightly strange service. I think it is designed for companies to give as a benefit to their employees. But you can sign up as an individual. The first month is free - but I don't see a way to tell how much subsequent months are. Although it is presented as an app for Android and iPhone, you can log in on…

Continue reading →

Unofficial MoneyDashboard Neon API


A tiny lego Storm Trooper eats a chocolate coin.

Note: MoneyDashboard is now closed. Yesterday, I wrote up how to use the MoneyDashboard Classic API. Read that blog post first before reading this one. MoneyDashboard have launched a new "Neon" service. The API is a bit more simple, but authentication is harder. Here's a quick guide to the bits of the API that I found useful. I've lightly redacted some of the API responses for my privacy. List of all supported institutions MoneyDashboard only supports a limited number of OpenBanking…

Continue reading →

Unofficial MoneyDashboard API


A tiny lego Storm Trooper eats a chocolate coin.

Note: MoneyDashboard is now closed. The OpenBanking specification is brilliant. It allows you to aggregate all of your financial accounts in one place. You can give read or write access to apps and services. Magic! API access is restricted to registered financial institutions. That's good, because it puts up a barrier to entry preventing dodgy companies slurping up your data and sending all your money to scammers. But, whether by design or not, it means that you as an individual cannot get…

Continue reading →

OMG! Twitter release an OFFICIAL conversations API!


An organic, branching tree view of a conversation.

One of the most requested Twitter API features is now available - the ability to get replies to a Tweet as a thread. Long time readers know that I've long been a fan of Visualising Twitter Conversations in 2D Space. But up until now you had to use horrible hacks to get the data. As trailed in their recent blogpost - conversation threading is now part of the official API! This allows you to understand a Twitter conversation as a Tree: 1291422339075313664 ├── 1291425742908207107 │ ├── 129142…

Continue reading →

Relaunching @edent_solar. Part 5 - Getting data out of Fronius Solarweb


A big grey box with lots of wires coming out of it.

Mostly notes to myself. My solar panels have an open API. But it's only available if I'm on the same network as the Fronius inverter. I can connect my system to https://www.solarweb.com/ so I can access it anywhere in the world - if I have the right password. SolarWeb has an (optional) guest mode. You can view the panels' performance if you know the secret URl. It looks something like this: https://www.solarweb.com/Home/GuestLogOn?pvSystemid=123-456-789 Visiting that URl sets some…

Continue reading →

Relaunching @edent_solar. Part 4 - Dual String MPPT APIs


Graph showing the difference between east and west panels.

I'm hooking my solar panels up to the Internet! Installation Inverter API & Code My solar panels have an API! It tells me the total amount of power they've generated each day. But there's a small problem... I have panels on the East and West sides of my roof. My solar inverter has two MPPT "String" inputs. That is, East and West supply power separately. Luckily, there's an API for that! Thanks to "Grannos" on the PVOutput forum for their excellent open source code which helped get me…

Continue reading →

Everything you know about Twitter character counting is wrong


Japanese text pasted into the Twitter compose window. It is showing that there are too many characters.

How many characters can a Tweet contain? It used to be 140, back in the good old days. Now it's 280. Unless you're Japanese. Let me explain… I run OpenBenches - a site which collects memorial benches. When a user adds a bench, the inscription is automatically Tweeted. If the inscription is longer than 280 characters, it is truncated. The PHP code to truncate text to a specific length is pretty simple: $tweet_inscription = mb_substr($inscription, 0, 280); I use Multibyte String o…

Continue reading →

Turn an old eReader into an Information Screen (Nook STR)


Nook with a train display.

Here's a quick tutorial for turning an old Nook into a passive display. This is an update to my 2013 post End Result An eInk screen which displays the trains I can catch from my local station. It shows the next few available trains, and whether they're delayed. It also shows how long until the next local bus to the train station. Updating the Nook Before doing anything, manually update the Nook's firmware. You can download the latest version from Barnes and Nobel Copy the .zip file to…

Continue reading →