miguelfreitas / twister-core

twister core / daemon
MIT License
1.42k stars 251 forks source link

Deny relaying from certain accounts #215

Open kseistrup opened 10 years ago

kseistrup commented 10 years ago

Some pædofiles have been pimping lolitas on twister for some time now. And while I strongly believe in free speech and do not wish to support censoring, I'd like to be able to tell my twister node(s) not to relay any data from certain accounts. Would that be possible?

RealVegOs commented 10 years ago

I strongly support this, because the implementation of a blacklist would hurt the network and open the possibility of misuse. It also saves us from discussion about blacklist rules and legitimation. So this suggestion is great.

rbertoche commented 10 years ago

: (

It really sucks having to think about blocks or filters for Twister. It's meant to be uncensored by design.

That feature you proposed is great, a must have IMO.

My question is: could we go further? Can we stop them?

What if we add a text input somewhere at settings where I could write down a certain username, say, seistrup_blacklist, that would send parseable messages with updates for that blacklist? Would it hurt freespeech somehow? At least we could add our efforts.

If we ever find a way to automatically detect these accounts - say, downloading every pic and checking it's md5 in a ban list, for instance - that kind of broadcast would be really useful.

RealVegOs commented 10 years ago

@rbertoche Your automated blocking system is exactly what I don't want. I have written why. Furthermore, it's not only about illegitimate photos. Additionally I would not relay Nazis, war crime supporters, Russia Today, and German Bildzeitung (Yellow Press).

omnibustubus commented 10 years ago

Thanks for linkin,

I think here we can put two discussions> One is about rights, liberties and the other is about usefulness of twistter. If we respect free will, we have to be consistent and permit any expression and let the legal system in each country to serve to others that have been affected, in some cases it occurs to all the users. Maybe that depends on what could we say to that users or if we make a complicit silence. (Some others could say: mentions censuring take opposite result, helping to promote banned conducts).

On the other side, I understand this talk about the user restrictions in the system, created to censor the "bad" users end up banning twistter same, making it less functional or popular.

Hope this help @kublaykan

kseistrup commented 10 years ago

@rbertoche I'm not interested in going further and I don't think twister should, lest we end with a censoring system. However, the way twister is designed each node is a personal thing (as in "single-user"), and I firmly believe that each "node operator" should be able to decide whom to relay data for, and the default being to allow routing of data for everyone.

I mentioned the pedos in my suggestion because it's a tangible example: they're already there on twister, it's not just a theoretical discussion. However, it might be a bad example because there are often strong emotions involved when discussing pedos. Think of my suggestion as if I operated an open relay mail server. I do not wish to do mail scanning (e.g. spamassassin) in order to avoid certain content, but I also do not want to let spammers use my relay and my resources to spread their junk.

rbertoche commented 10 years ago

You're right, pedo really brings strong emotions...

I thought we could think of something to make it easy to that single-user to excplictly choose to filter some contents. But you all seem right, my suggestion may be all about delegating that filtering to others, and putting some on control of this filtering.

On 12 June 2014 01:43, Klaus Alexander Seistrup notifications@github.com wrote:

@rbertoche https://github.com/rbertoche I'm not interested in going further and I don't think twister should, lest we end with a censoring system. However, the way twister is designed each node is a personal thing (as in "single-user"), and I firmly believe that each "node operator" should be able to decide whom to relay data for, and the default being to allow routing of data for everyone.

I mentioned the pedos in my suggestion because it's a tangible example: they're already there on twister, it's not just a theoretical discussion. However, it might be a bad example because there are often strong emotions involved when discussing pedos. Think of my suggestion as if I operated an open relay mail server. I do not wish to do mail scanning (e.g. spamassassin) in order to avoid certain content, but I also do not want to let spammers use my relay and my resources to spread their junk.

— Reply to this email directly or view it on GitHub https://github.com/miguelfreitas/twister-core/issues/215#issuecomment-45829642 .

thedod commented 9 years ago

I'm getting tired of saying my .0002BTC worth every time the subject of "let's censor just a wee tiny lil bit. only the really nasty stuff" rears its ugly head.

No!!!1 You're satan's little helpers!!!!1

Our duty is to be censorship proof. This means we relay everyfokingthing!!!!!1 Even child porn. Especially child porn. It's forensics damnit.

Sorry for body language. Back from 2 rough months (ask around), and last thing I need is to lose one of the only things I was coming back "home" [to Sparta] for.

@miguelfreitas, please don't let them lobotomize your baby.

Alright. I'm calm now. I'll see myself out

slr commented 9 years ago

@thedod in my ideal version of reality you are still able to not turn on any black lists on your node and let the shit flow through. what's wrong with this scenario?

slr commented 9 years ago

https://xkcd.com/1357/

thedod commented 9 years ago

If you can drop my twist, you can be hacked to do it, you can be forced by a judge to do this. Can't is the word good generals are made of. Grow a spine already. So far, we're the losing party in this war. We should at least get our goals straight. OBTW this goes for #269 and whateverfok else I've missed. @miguelfreitas — pretty please post on your blog a statement saying censorship-resillience is not open for debate. Don't end up like tox. OK. Let's not escalate into gossip, but some of you can feel what I'm talking about [I hope].

thedod commented 9 years ago

xkcd talks about rights

  1. not to listen
  2. not to host/store/relay

1 is still in effect — just don't watch child porn [unless youre investigating a case]. 2 is something you willingly give up if you accept twister phylosophy [as I understand it]. It doesn't mean I should host child porn in other places, but twister is a treaty where all users relay everything or China and GCHQ will have you for breakfast. Kapish?

kseistrup commented 9 years ago

@thedod, I totally disagree, but I already said so more than a year ago. I haven't changed opinion.

thedod commented 9 years ago

@kseistrup how can you protect against cartel of judges forcing all users to delete a twist? In my scenario, it's just like a judge telling me to ignore gravity. Can't is a powerful word. What's your trick against serial child killer Carmen Ortiz and her ilk?

kseistrup commented 9 years ago

There will always be users who want to relay everything. Let them relay it.

slr commented 9 years ago

not open for debate

heh, is it your position for free speech?

judge and his beloved friends with guns can force you to delete your twister. they can beat you until you forget the word twister itself. they can force you to not do what you want in twisterverse already.

seriously, I believe it will come one day, fork or not.

RealVegOs commented 9 years ago

@thedod I doubt, if you correctly use the term censorship! If somebody is in a position of power, he can enforce censure. But in case of Twister, even a judge couldn't prevent other nodes from relaying stuff. If we had such a non-relaying feature, the result would always be one of a swarm and not of somebody with power to enforce his will on others.

BTW1. German Nazis came to power in a total legal way, exploiting possibilities of freedom, they were not willing to grant others. BTW2. You can turn every principle into it's opposite by strictly applying it's rules.

thedod commented 9 years ago

I suggest a compromise: an I relay everything option (maybe even fork, so that you can't hack/legally-forcce one into the other), and the ones running `no-censorship-on-my-watch branch look different on all clients. (like the blue "verified" checkmark. I want the judge to quickly understand that alice can't delete a twist [even though bob could]. See that "no censorship" logo, Sir? I'm terribly sorry. Software [Hopefully math] wouldn't let me do that.

No idea how to lock down "fanatics" so that you can't switch their software even if you confiscate the machibe.

Maybe best is if I[/we?] start a different blockchain (maybe i2p only) as a "splinter group". Who's with me? Jboss? ;)

thedod commented 9 years ago

@RealVegOs:

BTW1. German Nazis came to power in a total legal way, exploiting possibilities of freedom, they were not willing to grant others.

That's exactly it. If the system allows control over who gets which rights, you get nazis/gchq/syria/whatever

BTW2. You can turn every principle into it's opposite by strictly applying it's rules.

I'm not here to mince words. I still burp adrenaline. No time for mind games. I'm as practical as a molotov coktail at the moment ;)

thedod commented 9 years ago

Don't shit on the most effective thing to come out of the post-snowden #ybti movement (most effective should have been tox) never mind the gossip, we haven't got assets to lose, and we're losing twister to those perverts.

I could scream, but I'll stay normative until we sort this out. a man zgadadoo and all that.

slr commented 9 years ago

Maybe best is if I[/we?] start a different blockchain (maybe i2p only) as a "splinter group".

come on! stay here. don't wanna miss you.

btw think about deep packet inspection tools on net providers side. gov can force them to drop any Alice torrents. I'd like to see some i2p flavour in twister and 'retwist anonymously' function.

thedod commented 9 years ago

come on! stay here. don't wanna miss you.

I can stay here just like I stay at twitter (and those naaiers have share holders). I trust you to be zef enough and join us on i2p-curses-no-js venture. Bring friends (especially the ones too nasty for twister). a few months from now - i2p becomes public enemy #1 with 10 times more nodes. At the moment, I got other wars. DM if interested in gossip ;)

majestrate commented 9 years ago

Adding censors to an censor resistant network is like adding a bomb to a car for anti theft purposes. it's not just a bad idea from a moral level but from a technical one too.

thedod commented 9 years ago

:hand: I knew I could count on you, You're a rare Van Zandt in a desert of paul simons. We ain't gonna play sun city 'cause we've seen this movie already. https://www.youtube.com/watch?v=TlMdYpnVOGQ

RealVegOs commented 9 years ago

Again, I reject the term censure and I also will not grant you the right, to decide something for me, that could be everybody's personal decision. If you want to see all shit you are free, but I do not like you to force me to do so too. Please read this thread from the start and try to understand what we are talking about.

ghost commented 9 years ago

1) I am here because of the renewed interest and outrage shown by certain individuals on Twister. First they started saying abusive things to users, telling them to "fuck off" etc. Then they revived this feature request targeting the same opponents. I urge everyone to take this as a political step, not merely as a technical issue. This renewed interest has something to do with certain political tensions between certain groups on Twister. One section wants to silence another section because of their political views. If we take a decision to implement censorship of some sort at this point, it will provide precedence for further (politically motivated) censorship in the future.

