Saner social media

The socials are a handy way to stay in touch with friends, find out about dancing events (if they’re ever allowed again) and to get information direct from experts. They’re also an unrelenting cesspool of trolls, bots and undesireables. What to do?

Facebook

FB Purity config page

On my PC, FB Purity lets me filter on keyboards (I’ve chosen “trump” and “brexit”, as you can see). It can hide various types of update from your feed. I hide stuff like “Fred commented on this thing” (as FB friends sometimes like to argue with the undesirables), as well as adverts. You can also force the feed into chronological order rather than relying on Facebook’s algorithm to show you what it thinks you should see.

On my phone, I use Friendly for Facebook, which isn’t quite as good but does have the keyword filtering (“commented on” works as a filter) and, if you give them a donation, will also filter the adverts.

Twitter

Tweak New Twitter default appearance

Tweak New Twitter gets rid of a lot of noise (like the “Trending” stuff and sponsored tweets). It can put retweets on separate page too. To use it on mobile, you’d need a mobile browser which lets you run extensions, Chrome on Android doesn’t.

Twitter has keyword filtering built in.

Secateur blocks people and optionally all their followers, unless you’re following them too. It’s adding to your Twitter blocklist, so once people are blocked, they’re blocked however you view Twitter. I guess there’s a risk that some decent people are following undesirables to keep an eye on them, but if it catches on, I can imagine people using separate accounts for that (of course, the undesirables can do the same trick, having one account for trolling and one for following, but they don’t seem to be yet). It wouldn’t be that hard to extend Tweak New Twitter to add a “Secateur” button to Twitter, either, I might look into that.

The next stage on from this, especially if the undesirables maintain accounts where they don’t follow other undesirables, would be the web of trust: only show replies from people you follow, people they follow, people the original tweeter follows, say.

Nitter is a free and open source alternative Twitter front-end focused on privacy. It’s an alternative website for which you don’t need Javascript enabled. It will also turn someone’s tweets into an RSS feed, useful if you just want to read them without signing up for Twitter.

UnicodeDecodeError with stuff from the network

Occasionally I write about debugging, for the edification of others and to try to explain to muggles what I do all day. I ran into a fun one the other day.

Unicode

Joel Spolsky’s explanation of Unicode is excellent, but long. In brief: on a computer, we represent letters (“a”, “b” and so on) as numbers. Computers work with binary digits (or bits), usually in groups of 8 bits called bytes. Back in the mists of time, someone came up with ASCII, a way to represent decent American letters by giving each letter a number. All those numbers fitted a single byte (a byte can represent 256 different numbers), so one byte was one letter, and all was well… unless you weren’t American and wanted to represent funny foreign letters like “£”, or some non-Latin alphabet, or a frowning pile of poo.

The modern way of handling those foreign letters and poos is Unicode. Each different letter still has a number assigned to it, but there are a lot them, so the numbers can be bigger than you can fit in a byte. Computers still like to work in bytes, so you need to represent a letter using a sequence of one or more bytes. A way of doing this is called an encoding. One popular encoding, UTF-8, has the handy feature that all those decent American letters have the same single byte representation as they did in ASCII, but other letters get longer sequences of bytes.

The Internet

The series of tubes we call the Internet is a way of carrying bytes around. As a programmer, you often end up writing code to connect to other computers and read data. Suppose we just want to sit there forever doing something with a continuous stream of bytes the other computer is sending us1:

connection = connect_to_the_thing()

while True: # loop forever
    bytes = connection.recv(1024) # receive up to 1024 bytes from the other computer
    do_something_with(bytes)

The data that comes back from the other computer is a series of bytes. What if you know it’s UTF-8 encoded text, and you want to turn those bytes into that text?

connection = connect_to_the_thing()

while True: # loop forever
    bytes = connection.recv(1024) # receive up to 1024 bytes from the other computer
    text = bytes.decode("utf-8") # turn it into text
    do_something_with(text)

This seems to work fine, but very occasionally crashes on line 5 with a mysterious error message: “UnicodeDecodeError: ‘utf-8’ codec can’t decode byte 0xe2 in position 1023: unexpected end of data”. Whaaat?

