“Interactive” Posters

Picture of advertising poster with sticker alongside with QR code and short URL

I saw this on a First Capital Connect train here in the UK. What could possibly go wrong?

Ignoring the horrible marketing-speak “Engage with this poster” header, several things can go wrong. I didn’t have NFC, so I couldn’t try that out. But scanning the QR code took me to http://kbhengage.zpt.im/u/aCq58 which, at the time, was advertising for… Just Eat. Not villaplus.com. Oops.

Similarly, texting “11518” to 78400 produced:

Thanks for your txt, please tap the link:
http://kbhengage.zpt.im/u/b6q58

Std. msg&data rates may apply
Txt STOP to end
Txt HELP for help

which also produced content which did not match the displayed poster.

So clearly, the first risk is that the electronic interactive bits are not part of the posters themselves, and so the posters can be changed without the interactive parts being updated to match.

But also, there’s the secondary risk of QR codes – they are opaque to humans. Someone can easily make a sticker and paste a new QR code on top of the existing one, and no-one would see anything immediately amiss. But when you tried to “engage with this poster”, it would then take you to a website of the attacker’s choice.

Your Top 50 DOS Problems Solved

I was clearing out some cupboards at our family home when I came across a copy of “Your Top 50 DOS Problems Solved”, a booklet published free with “PC Answers” magazine in 1992 – 23 years ago. PC Answers has sadly not survived, closing in 2010, and its domain is now a linkfarm. However, the sort of problems people had in those days make fascinating reading.

Now I’ve finished blogging quotes from “Producing Open Source Software” (the updated version of which has, sadly, yet to hit our shelves), I think I’ll blog through these on an occasional basis. Expect the first one soon.

Credit as Currency

Credit is the primary currency of the free software world. Whatever people may say about their motivations for participating in a project, I don’t know any developers who would be happy doing all their work anonymously, or under someone else’s name. There are tangible reasons for this: one’s reputation in a project roughly governs how much influence one has, and participation in an open source project can also indirectly have monetary value, because some employers now look for it on resumés. There are also intangible reasons, perhaps even more powerful: people simply want to be appreciated, and instinctively look for signs that their work was recognized by others. The promise of credit is therefore one of best motivators the project has. When small contributions are acknowledged, people come back to do more.

— Karl Fogel, Producing Open Source Software

The Zeroth Human Freedom

We who lived in concentration camps can remember those who walked through the huts comforting others, giving away their last piece of bread. They may have been few in number, but they offer sufficient proof that everything can be taken from a person but the last of the human freedoms – to choose one’s attitude to any set of circumstances – to choose our own way.

This quote is from From Death-Camp to Existentialism (a.k.a. Man’s Search for Meaning) by Victor Frankl. Frankl was an Austrian Jew who spent four years in concentration camps, and afterwards wrote a book about his experiences which has sold over 10 million copies. This quote was part of a sermon yesterday (on contentment) but I share it here because it’s very powerful, and I think it’s also very relevant to how communities live together – with Mozilla being a case in point.

Choosing one’s attitude to a set of circumstances – of which “someone has written something I disagree with and I have become aware of it” is but a small example – is an ability we all have. If someone even in the unimaginable horror of a concentration camp can still retain it, we should all be able to exercise it too. We can choose to react with equanimity… or not. We can choose to be offended and outraged and angry… or not. To say that we cannot do this is to say that we have lost the most basic of human freedoms. No. We are all more than the sum of our circumstances.

The Oatmeal and Religion

I’m a fan of The Oatmeal, with the odd reservation. But one cartoon in particular gets pointed out to me a lot – “How to suck at your religion“.

The trouble with arguing with him is that he’s a popular cartoonist, and I’m not. Cartoons suffer from the Twitter/Facebook effect – a humourous pithy short attack or condemnation of something is far more interesting and retweetable than any nuanced response to it. And then, of course, you get accused of having no sense of humour. And if he ever reads this post and takes offence, there’ll be cartoons lampooning me. Still, Jesus had to endure being mocked, so that’s an OK risk to take.

So, then, a few thoughts in response:

So is judging people wrong, then? Because there seems to be plenty of judgement in this comic. If it is wrong, then who says so, and who died and made them king? It’s easy to mock the moral stance of others, but rather difficult (if your understanding of the world doesn’t include an omnipotent moral lawgiver) to figure out why the morality you are in favour of should apply to other people. Should I not judge because a “silly web cartoonist” (his words) tells me not to? Morality can’t be hung from skyhooks.

This is before we even talk about what Jesus actually meant, in context, by “Do not judge, or you too will be judged”.