2) You cannot implement censorship (user your term of preference of you think this isn't censorship : silencing, banning etc) on this network without implementing fundamental changes to how Twister is made. In other words you have to turn in into something else.

3) If someone wants to implement such things, I suggest forking Twister and creating your own network that allows censorship (Twister2 is a bad name, but you get my point. Come up with a good name)

RealVegOs commented 9 years ago

If I do not follow or unfollow somebody, it's censorship too? Alas others can bring that back to my timeline by retwisting. So we talking about spam. But according to some here, I have to endure it.

ghost commented 9 years ago

Following and Unfollwing options are already there. You can simply unfollow people you don't like. But you will still see posts from those already-unfollowed people if other users RT their posts. RTs are not necessarily spam. RTs are part of a social network or a microblogging platform. This is how you get to spread things you find interesting. This is one of the ways you find more people to follow too. Calling it spam is not the right choice of words.

But still, if you see posts from people you don't want to see or hear fro, this is an issue that needs to be addressed. There seem to be two possible ways to resolve this on Twister:

(1) Adding an option to block a user. This will stop showing their posts, directly or indirectly through other people's RTs. If user X blocks user Y, user X will no longer see posts from user Y. But your node will not ban this user's node. Instead it will continue to be a full part of the network, it will continue to "host" and relay posts from the whole network including the notices from the users you hate.