Some frantic Googling of “UnicodeDecodeError” turns up a bunch of people getting that error because they weren’t actually reading UTF-8 encoded text at all, but something else2. So, you check what the other side is sending, and in this case, you’re pretty sure it is sending UTF-8. Whaaat?

Squint at the error message a bit more, and you find it’s complaining about the last byte it’s read. You have to give the recv() a maximum number of bytes to read, so you picked 1024 (a handy power of 2, as is traditional). “Position 1023” is the 1024th byte received (since we start counting from 0, as is tradidional). That “0xe2” thing is hexadecimal E2, equivalent to 11100010 in binary. Read the UTF-8 stuff a bit more, and you find that 11100010 means “this letter is made up of this byte and the two more bytes following this one”. It stopped in the middle of the sequence of bytes which represent a single letter, hence the “unexpected end of data” in the error message.

At this point, if you have control over the other computer, you might be thinking up cunning schemes to ensure that what it passes to each send() is always less than 1024 bytes at a time, without breaking up a multi-byte letter. After all, the data goes out in packets, so what you get when you invoke recv() must line up with the other side’s send()s, right? Wrong.

Avian carrier

The series of tubes is narrower in some places than others, and your data may be broken up to fit. A single carrier pigeon can only carry so much weight, you see, and the RSPB is pretty strict about that sort of thing. All that’s guaranteed is that you get the bytes out in the order they went in, not how many you get out at a time.

Fortunately, Guido thought of this and blessed us with IncrementalDecoder, which knows how to remember that it was part way through a letter when it left off, so that the next time around the loop, it’ll hopefully get the rest of the bytes and give you the letter you were hoping for:

connection = connect_to_the_thing()

decoder_class = codecs.getincrementaldecoder("utf-8")
decoder = decoder_class() # Make a new instance of the decoder_class

while True: # loop forever
    bytes = connection.recv(1024) # receive up to 1024 bytes from the other computer
    text = decoder.decode(bytes)
    do_something_with(text)

Much better! Now to raise a pull request against paramiko_expect.


  1. We’ll not worry about the other side closing the connection or the wifi packing up, for now. 

  2. I do wonder whether questions on Stack Overflow about errors from Python’s Unicode handling have more views in the aggregate than the “How do I exit Vim?” question (which is at 2.1 million views as I write this). 

Ch-changes

I’ve been tidying up my website a bit, and I’ve put everything which used to be on LiveJournal on Dreamwidth, with a view to closing LJ (or replacing all the stuff there with redirects) and using DW as a bit of diary/venting place now LJ’s looking increasingly dodgy. It’s odd to type stuff into a LJ-clone, feels a bit retro, but in a nice way, like a comfy old jumper. Twitter’s a cesspool and neither it nor Facebook are good for more than a few sentences of text.

I’ve also spruced up things on the proper blog a bit, adding a funky new style. I got Journalpress going to post stuff from the proper blog to Dreamwidth, and did my very first GitHub pull request to add a feature to it. This started me off on a “add all my things to GitHub” kick, currently there’s just my LJ New Comments script, but there’s a bunch of other bits I want to keep somewhere sensible rather than on my laptop.

Twust

On the subject of cesspools, has anyone done a thing for Twitter which only shows you replies from people followed by you or the people you follow? Someone really should layer a web-of-trust over the top of it, but I hear their API is designed to stop you doing interesting things with it, because you run into rate limiting. It’s so bad TwitRSSme apparently does stuff by screen-scraping instead, which is icky but possibly unavoidable.

LJ New Comments script updated to work with HTTPS sites

I’ve updated the little script I wrote to keep track of which comments are new on LJ and Dreamwidth (LJ now does this automatically in its default style, DW doesn’t, by the looks of it). Thanks to various people for telling me it was broken for HTTPS sites, which LJ and DW both default to these days.

Userscripts.org is long dead, so I’m now hosting it on my site.

Under His eye or The Harrowing of Farron