The Galileo affair was not the best moment in the life of the church. But the second comic makes the error that so many bits of reporting on stem cells make that one would almost think people are trying to hide the truth. There are two main types of stem cells – adult, and embryonic. Adult stem cells come from, well, adults, and I’ve never heard of anyone who has any theological problem with them. Embryonic stem cells are harvested from embroyos, tiny people who are killed by the process. And that is a problem.

Thing is, which type of cells have been producing all the amazing treatments and treatment possibilities? Adult stem cells. A guy recently became able to walk again after they injected stem cells from his nose into his spine. That’s so awesome. By contrast, despite lots of positive talk, they can’t figure out how to stop the embryonic ones giving you cancer. And yet, every time there’s a “stem cell success” story, the church is castigated for “its opposition to stem cell research”, and people vow to continue the murder of microscopic human beings.

In the last panel, is he really asserting that anyone can make any old thing up, and the universe will bend to accommodate the wishes of the person concerned? Or just that it’s cool and righteous to affirm people in whatever rubbish they make up in their own minds? Also, no matter how politely phrased, “No-one really knows for sure” is dogma, plain and simple. All education is indoctrination – the question is simply “whose doctrine?”. What he is really saying is “don’t use your doctrine, use mine”.

I wonder if the Oatmeal had a kid, who was told “no-one really knows”, and who replied “well, I think God then decides who goes to heaven and who goes to hell, and I’m worried about your eternal soul”, he’d say “sure, sweetie”, or “NO. NO-ONE REALLY KNOWS FOR SURE AND THAT’S FINAL.” Given the rest of the comic’s antipathy towards Christianity…

My religion gives me no anxieties about my sexuality at all. However, what the Oatmeal is really saying is “any parameters religion puts around the correct use of sex are evil”. So is he in favour of no parameters at all (permitting every vile act one could imagine – you know I could list all the usual things which every country makes illegal) or does he just want to impose different parameters to the ones Christianity does? And if so, apart from the detail of what’s in and what’s out (ahem), how is his principle of imposing laws regarding the expression of sexuality any different from the principle that he mocks?

Christians who try and convince others that what they believe is true are not trying to “validate their beliefs”. There are no points from God for making more Christians. In fact, Christians can’t make more Christians – only God can do that. We don’t get any credit when it happens. Also, Christians are (or should be) specifically encouraged to avoid groupthink – the idea that if lots of people believe something, it must be true. (Incidentally, if you think Buddhists all leave people alone, read this and this.)

Fortunately, the real and true “awesome shit” is available to everyone. Including the Oatmeal.

Calling something ‘crazy’ is not an argument. It’s hard to refute a sneer. And, of course, his summary of what Christians believe is wrong in several places. If it’s such crazy nonsense, why not illustrate using the version Christianity teaches, rather than a straw man? Or is the real view not so crazy after all?

Amen to the general point here. Although the idea (which, I agree, is not his main point) that one should vote based on which policies are better for you personally is a sad, divisive and dangerous one. One should vote based on which policies are best for society as a whole. (For me, those are generally policies which make the law conform more closely to God’s law. YMMV.)

Yes, indeed. Je suis….

Yes, I would die for Jesus. Adam4d puts it well:

No, I would not kill for Jesus. However, the point of Christianity is not to “inspire people to help people” (although it does) or to make you happier (although it might) or to help you cope with the atheistic feeling of cosmic helplessness (although it does deal with it very effectively). Christianity is not utilitarian. The point is to have a real relationship with your Creator – to know Christ. Which is the most awesome thing in the world. Having experienced it, who would ever want to keep it to themselves?

Using Instantbird to Connect to IRC Servers Requiring a Username and Password

[Update 2014-01-16: A point of clarification. There are two possible ways to send a password for IRC. One is supported in the Instantbird UI – it’s the one that automatically identifies your nick with NickServ, the bot which makes sure people don’t steal other people’s nicks. The other, which is rarer but which I needed, involves sending a password to connect at all, using the PASS command in the IRC protocol. That is what is documented here.]

I was trying to do this; turns out it currently requires about:config manipulation and is not documented anywhere I can find.

Using about:config (type /about config in a message window, or access via Preferences), set the following prefs:

messenger.account.accountN.options.serverPassword
messenger.account.accountN.options.username

to the obvious values. Other useful tip: if the IRC server uses a self-signed cert, connect to it on the right port using Firefox and HTTPS, and you can save the cert out of the warning/exception dialog you get. You can then import it into Instantbird using the deeply-buried Certificate section of the Advanced Preferences and it will trust the cert and connect. (I think this is what I did, although memory is hazy.)

Avoid Mystery Process