(2) Implementing a way to relay selectively. This will give individual nodes to ban certain nodes and stop relaying their data entirely. This is a fundamental change to how Twister operates. This can be used to silence people who express ideas that are not widely held or approved. It will diminish the entire network. This is dangerous.

A certain influential user on Twister ( vegos ) is already campaigning for the option (2) with the aim of preventing users who express a certain set of political views and certain interpretation of history from using Twister. If implemented, the same method will be used against many more schools of thought. Twister will no longer be able to circumvent censorship.

P.S. Please pardon me if I misused the tech jargon. But I believe I still managed to convey my point.

Erkan-Yilmaz commented 9 years ago

If I would be forced by the CIA to decide between this feature (not relaying) and freedom, I'd tend more to freedom of speech.

The main page of twister (1) tells, I think, the direction of twister (what it should be, or what it should not be): "... no one can censor you. No one can remove your posts. Your account cannot be blocked."

(1) http://twister.net.co

Erkan-Yilmaz commented 9 years ago

@thedod : "@miguelfreitas — pretty please post on your blog a statement saying censorship-resillience is not open for debate." no need to wait for that, we could also make a user manifesto for twister + let willing users edit-"sign"

ghost commented 9 years ago

@Erkan-Yilmaz "no need to wait for that, we could also make a user manifesto for twister + let willing users edit-"sign""

+1 Excellent idea.

kytvi2p commented 9 years ago

@lohang

(2) Implementing a way to relay selectively.

As you and others wrote, this is a horrible idea.

@RealVegOs