On Facebook, I ran across a couple of Christian responses to the recent resignation of Tim “Nice-but-Evangelical” Farron as leader of the Liberal Democrats.

A worrying sign

A post by John Stevens, Director of the Fellowship of Independent Evangelical Churches, argues that Farron’s resignation is a worrying sign: Farron’s actions as a friend to LGBT people were not sufficient, people were worried about “what Tim thinks” and wouldn’t leave him alone about it.

As Nick Spencer writes, there are two sorts of liberalism. Farron was an example of liberalism as a way of living (or modus vivendi, as we say in the New Statesman) in a pluralist society, but fell victim to people who saw liberalism as a system which itself provides the right answers to moral questions. But taking liberalism as such as system, as Stevens says, opens its followers to the same sorts of criticism that Farron got: can a follower of a system fairly represent the interests of those who disagree with it?

(Unfortunately, Stevens does get dangerously close to using the phrase “virtue signalling”, which should worry him, for is it not written whosoever shall say to his brother, “thou art virtue signalling”, shall be in danger of being a huge arsehole, and that goes double for “snowflake”.?)

The burning of Latimer and Ridley at OxfordStevens has an interesting argument for liberalism as a way of living: if idolatry is the greatest sin, yet Christians do not want religion imposed by the government as this has historically not ended well (pic related), how much more so (or a fortiori, as we probably say in the New Statesman) ought Christians to allow freedom in law for people to commit lesser sins?

Public reason

With his mention of a “substantive, even comprehensive” liberalism, Nick Spencer in the New Stateman is gesturing at Rawl’s ideas of public reason. From what I read of this, a liberalism which is what Rawls calls a comprehensive doctrine can’t legitimately be the sole basis for arguments in favour of a fundamental right (such as gay marriage), any more than the religious comprehensive system can be the sole basis for an argument against. As Mariel Johns’s summary puts it,

It is important to remember that secular comprehensive doctrines are not allowed – the same way that philosophical and religious comprehensive doctrines are not allowed. These fall outside the domain of the political. This can be seen if we consider what each type of doctrine might ask with regard to making homosexual relations among citizens a criminal offense. A secular doctrine might ask, “Is it precluded by a worthy idea of the full human good?” A religious doctrine might ask, “Is it a sin?” A political conception would ask, “Will legislative statues forbidding those relations infringe on the civil rights of free and equal democratic citizens?”

I’m not an expert in political philosophy, but this seems to get something important right, namely that sauce for the goose is sauce for the gander. “What Tim thinks” can only be of political concern if we’re reasoning from a comprehensive doctrine which says our thoughts can be wrong in and of themselves (such as Christianity, or liberalism of the second sort), or if we can show that what he thinks is somehow relevant in reasoning which is not unique to any such doctrine. Only the latter is legitimate, if I’m reading Rawls right.

So, what should Farron have said? Perhaps “What I think is What The Bible Says1, but look at my voting record and see that I don’t seek to impose my views on others, because (insert Stevens’s a fortiori argument here)”. Note that Rawls doesn’t think people cannot bring forward religious reasons (in fact, he thinks they should, in a “cards on the table” sort of way), only that they should then be backed by public reasons (such as “enforcing religion infringes on the civil rights of citizens”, presumably).

This is easy to say in hindsight, of course.

Shearer

G J Shearer writes that “Arguing that Christians shouldn’t ‘impose’ their views on society is simply a tacit way of saying that someone else should.” But this ignores the distinction between liberalism of the first, Rawlsian, sort, and liberalism of the second, comprehensive, sort. Perhaps Shearer thinks that such a distinction can’t be maintained, and everything must collapse into a fight between competing comprehensive doctrines. But why think that? It seems like a self-fulfilling prophecy: if nobody makes the effort to maintain it, it certainly won’t be maintained. Farron’s pursuers harmed our political life by making it harder to maintain it.

Shearer argues that secular liberalism is illogical:

What, in effect, is the logic of secular liberalism? We live in a world heading towards extinction, our consciousness created by blind physical laws and driven by a ruthless will to reproduce and survive, therefore… What? Love each other? Look after the poor, the lame, the vulnerable? A moment’s consideration shows that these conclusions do not flow from the premise.

Hume lives! But his guillotine is a multi-purpose tool (it slices! it dices! it cuts both ways!). Suppose the facts are these: we live in a world ruled by an omnipotent, omniscient and omnibenevolent creator, therefore… what? What conclusions about morality follow from these premises? You need to add some other premise (like “we ought to do what God wants/commands of us”), and if you need that, why fault secular philosophers for needing to add theirs (like “we ought to do that which leads to human flourishing” or “the greatest good of the greatest number” or whatever)? All moral systems, including theistic ones, are “illogical” by these lights.

He also wonders whether atheist politicians could explain how “their belief that human life is merely ‘an accidental collocation of atoms’, to use Bertrand Russell’s phrase, fits with the various moral imperatives that drive their politics”. Probably not, because politicians, unlike Hume, are generally crap at philosophy. But, as we’ve just seen, Shearer hasn’t explained why his premises about God lead to his moral conclusions, either.

Offred from a Handmaid's Tale, with the caption "But her emails"Shearer ends with a call to Christians to get more involved getting Christian values into law: “it is time that Christians began to unapologetically argue that society is best served by Christian, rather than secular, values shaping the public sphere.” This doesn’t seem likely to end any better than it did historically (pic related).


  1. This is an evangelical term of art, so should be taken with the usual caveat 

Whence came Trump’s list of bad countries?

Where’d Trump get the list of bad countries from which none shall pass (except if they have a Green Card and a court order)? From legislation passed on Obama’s watch, we’re told by various people defending Trump’s latest omnishambles. As Seth Frantzman says, 8 U.S.C. 1187(a)(12), the legislation referred to in the Executive Order was signed into law under Obama. However, Frantzman’s commenters make a few interesting points, which I summarise below.

Under the legislation, if you’ve visited one of those countries or are a national of them, this will prevent you from getting a visa waiver.

How’d those countries get into the visa waiver banned list, and is that Obama’s fault? Some of them appear to have been added by a Republican sponsored bill which failed to pass, but became law by getting tagged on to a larger spending bill. This letter is a complaint that Obama had weakened the provisions of that Bill, which, in passing, gives a history of how it became law.

From my extensive viewing of The West Wing, it seems that tagging stuff on to a spending bill is a way to force the point: if you refuse to sign the bill, other important stuff will not be funded. So, it’s not clear how much Obama’s administration approved of the additions (since they apparently went on to weaken it when it was implemented, perhaps they didn’t and their hands were forced, but I haven’t seen any public statements either way by them). Either way, they certainly didn’t ever put that list to the use that Trump has. To use a list to exclude people from getting visa waivers is quite different from using it to bar people outright. Implying that the list of countries in the Executive Order came from Obama is disingenuous.

What about?

Presidents Carter and Obama have blocked visa applications from nationals of certain countries at certain times (Obama in relation to Syria). Pointing out that the other lot did something similar and therefore can’t argue that Trump is wrong to do it is called the tu quoque fallacy.

LJ New Comments: new release

I’ve updated the little script I wrote to keep track of which comments are new on LJ and Dreamwidth (LJ now does this automatically in its default style, DW doesn’t, by the looks of it). Thanks to sally_maria for alerting me to both the problem and the solution.

Userscripts.org is long dead, so I’m now hosting it on my site.

Atheism: not merely a lack of belief

Atheist shoes for shoe atheists
Atheist shoes for shoe atheists
On the Reddits, there’s a bit of debate about what we should understand by the term “atheist”. The most popular view among atheists there is that their atheism is a “lack of belief”, and that they make no claim about whether or not God exists. Take the sidebar on /r/DebateAnAtheist as an example of this view:

For r/DebateAnAtheist, the majority of people identify as agnostic or ‘weak’ atheists, that is, they lack a belief in a god. They make no claims about whether or not a god actually exists, and thus, this is a passive position philosophically.

What’s going on here?