Although the discussions around adding any particular new committer must be confidential, the rules and procedures themselves need not be secret. In fact, it’s best to publish them, so people realize that the committers are not some mysterious Star Chamber, closed off to mere mortals, but that anyone can join simply by posting good patches and knowing how to handle herself in the community. In the Subversion project, we put this information right in the developer guidelines document, since the people most likely to be interested in how commit access is granted are those thinking of contributing code to the project.

— Karl Fogel, Producing Open Source Software

Consumer Security Advice

Here’s an attempt at consumer security advice that I saw at a railway station recently. Apparently, secure sites are denoted by “https//” (sic). And it conflates a secure connection with trustworthiness. It’s good that people are trying, but we have a way to go…

Je Suis…

When Muhammad is mocked, Islamic extremism kills and says:

We have avenged the Prophet Muhammad!

When Jesus is mocked, Christianity hopes and says:

And so Jesus also suffered outside the city gate to make the people holy through his own blood. Let us, then, go to him outside the camp, bearing the disgrace he bore. For here we do not have an enduring city, but we are looking for the city that is to come.

We are called not to avenge him, but to identify with him and accept the same disgrace.

Je Suis Charlie. Et Je Suis Jésus.

slic 1.0.0 Released

I’ve just released version 1.0 of some new software called slic, which I’ve been using to do license analysis on Firefox OS. From the README:

This is slic, the Speedy LIcense Checker. It scans a codebase and identifies the license of each file. It can also optionally extract the license text and a list of copyright holders – this is very useful for meeting the obligations of licenses which require reproduction of license text. It outputs data in a JSON structure (by default) which can then be further processed by other tools.

It runs at about 120 files per second on a single core of a 3GHz Intel I7 (it’s CPU-bound, at least on a machine with an SSD). So you can do 100,000 files in less than 15 minutes. Parallel invocation is left as an exercise for the reader, but could easily be bolted on the side by dividing up the inputs.

The code is Python, and it uses a multi-stage regexp-based classifier, so that with families of licenses it starts with a more generic classification and then refines it via checking various sub-possibilities. Future potential enhancements include a hash-based cache to avoid doing the same work more than once, and integration with a popular online spreadsheet tool to help manage exceptions and manual license determinations.

Responsibility without Monopoly

[No role] requires exclusive control over the domain in question. The issue manager does not prevent other people from making changes in the issues database, the FAQ manager does not insist on being the only person to edit the FAQ, and so on. These roles are all about responsibility without monopoly. An important part of each domain manager’s job is to notice when other people are working in that domain, and train them to do the things the way the manager does, so that the multiple efforts reinforce rather than conflict. Domain managers should also document the processes by which they do their work, so that when one leaves, someone else can pick up the slack right away.

— Karl Fogel, Producing Open Source Software

Test Driven Discouragement