Again, I reject the term censure

Unless you want to use your own forked version of English, what you are proposing is censorship. Be honest with yourself and embrace that you want to stop relaying content that you disapprove of, making it harder for others to see it.

Otherwise, what is the point in not relaying certain content if you do not, in fact, intend to censor?

If you just want to stop yourself from seeing it that is entirely different and that is not what this ticket is requesting.

RealVegOs commented 9 years ago

Given such a non-relaying feature was technically possible, what would be the effect? Does it affect you, if I - the one you may call censor - do not relay certain content? Really? Does it keep you from seeing it or does it impact you ability to relay it? First NO! Second, if enough others do so too, the stuff may take a little bit longer to be spread to the whole network. But will it be blocked 100%?

I absolutely cannot imagine that, seeing this discussion here!

And what, if a 100% blocking really happens? Then there won't be many to complain about or why did they use the non-relaying feature? Of course all variants not only the extrem ones are imaginable. May be a big number of nodes does not relay and another big group complains, because some stuff has become to slow. Then we have to discuss the content (good idea!) and if enough undo their non-relaying, the problem is solved collectively.

What are you afraid of? A judge or a law will force us all to do so? OK, as soon as we have global laws, we should abandon the non-relaying feature. But I rather think as soon as they understand Twister, they will not force single nodes. They would rather ban Twister completely. The network's hardly controllable peer to peer nature and the persistent nature of posts alone was it worth.

Even if there ever was a 100% blocking of content, I absoutely would not call it what historically and politically is known as censure. There is no instance which arbitrarily has enforced this 100% blocking, it's the result of a consent that happend if it ever ever should happen.

Why do I want this? Because once Twister is flooded with extremits shit (not only childporn) we have no way to deal with it. You can try to discuss with them or cry "fuck off", like I helplessly did with some unintended adverse effect. At least it taught me, that it's better to delete non targeted Twister handles before doing so! But try to discuss with extremists, I whish you good luck!

kytvi2p commented 9 years ago
  censor
      v 1: forbid the public distribution of ( a movie or a newspaper)
           [syn: {ban}, {censor}]

I cannot put it any more simply than this: I am 100% opposed to censorship.

I believe that even unpopular ideas should be allowed. I don't have to read them. I'm debating the merits of censoring on a platform which proclaims:

Because twister is completely decentralized no one can censor you. No one can remove your posts. Your account cannot be blocked.

What you want is the antithesis of that.

I'm not passing judgment on you for wanting to censor others. You want to censor and I guess that's OK.

We just completely disagree about free speech being important. I just hope that the developers don't turn their backs on the ideals this project started with.

RealVegOs commented 9 years ago

Because twister is completely decentralized no one can censor you. No one can remove your posts. Your account cannot be blocked.

This will not be touched! Only some accounts will not support your account in the network.

There is no hierarchical structure, nobody is more powerful like you. Nobody has the power to censor the network. Everybody has only power over his node. To forbid something, you must have the power to enforce your ban on everybody. That's censorship.

Another question is, whether an non-relaying feature may be externally exploited by real censors. I'm open for such considerations. But I cannot agree on an orthodox definition of censure, no matter if the non-relaying feature will be implemented or not. I hope at least timeline filtering - what some of you call blocking - will come. Isn't that censure too? What if govs force mandatory blocking lists on us? They could do that with a trojan.

We just completely disagree about free speech being important.

We disagree, but you cannot tell me that free speech is not important for me. I do my best, to help unheard voices and to address ignored topics. Heard of EDCs? I'm not neutral, that's it! I am absolutely biased for peace, freedom, health, equality, culture and for those who lack it. Neutrality is a bad idea in a world where some few aim to own all.

rodneyrod commented 9 years ago

I think the problem with this is that the example that people have been using for selected relaying is fundamentally flawed.

Everyone here keeps comparing it to a conversation, when in fact the Twister network is a lot more complicated by that. In fact, the reason why Twister works so well is because it relays content irrespective of the user. A better analogy would be to compare this to an ISP who is actively trying to block their users from accessing something like the Tor network because it contains illegal material. It's completely within the right of the ISP to do this, but for me personally, it's not morally acceptable to selectively transmit information in this way, and it also defeats the purpose that Twister was supposed to fill.

miguelfreitas commented 9 years ago