Firstly, some people think that someone who believes or who states a belief has a “burden of proof”. See Frank Turek’s blog, for example, where he makes the analogy to a courtroom (I guess he doesn’t know about Scottish law). In this view, the atheist needs to make their case, they can’t just sit back and wait for the apologist to make theirs. The “lack of belief” atheists accept that a person with a belief has a burden of proof, so they are careful to say they don’t have a belief, just a lack of belief.

Secondly, apologists also like to say that atheists have a belief, therefore they have faith (meaning unevidenced belief), therefore we’re not so different, you and I. Again, a “lack of belief” atheist might accept that a “belief” is “something accepted on faith”, and that believing without “positive evidence” is always bad, but deny that they have a belief.

Finally, the apologist and the “lack of belief” atheist might both accept that “you can’t prove a negative” and relatedly, that to claim to “know” something requires you to be absolutely certain of it.

I think what’s going wrong in all these cases is that the atheists have gone too far in accepting stuff which the apologists made up to muddy the waters (or, more charitably, which is confused thinking shared by atheists and apologists), but then suddenly realised they need to pull up just before crashing into an undesirable conclusion.

What does the “lack of belief” view get right? Well, people do have degrees of belief, so it’s true to say that failing to accept one belief is not the same as believing the opposite belief. The classic example quoted by “lack of belief” atheists is the jar of beans: if I say I don’t believe the number of beans is even, I’m not saying it’s odd, I’m saying I don’t know. If I wanted to put a number on it, I’d say it was 50% likely to odd and 50% likely to be even, in the absence of any other information.

However, if I thought it was 50% likely that there was a God, I’d still be in church every Sunday. The consequences of being wrong are too great to risk on a coin toss. I think most atheists consider it much less likely that there’s a God, unlikely enough that, if the question were about anything other than God, they’d be happy enough to say “X does not exist”.

Burden of proof

Going back to the first point, we should distinguish between rules of debate (or of a courtroom) and rules of rationality. An atheist who goes into a debate and says just sits there repeatedly telling their theist opponent “you haven’t proven your case” deserves to lose the debate. Entering into a debate requires taking up the burden of convincing the audience.

But it’s not true that if we want to be rational, we take on a duty to defeat all comers when we believe something or say out loud that we believe it. Being rational means we ought to have good reasons for our beliefs, but our time is limited, so we cannot become experts on everything. Rational belief in evolution doesn’t require us to rebut everything in a Gish Gallop in a way which would convince a creationist.

It’s not that hard to come up with good reasons to think there isn’t a God based on our background knowledge: on the face of it, the universe looks nothing like what we’d expect if there were. We’re rational in believing and saying that there are no teapots in the asteroid belt, no unicorns on Pluto, no fairies at the bottom of the garden, and that there’s no God.

Belief, faith, and evidence

On to the second point. As I’ve mentioned previously, atheism doesn’t require faith, at least in most common senses of the world. A belief is just a mental assent to some statement of how things are. This assent isn’t something that only happens because a person has faith: perhaps they have excellent reasons for their belief (or perhaps they don’t: both cases are examples of belief).

There’s also some confusion about evidence, where some people don’t realise that absence of evidence is evidence of absence. Something that doesn’t happen when your theory says it should have can provide as much evidence as something that does happen.

Proving a negative, absolute certainty

We can certainly prove a negative in mathematics (the square root of 2 is not a rational number, there are no even primes above 2, and so on). Outside of mathematics, it’s difficult to reach 100% certainty for anything we believe, but that just means that we’ll have to make do without it. It’s generally harder to show that something does not exist than that something does (where we can just point to an example of the thing), but remember, something that does not happen can still be evidence.

When someone says “I know there is no God”, they might be doing a couple of things: they might be emphasising the strength of their belief (“I don’t just believe it, I know it”) and/or making a claim that this belief is true and justified (which is traditionally what knowledge means to a philosopher). The confusion between these two is responsible for a lot of argument between people who know a bit of philosophy and those who don’t.