Some projects go even further, requiring that a new test accompany every bugfix or new feature. Whether this is a good idea or not depends on many factors: the nature of the software, the makeup of the development team, and the difficulty of writing new tests. The CVS (http://www.cvshome.org/) project has long had such a rule. It is a good policy in theory, since CVS is version control software and therefore very risk-averse about the possibility of munging or mishandling the user’s data. The problem in practice is that CVS’s regression test suite is a single huge shell script (amusingly named sanity.sh), hard to read and hard to modify or extend. The difficulty of adding new tests, combined with the requirement that patches be accompanied by new tests, means that CVS effectively discourages patches. When I used to work on CVS, I sometimes saw people start on and even complete a patch to CVS’s own code, but give up when told of the requirement to add a new test to sanity.sh.

It is normal to spend more time writing a new regression test than on fixing the original bug. But CVS carried this phenomenon to an extreme: one might spend hours trying to design one’s test properly, and still get it wrong, because there are just too many unpredictable complexities involved in changing a 35,000-line Bourne shell script. Even longtime CVS developers often grumbled when they had to add a new test. … It is true that switching to a real test framework—whether custom-built or off-the-shelf—would have been a major effort. But neglecting to do so has cost the project much more, over the years. How many bugfixes and new features are not in CVS today, because of the impediment of an awkward test suite?

— Karl Fogel, Producing Open Source Software

Ctrl-Shift-T Not Working in Ubuntu

I just spent ages debugging the fact that my Ctrl-Shift-T key stopped working in Ubuntu. This is my attempt to write a blog post that search engines will find if anyone else has the same problem. Ctrl-Shift-T is “new tab” in Terminal, and “reopen last closed tab” in Firefox, so it’s rather useful, and annoying when not working.

After lots of research and debugging, it turned out to be the following. I recently installed a bunch of VoIP apps, including Jitsi. Jitsi decided to run on startup, in a way which was invisible in the UI, and override a bunch of my keybindings, in a way which didn’t make it clear that it was the app capturing them. :-( So if anyone ever finds Ctrl-Shift keybindings stop working (seems like Jitsi takes A, H, P, L, M and T), and sees output like this in xev:

FocusOut event, serial 37, synthetic NO, window 0x5400001,
    mode NotifyGrab, detail NotifyAncestor

FocusIn event, serial 37, synthetic NO, window 0x5400001,
    mode NotifyUngrab, detail NotifyAncestor

KeymapNotify event, serial 37, synthetic NO, window 0x0,
    keys:  34  0   0   0   32  0   4   0   0   0   0   0   0   0   0   0   
           0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0 

instead of the expected KeyPress / KeyRelease events, then look for some app which has pinched your keys. I spent ages looking through the Compiz config settings, finding nothing, but then started killing processes until I found my keys were working again.

Is Christianity a “Life Hack”?

This post discusses why people might be motivated to share Christianity with others, and was prompted by a comment on one of the Mozilla Yammer instances which is part of an ongoing discussion within Mozilla about this general subject.

[It is also me deciding to try out Mike Hoye’s proposed new Planet Mozilla content policy, which suggests that people posting content to Planet regarding “contentious or personal topics outside of Mozilla’s mission” may do so if they begin with a sentence advising people of that fact. Hence the above. I don’t intend to be contentious, but you could call this personal, and it’s outside Mozilla’s mission. I assume the intent is that the uninterested or potentially offended can just press “Next” in their feed reader. You can join the discussion on the proposed new policy in mozilla.governance.]

I won’t quote the comment directly because it was on a non-public Yammer instance, but the original commenter’s argument went something like: “If you knew something awesome and life-changing, wouldn’t you want to share it with others?”. A follow-up comment from another participant was in general agreement, and compared religion to a life hack – which I understand to mean something that someone has done which has improved their life and so they want to share so that other people’s lives can be improved too. (The original website posting such things was a Gawker site called Lifehacker, but there have been many imitations since.)

I want to engage with that idea, although I’ll talk about “Christianity” rather than “religion” because I don’t believe anyone’s life can be significantly improved by believing falsehoods, and the law of non-contradiction means that if Christianity is true (as I believe it is), all other religions are false.

There is a kernel of truth in the idea that Christianity is a life hack, but there’s a lot misleading about it too. Following Jesus does secure your eternal salvation, which is clearly a long-term improvement, and the confidence that comes from knowing what will happen to you, and having an ongoing relationship with your creator, is something that all Christians find encouraging every day. Who wouldn’t want others to have that? But in the short term, there are many people for whom becoming a Christian makes their life significantly more difficult. Publicly turning to Jesus in Afghanistan, or Saudi Arabia, or Eritrea, or Myanmar, will definitely lead to persecution and can even lead to death. Jesus said it would be so:

Then you will be handed over to be persecuted and put to death, and you will be hated by all nations because of me. — Jesus (Matthew 24:9)

In addition, the Bible teaches that Christians may encounter troubles in order to help them grow in faith and rely on God more. So the idea that becoming a Christian will definitely make your life better is not borne out by what Jesus said about it.

The other part of the life hack idea that is misleading is the “take it or leave it” aspect. One of the things about a life hack is that if it works for you in your circumstances, great. If not, no big deal. In today’s relativistic world many ideas, including Christianity, are presented this way because it’s far less offensive to people. “Take it or leave it” makes no demands; it does not require change; it does not present itself as the exclusive truth. And, in fact, that was the point of the person making the comparison – paraphrasing, “what’s wrong with offering people life hacks? You don’t have to accept. How can making an offer be offensive?”

But that’s not how Jesus presented his message to people.

I am the way and the truth and the life. No one comes to the Father except through me. (Jesus — John 14:6)

Whoever believes in him is not condemned, but whoever does not believe stands condemned already because they have not believed in the name of God’s one and only Son. (John 3:18, just 2 verses after the Really Famous Verse.)

This is not a “take it or leave it” position. Jesus was pretty clear about the consequences of rejecting him. And so that’s the other misleading thing about the idea that Christianity is a life hack – the suggestion that if you think it doesn’t work for you, you can just move on. No biggie, and no need to be offended.

Christianity offends and upsets people. (Unsurprisingly, and you may be detecting a pattern here, Jesus said that would happen too.) It does so in different ways in different ages through history; in our current age, one which particularly gets people’s backs up is the idea that it’s an exclusive truth claim rather than an optional “life hack”. Which is why the idea that it is a life hack is actually rather dangerous.

It may seem odd that I am arguing against someone who was arguing for the social acceptability of talking about Jesus in public places. And I don’t doubt their good intentions. But the opportunity to talk about him should not be bought at the cost of denying the difficulty of his path or the exclusivity and urgency of his message.

Merry Christmas and a Happy New Year to all! :-)