Hey people! I'm only reading this thread now and i see it has reached some overly emotional moments but hopefully calmed down to more rational terms already.

I think there are some misunderstandings which helped spread some FUD.

Of course the original statement "Because twister is completely decentralized no one can censor you. No one can remove your posts. Your account cannot be blocked" is not negotiable, but let's think for a moment on what it really means.

When I say "no one" what i meant is that "no organization" or "no entity" can do it, because block/censorship implies forcing a collective behavior on the entire network. twister network is distributed and each node accepts/rejects things based just on simple (technical) rules which have been coded. Banning a specific user or content is not among this rules, that is, the ones which are distributed in the standard twister client.

Now let's consider for a moment that @RealVegOs opens his copy of twister.cpp at function bool acceptSignedPost and writes some code like that:

if (username == "badguy") return false;

Ignoring some possibly unwanted side-effects (triggering libtorrent's peer banning unnecessarily) this would cause @RealVegOs node, and just his node, to refuse receiving/relaying both DHT and swarm posts of user "badguy".

What would be the net effect for "badguy"? None at all.

This probably only gives peace of mind to @RealVegOs to know that he is not relaying badguy's post anymore but twister network keep working as usual.

@RealVegOs has an interesting point: what if badguy is really upsetting people to the point that everybody takes the pain to edit his own twister.cpp file and recompile?

So, what I'm trying to say here is:

  1. No one, not even me, can force what code you decide to run on your computer.
  2. If you want to patch your own twister copy to deny relaying some users, it is not difficult to so. Is this censorship? (imho one has to really stretch the definition to say 'yes')
  3. Turning this local patching into a nicely interface where you can configure your personal blacklist is debatable, but it is not such a big deal. It is a matter of lowering some difficulty bars but it is not fundamentally different of something that is already possible.
  4. Creating a mechanism to share a centralized blacklist (which every node enforces) would be censorship. This is never going to happen.
miguelfreitas commented 9 years ago

Btw, on a technical side: acceptSignedPost is not a good place for such check as it has the semantic of a corrupt post (like bad signature).

That is what I've mentioned about triggering libtorrent's peer banning: you don't want to stop connecting to a certain peer just because he tried to relay you a post you don't want to receive (it is not his fault!). He might also relay you "good" people's posts...

A better strategy would be to prevent such torrents from starting locally and also denying at DHT posts checks. Just a little bit more of work but still quite easily doable for C/C++ programmers.

slr commented 9 years ago

If you want to patch your own twister copy to deny relaying some users, it is not difficult to so. Is this censorship? (imho one has to really stretch the definition to say 'yes') Turning this local patching into a nicely interface where you can configure your personal blacklist is debatable, but it is not such a big deal. It is a matter of lowering some difficulty bars but it is not fundamentally different of something that is already possible.

all that anybody needs to know about this issue.

ghost commented 9 years ago

I agree that we should keep the conversation about infrastructure. The political discussion over at the related google thread (google groups? really?) is circling the fundamental issue that any decentralized service has to face or condemn itself to failure.

Recall in the USA the 'net neutrality' debate recently caused somewhere in the range of hundreds of millions of USD to move around, and is still being litigated between government and telecom infrastructure corporations. That debate is a macrocosm of what is being discussed here: the notion of privileging certain services over others at an infrastructure level. I don't think that the arguments thrown around at the time, that an anti-neutral net literally threatens the future of the Internet, are hyperbolic in the slightest. It's about the eventual result--the life or death of the structure.

If a centralized, immobile network maintained by a cohort of well-funded oligarchic actors including nation-states experiences this much sturm und drang over something as tame as the speed at which Netflix episodes can reach your TV, I think we ought to take the idea of 'neutral infrastructure', and the slippery slopes which lead away from it, seriously. Not even the million-horsepower worldwide Internet can live with systematic privileging of traffic (QoS aside)--do you honestly think that a (currently) tiny service like Twister will be more than a momentary blip in history if it allows anti-neutral traffic privileging to grow without bound?

The Four Horsemen of the Infocalypse definitely use roads, and libraries, and computers. But this time, we're the ones maintaining the roads, and libraries, and computers. We have a solemn obligation to ensure that at the infrastructure level, (i.e., the protocol level), traffic passes through unrestricted. @miguelfreitas raised an issue above where that kind of anti-neutral behavior damages the functioning of the torrent system--a system designed with these kinds of infrastructure concerns in mind.

If there is illegal activity passing through these roads we maintain, then by all means, feel free to notify authorities you trust. Tell them to register a Twister account--you can even show them how. They can get onto these same roads and go chase criminals. But don't take that power into your hands, or as @thedod said, you will definitely be asked to use it one day in ways you didn't anticipate.

If you still want to play judge and jury on a network that is literally maintained by everyone else using it on an equal footing, well, go ahead and fork, but don't expect that effort to be appreciated.

I highly encourage everyone with a stake in this issue to read this USA hosting provider's stance on the content they host. They've stayed in business for long enough--perhaps they're doing something right?

ghost commented 9 years ago

Thanks @miguelfreitas for carving out some sensibility in this discussion. Part of seizing back the public forum with decentralisation and P2P is having the responsibility to collectively police its use. Individual, not infrastructural, block-lists are an anarchistic way to protect the commons of Twister and to keep things high-signal and low-abuse.

As stated, this isn't a protocol or algorithmic thing; this is already very possible for nodes who wish to patch their own software, and no other network nodes would be affected. The danger is that sets of patches will proliferate which lead to network instability because they're sloppy or non-standard, and all for nothing but grousing about "censorship" (which is being misplaced in this case) and nonsense assertions that other users are morally obliged to carry child-abusive content.

Please do include a standard, clean way for nodes to reject and refuse to relay data. Free speech is as much about what you choose not to say as what you do say, and when I relay others' content, that's my speech. I steadfastly believe protecting my right not to speak is critical to Twister's mission of protecting my Freedom of Speech.

ghost commented 9 years ago

@cathalgarvey Perhaps I was unclear. In a decentralized context, you are both user and provider. As a provider, I think you should not lose sight of certain obligations you have, as I have raised above. "Users" are not "morally obliged" to carry any content they don't want to. Users don't carry content. Relaying traffic is not speech. As others have mentioned, as a user, information you don't want to see is not part of your UX, though it may pass through your machine in its function as part of the decentralized infrastructure (provider).

Please speak straightforwardly, without conflating these two separate concerns: are you for per-node inspection, monitoring, and control over traffic, or not? I am quite concerned when I hear phrases like "collectively police".

ghost commented 9 years ago

When people say "Just report to your local police" they are asking for censorship. Censorship is the involvement of a third party who prevents you and another from communicating. It's clearly not always bad; we are generally all happy to see child abuse not being uploaded by child abusers...right?

The disagreement is what happens once it is uploaded. Many, including you I think @talexand, appear to want abuse material to freely circulate once it hits a network, and to pretend that it's not your problem if you don't see it (i.e. UX layer).

This is simply washing your hands. You want kids to be protected from child abuse, so you clearly want policing, but you don't want to be responsible for policing because it doesn't fit your aesthetic of anarchism. To put it gently, tough shit. If you want to be decentralised, prepare to accept the responsibility that centralisation took from you.

I know exactly the difference between my refusal to relay content and third-party/state censorship. I live in Ireland, and we have plenty of censorship over here still. In fact, I've written a microstatus network explicitly to protest Irish state censorship (albeit a really bad one written in code-golf Python). So yes, thanks, I know the difference and I know exactly what I'm requesting. I'm requesting the ability to enact my responsibilities towards an anarchic network.

ghost commented 9 years ago

And btw @talexand, if "Relaying traffic is not speech" then the free-speech argument is totally irrelevant. So either claim it is speech, in which case refusing to relay is also free speech, or stop discussing this as a freedom issue at all.

It is about Free Speech, but not about Censorship, because this is about our individual choices to relay; to speak, or not to speak.

thedod commented 9 years ago

Thanks, @cathalgarvey, for inspiring the name of my I2P fork:

@OliverTwister :smiling_imp:

@miguelfreitas - I don't think "NSA proof" is a "serious claim" (they don't make journalists like they used to), but it's the thought that counts. Do you still think it? You drive your fork carefully. Ours will be "paedo-friendly" simply because we're unconditionally friendly.

Peace, :passport_control: JulleNaaiers

slr commented 9 years ago

http://scary.tasty.sexy/2015/09/on-the-perception-of-imaginary-differences

thedod commented 9 years ago

For the record [we've chatted much since :wink:], my reply. :innocent:

slr commented 9 years ago

we've chatted much since

friendly fire incident, case closed.