Terence Eden. He has a beard and is smiling.

Terence Eden’s Blog

Theme Switcher:

Download 1080p streams from iPlayer

· 13 comments · 550 words · Viewed ~5,004 times


Screenshot of VLC reporting that the video is 1080p.

Way back in 2010, Paul Battley was blogging about device discrimination on the Internet. The new iPlayer service was using TLS certificates to ensure that only specific devices were able to stream media from the BBC's servers. That's a situation which continues over a decade later. If you watch iPlayer on your laptop, you're stuck with 720p quality. If you want 1080p and above, you need a…

"Why do we use R rather than Excel?"

· 25 comments · 550 words · Viewed ~19,774 times


Binary code displayed on a screen.

I recently had cause to take a beginners course in R - a language I'm fairly familiar with. One of the other students had never used it before, so we were buddied up in order for me to show them the ropes. The first lesson of R is always the same. Read a CSV, manipulate it a bit, draw a graph. We did it all without much fuss - and a graph appeared on screen. Nifty! "I don't get it," the…

Creating a public, read-only calendar

· 5 comments · 500 words · Viewed ~502 times


A bright and easy to use weekly view of my diary.

Last year, I blogged about why I make my work calendar public. It is useful to have a public website where people can see if I'm free or busy. But the version I created relied on Google Calendar which, sadly, isn't that great. It doesn't look wonderful, especially on small screens, and is limited to only one calendar feed. So I used the mighty power of Open Source to build my own! …

Interactive HTML Trees with no JavaScript and no CSS

· 3 comments · 650 words · Viewed ~5,016 times


A Twitter conversation rendered as HTML.

Many text based conversations threads can be visualised as a tree. This is a follow-up to yesterday's blog post about Twitter conversation trees. Mailing list archives often use nested <ul> to show a conversation. That's fine, but has the major drawback of not being interactive. There's no way to collapse a branch of a tree if you're not interested in that strand of the conversation. Older…

How popular are "And Daughters" businesses?

· 2 comments · 550 words · Viewed ~508 times


Shop sign - Marlow and Daughers. Via https://flic.kr/p/a6S2rR

It's quite popular to see high street shops names "Somesuch and Sons". Indeed, my grandparents ran "Eden & Sons" for many year. Much rarer is seeing "... & daughters". But, of course, the plural of anecdote is not data! The UK register of businesses - Companies House - has a pretty good search engine. Doing a search for AND SON returns 220,000 results. We use the singular because that…

Relaunching @edent_solar. Part 3 - API & Code

· 2 comments · 200 words · Viewed ~228 times


Solar Graph.

I'm hooking my solar panels up to Twitter! Installation Inverter Fronius provide a comprehensive API guide - I wish more companies did this. There are lots of unofficial libraries in a variety of different languages. I've written this code in Python3. This is a general tidy-up of the code I wrote several years ago. Here's how it works.... Every minute, the script runs from crontab. If it…

Add review to Goodreads from Schema markup

· 600 words


The Goodreads Logo.

I write book reviews on my blog. I also want to syndicate them to Goodreads. Sadly, Goodreads doesn't natively read the Schema.org markup I so carefully craft. So here's the scrap of code I use to syndicate my reviews. Goodreads API Keys Get your Keys from https://www.goodreads.com/api/keys You will also need to get OAuth tokens For this documentation, I'll use the example keys - please…

Convert DOI to a HTML5 / Schema citation

· 650 words · Viewed ~229 times


The DOI logo.

This is a quick and dirty way to turn a DOI (Digital Object Identifiers for academic papers) into an HTML & Microdata citation. I use this to power my Citations page. Schema.org is a Microdata standard which allows machines to read your HTML and create semantic relations between documents. Here's a minimum viable citation: <blockquote itemprop="citation" itemscope…

The Great(er) Bear - using Wikidata to generate better artwork

· 15 comments · 2,500 words · Viewed ~7,465 times


A close up of the map.

One of my favourite works of art is The Great Bear by Simon Patterson. At first glance, it appears to be a normal London Tube map. But look closer... Cool! But there is something about it which has always bothered me. Each Tube line represents a theme - therefore, a station at the intersection of multiple lines should be represented by someone who matches all of those themes. For example,…

Alexa Skills - get custom slot names using Flask-Ask

· 1 comment · 500 words · Viewed ~521 times


Alexa Skills Page.

Amazon encourages developers to use Flask-Ask - the handy Python library for working with Alexa. Sadly, the project has been abandoned. They no longer take pull requests, you can't raise bugs against it, and the documentation is incomplete. So this is how I solved an annoying problem - how to get the name of a custom slot. Here's the code, with a fuller explanation afterwards. from flask…

Extracting your data from Untappd

· 7 comments · 1,000 words · Viewed ~3,713 times


I rate every pint I taste using the Untappd app. Think of it like TripAdvisor for lager, stout, cider, bitter, and all manner of other beery goodness. Seriously, I've reviewed over 600 different drinks Recently, I decided to see if I could self-host my beer check-ins. The first step - extracting my own data from Untappd. Pay To Play If you become an Untappd Supporter for US$5 per month, you…

Convert WebVTT to a Transcript using Python

· 3 comments · 750 words · Viewed ~5,124 times


YouTube showing subtitles.

I want to convert YouTube's auto-generated subtitles into a plain transcript. Why is this so hard? This blog post gives a more detailed explanation than my answer to this StackOverflow question. Here's what the subtitles look like when you view a video: And here's what the code which generates those subtitles looks like: 00:00:00.930 --> 00:00:03.080 align:start position:0% …