In either case, just because we can think of ways in which we could be wrong does not mean we shouldn’t believe something or act on that belief (for example, by saying out loud that we believe it or know it).

Are atheistic arguments failures?

Sometimes, people say they’re “lack of belief” atheists because of the variety of things one could refer to as gods, but that the all-knowing, all-powerful, all-good capital-“G” God does not exist. I think this is one situation where the “lack of belief” idea makes sense: where the person has not really considered all the possible things that could be called gods. We can only formulate a belief when we know what we’re talking about. (But see You can’t know there isn’t an X out there, previously).

But, elsewhere, I’ve also seen Internet atheists respond to Christians with the “lack of belief” definition, i.e. saying that they lack belief in the Christian God. This seems to imply that those atheists think all the arguments against the existence of that God are failures (they’re presumably aware of the arguments if they’re discussing atheism on the Internet), so they can’t say there is no such God, only that they “lack belief”. That’s an odd thing for an atheist to think!

Further reading

Dancing: not just physics

A friend commented the other day that I don’t post much on here any more. I do occasionally write interesting stuff over on Reddit, so I thought I’d make some blog posts based on some of those comments. Here’s a little realisation I had about how we talk about the physics of lindy:

A follower was telling me how she always needs to create her own momentum or she won’t move anywhere, and I responded that if she does so, it breaks one of the most basic rules of following and causes confusion and miscommunication in the dance. — LindyEverywhere on Reddit

Followers aren’t on frictionless wheels. Naturally, they’d stop, but the game is for them to pretend to have a lot less friction than a body on legs actually does (and maybe a bit less mass, too, I think). They’re not just physically getting moved around by the leader without co-operating by playing that game. Shifting people who aren’t co-operating is martial arts, not lindy 🙂

What lindy teachers seem to be referring to when talking about keeping momentum and not injecting energy is that once you’re playing the game, you play it consistently. Maintaining that consistency is not a natural consequence of the physics of the situation, so the follower you were talking to was right to say physically, she’s actually moving herself a lot of the time, or, not having wheels, she’d just stop. Playing the game consistently is a learned skill.

Because this game is so engrained into the dance, a lot of experienced people abbreviate the description of what’s going on by speaking as if what followers do is just allow physics to take its course (when they’re not throwing in their own stuff, I mean), when what they’re actually doing is simulating being a different sort of body and allowing a simulated version of physics to take its course. I imagine this is a bit confusing for beginner follows. (The other thing is that I’ve heard balboa teachers talk about a different simulated physics for follows turning down a line, where they lose angular momentum and so curve in).

One good exercise I’ve seen for teaching this is to play “lindy tennis”: half of you get into a circle, half of you are the tennis balls. The people in the circle set the balls off across the circle with some direction and rotation, which the balls maintain (except for avoiding collisions with teach other). When the balls reach the edge of the circle, the people there catch them and re-direct them (gently!). Playing this fixed an awful lot of “followers stopping themselves” i.e. killing the momentum rather than continuing the line around beat 4 in swing-outs from open, because it teaches what the pretend physics is.

Edit: Thinking about it some more, it seems more “real” at high speeds and when the connection is transmitting an impulse, and more “faked” at low ones and when the leader isn’t exerting a force: in the first case, it may be that it feels like your upper body is being moved by the connection to the leader and you’re just keeping your legs under you so you don’t fall over (which is still kind of a choice, but a natural one), but the thing where follows are told to keep moving at a slow pace having been given a small impulse seems like something you learn to do so as to pretend you’re a frictionless follow moving in a vacuum.

Goodbye Delicious, hello Pinboard

Stöwer TitanicDelicious have started adding spam to their RSS feeds, which probably means they’re circling the drain and are desperate for cash. I’ve moved all my bookmarks over to Pinboard instead, following in Andrew Ducker’s footsteps. I’ll delete the Delicious account in a few weeks, so if you happened to be following the RSS feed there (and getting the annoying spam), you should follow the Pinboard one instead.

I’ve hacked on the bookmark posting script a bit, and the regular bookmark postings on this blog (which are also copied to my LiveJournal) should be working again.