I entered a WP ticket the other day…

We’ll see where it goes…

http://trac.wordpress.org/ticket/2666

Ticket #2666
WordPress shouldn’t use URI instead of URL just because URI is geeky cool.

——————————————————————————–
Priority: normal Reporter: SilverPaladin
Severity: minor Assigned to: anonymous
Component: General Status: new
Version: 2.1 Resolution:
Milestone: Keywords: URL URI Documentation website bg|needs-patch bg|2nd-opinion

——————————————————————————–

Description by SilverPaladin:
I know this is a topic that comes up periodically, but the last time I found it specifically addressed on the WordPress Forum was 2004 and no one directly addressed it even then. So please bear with me if you think you’ve heard it all before, for I’m going to try to be to the point.

I should say, Yes, I do know the difference between the a URI and a URL and did the obligatory URL vs URI blog entry to prove it. The link is here http://www.TheCodeCave.com/?p=93, but if you know the difference between a url and URI you don’t need to visit. This isn’t a “get visitors” stunt, but I knew people might try to explain the details to me, and I wanted to outline my thoughts on the subject and definitions before a Q&A session was started.

Now, to the meat of it all… I am speaking against the use of URI specifically in the Options form, but also in the documentation. WordPress is asking for a URI when it will not accept all valid URI. Therefore it is asking for the wrong thing.

The simple fact that WordPress it specifies *address* in the prompts for the “WordPress address (URI):” and “Blog address (URI):” is a clue that it only wants an URL.

Beyond that blogs now can have URNs (which are valid URIs). My blog, like many others, has an ASIN from Alexa. Therefore, a valid formated URI for my blog would be: ASIN:B000F1J35C. That fits the URN specification and it for now an for ever more will uniquely identify my site even after my site has long disappeared from the web. However, can I enter that into the URI field in WordPress? No, of course not. You CANNOT enter a URN into those fields, because WordPress does not want any old URI. WordPress specificially wants an URL.

My main point here, is that it is foolish to use a fancy term that new users don’t know just so that your software looks technical and geeky. This is the sort of slippery slope that you have with open source projects. Bad habits are promoted when smaller projects use a bad term or code segment that is picked up in larger projects.

WordPress should do the right thing and change the term back from URI to URL.

I see four primary reasons to do this: * URL is the language used in most professional projects. * The term URI is not known to the general computing public. * URL is more accurate in all WordPress use cases. * Some valid URIs would produce errors if entered into the URI field.

Can anyone provide any reasonings for using the less specific URI term other than “It’s the current fad.”? If not, I’d support a decision that the next major release include documentation and code changes required to replace URI with URL.

ALWAYS ALWAYS ALWAYS TRIPLE CHECK the TO address…

Well, if you’re visiting my site after my major blunder in the discussion about WP security, please feel free to leave a comment!

(No Images Please! 🙂 )

Sigh, yes during a public discussion of Word press security on a public email list, I discovered some minor holes that could be exploited under certain conditions.

So, I emailed them to very exclusive Security@Wordpress.com. This morning I wanted to provide all of the details in an update to them. So I cut and pasted the details of the attacks into an email. The result was basically a one stop shop of how to attack a website – creating admin users and stealing cookies. I made sure I had no mistakes in it and sent it off. However, I grabbed the wrong email address.

I sent it to the public mass mail list.

Sigh…. I’d intended this site to discuss security issues. Just not so openly…

So, Welcome!

If the public record can’t be cleared off of the mailing list archive, I guess we move on to discussing the best way to protect yourself.

MySQL Commands Cheat Sheet

I wanted to get a list of the tables in my MySQL database a couple weeks ago. I bookmarked on place that had a list of commands. I’m including that info here for furture reference. I’ve found dozens of copies of that list elsewhere, so I’m not gonna link to any particular site.

Check back here periodically as I add more and more commands here. There are already 5 good ones that I need to put on later tonight…but I’ve got a hot date with my wife that takes priority!

Common MySQL Commands

Description Command
Administrative
To login as root (from shell) mysql -uroot -p[password]
Create a database create database [db name];
Grant all permissions for a database to a user grant all privileges on [db name].* to ‘[user]’@’localhost’ identified by ‘[user password]’;
List all databases on the sql server. show databases;
Switch to a database. use [db name];
To see all the tables in the db. show tables;
To see database’s field formats. describe [table name];
To delete a database drop database [db name];
Dump all databases for backup.Backup file is sql commands to recreate all db’s. mysqldump --user=root --password=blah --all-databases

>/tmp/sql-01_backup.sql

Exit mysql command line quit
Queries (SELECTS)
Show all data in a table. SELECT * FROM [table name];
Count rows. SELECT COUNT(*) FROM [table name];
Show certain selected rows with the value “whatever”. SELECT * FROM [table name] WHERE [field name] = “whatever”;
Show all records containing the name “Bob” AND the phone number ‘3444444’. SELECT * FROM [table name] WHERE name = “Bob” AND phone_number = ‘3444444’;
Show all records not containing the name “Bob” AND the phone number ‘3444444’ order by the

phone_number field.

SELECT * FROM [table name] WHERE name != “Bob” AND phone_number = ‘3444444’ order by

phone_number;

Show all records starting with the letters ‘bob’ AND the phone number ‘3444444’. SELECT * FROM [table name] WHERE name like “Bob%” AND phone_number = ‘3444444’;
Use a regular expression to find records. Use “REGEXP BINARY” to force case-sensitivity. This

finds any record beginning with a.

SELECT * FROM [table name] WHERE rec RLIKE “^a$”;
Show unique records. SELECT DISTINCT [column name] FROM [table name];
Show selected records sorted in an ascending (asc) or descending (desc). SELECT [col1],[col2] FROM [table name] ORDER BY [col2] DESC;
Join tables on common columns. select lookup.illustrationid, lookup.personid,person.birthday from lookup
left join person on lookup.personid=person.personid=statement to join birthday in person table with primary

illustration id;

User Management
Switch to the mysql db. Create a new user. INSERT INTO [table name] (Host,User,Password) VALUES(‘%’,’user’,PASSWORD(‘password’));
Change a users password.(from unix shell). [mysql dir]/bin/mysqladmin -u root -h hostname.blah.org -p password

‘new-password’

Change a users password.(from MySQL prompt). SET PASSWORD FOR ‘user’@’hostname’ = PASSWORD(‘passwordhere’);
Switch to mysql db.Give user privilages for a db. INSERT INTO [table name]

(Host,Db,User,Select_priv,Insert_priv,Update_priv,Delete_priv,Create_priv,Drop_priv) VALUES

(‘%’,’db’,’user’,’Y’,’Y’,’Y’,’Y’,’Y’,’N’);

Update database permissions/privilages. FLUSH PRIVILEGES;
Table Alteration
To delete a table. drop table [table name];
Returns the columns and column information pertaining to the designated table. show columns from [table name];
To update info already in a table. UPDATE [table name] SET Select_priv = ‘Y’,Insert_priv = ‘Y’,Update_priv = ‘Y’ where

[field name] = ‘user’;

Delete a row(s) from a table. DELETE from [table name] where [field name] = ‘whatever’;
Delete a column. alter table [table name] drop column [column name];
Add a new column to db. alter table [table name] add column [new column name] varchar (20);
Change column name. alter table [table name] change [old column name] [new column name] varchar (50);
Make a unique column so you get no dupes. alter table [table name] add unique ([column name]);
Make a column bigger. alter table [table name] modify [column name] VARCHAR(3);
Delete unique from table. alter table [table name] drop index [colmn name];
Load a CSV file into a table. LOAD DATA INFILE ‘/tmp/filename.csv’ replace INTO TABLE [table name] FIELDS TERMINATED BY ‘,’ LINES

TERMINATED BY ‘\n’ (field1,field2,field3);

Create Table
Example 1.
CREATE TABLE [table name] (firstname VARCHAR(20), middleinitial VARCHAR(3), lastname

VARCHAR(35),suffix VARCHAR(3),
officeid VARCHAR(10),userid VARCHAR(15),username VARCHAR(8),email VARCHAR(35),phone VARCHAR(25), groups
VARCHAR(15),datestamp DATE,timestamp time,pgpemail VARCHAR(255));

Create Table
Example 2.
create table [table name] (personid int(50) not null auto_increment primary key,firstname

varchar(35),middlename varchar(50),lastname varchar(50) default ‘bato’);

216 colors that don’t REALLY matter any more

This table is now only good for a quick lookup of colors. For a few short years it was known as the WebSafe 216 colors. These were the colors that you were suposed to use on your website in order to GUARANTEE that your site would look exactly the same on every computer and with every browser out there. These colors were invented when everybody was only using 256 color monitors. And most monitors and video cards did not allow you to adjust the RGB values. Now however, because no one surfs in 256 color mode any more and everyones monitor contrast is set differently anyway, this color scheme is relatively useles as far as websites are concerned. That said, people STILL try to promote its use and if you are reading this article, now archived, someone probably told you the same thing.

Don’t listen. Make your site plain and simple. If you are using colors that MUST be displayed exactly right for your text to be readable, then you are doing something wrong. Contrast, to a certain extent, is a good thing.

Others, like me, might just want to look up some colors in HEX because you don’t know their official web color names. That’s why this has got a spot in the code cave. If I need a number, I follow the link at the end of this post…

BTW Color names are a myth too. I know there’s a wonderful page out there that has all sorts of colors that work in IE and some other browsers, Colors like “Dark Orange” or “Silver dew on yellow marigolds”, but that’s all a myth too. There are only 16 official web color names. Anything else is added on by the browser’s developers and who knows what color you’ll get if Use hex instead of any color name that is not: aqua, black, blue, fuchsia, gray, green, lime, maroon, navy, olive, purple, red, silver, teal, white, or yellow.

The 216 Web safe pallete color lookup table can be found here.

Now, go add some color to your life!

Lookie lookie I got a package! $400 of software!

(Editor Note: If you are trying to find how to install custom PEAR modules on 1and1.com, you actually want to go to “How to install custom PEAR modules on 1and1.com and other shared servers”. There’s more information there.- B)

Visual Studio 2005 Standard came in the mail yesterday.


Goodies.JPG

Very cool.

And it was all free: http://www.thecodecave.com/?p=55

Even cooler!

Also included was a coupon for 50% a microsoft certification package. And another coupon for $400 VS2005 professional.

Now to see if I can activate ASP.NET on a 1and1 Linux server… It looks like it is possible…
according to this article. You just need Project Monkey’s (Mono’s) mod mono package installed. Heck, it’s worth a try just because I haven’t seen any documentation about running ASP.Net on 1and1’s apache servers…

I’ve had very good luck installing everything else on 1and1 including custom PEAR modules, AWStats, PHPMyAdmin, CVS. 1and1 is a great host for technical people that can actually read instructions a see what is behind them. The ONLY negative thing I have to say about them that they play it a little too safe in their tool upgrades. For instance their MySQL databases haven’t been migrated to MySQL 5 yet. But jeez they have presences in most major countries on this planet. The bigger a company is, the slower it moves to change. That isn’t something to complain about, in the business world, it is often a good thing. I’d rather have a slow update, then have them crash my site.

Anyway, if I get it to work, I’ll post how…

“URL vs. URI” = “Caving vs. Spelunking”

aka “URL vs. URI vs. URN”
aka “What does URL stand for?”
aka “What is a URI?”
aka “What is a URN?”

A little bit ago I decided to get to the bottom of the why WordPress (and I think VBulletin) refer to URIs rather than URLs.

And it turns out that the answer is Sociology and Peer Pressure.

See, we all have the need to feel cool and knowledgeable. I suffer from this same affliction. I, too, am a self-proclaimed sciolist (look it up).

It’s a character trait/flaw I have and it is probably one of the reason I have this blog. We all want to better ourselves and get patted on the back for it. It’s human nature.

One place that this can be prominently seen is the caving world. (And YES this does related back to URL vs. URI. just be patient…) When someone first takes you caving, and you like it, you tell all of your friends about visiting a cave. If you do it a few more times, you’ll quickly label yourself a “caver”.

At that point, the caver often starts to do some reading and learns that (“ooooo!”) the scientific term is called spelunking. So, you start calling yourself a Spelunker and talking about how you so enjoy spelunking that you spelunk every chance you get and you’re a guru spelunker because you know the $10 word.

Well, as it turns out, caving by any other name does not smell so sweet. (That phrase works so much better for roses…).

Anyone with a lot of caving experience, who isn’t writing journals that have to sound pretentious in order to get funding, does not call the activity spelunking. Those that do it all the time, the dedicated hobbyists and professionals alike, don’t go spelunking. They are once again going caving. Why? Because spelunking is the word used by relatively new cave geeks.

I’ve got the impression that this whole URL vs. URI thing is following the same pattern. Only this time, URI is the term used by relatively new PHP geeks.

Here’s the low down in one sentence – URI (Uniform Resource Identifiers) are divided into two categories: URLs (Uniform Resource Locations) that describe the location of a something, and URNs (Uniform Resource Names) that identify something but don’t specify the location or method to get to it.

So, what has happened is that in the growing world of PHP whiz kids and Web 2.0 excitement where EVERYONE knows what an URL, someone learned that a URL is really just a type of URI. SO the blogged about a something using the term URI in big fancy sentences. People saw that and then said “oooo, I’m cool too! I’m gonna call these things URIs.” “URL? That’s so Web 1.0 of you!”

Back in the real world, one can almost guarantee that EVERY field you fill in, that asks for a “URI”, is asking for an address not an identifier. It’s asking for a location: a URL.

What we have in the self propogating blogosphere is all of the blogs, CMS sites, open source and public domain projects that are supported by weekend warrior coders referring to URIs because it was deemed by someone to be more correct. Meanwhile, all professionally developed products will ask for URLs. That’s because professionals know that they REALLY want to have a URL and not a URN.

They know asking for a URI is wrong if you cannot accept a URN.

They additionally know one more thing through experience. The professional DOES NOT want to make the user think. If the user has to stop their process (filling in a form or whatever) and ask themselves what the software expects them to do, the developer has failed.


Now, you might be asking yourself: OK, great – at the start of this I just wanted to know what a URI is, now what the heck is a URN????

I’ll answer that, but if you want it in geek speak, look here:

faqs.org
W3

If you want it in plainer English read on, for it is really easier to see it in examples. I can find no other place on the entire net that explains it in the detail I plan to here, so I hope this is helpful.

What is a URI? A Uniform Resource Identifier (URI) is a standardized way to explain the name and/or location name of a resource.

What is a Resource? A resource is a collection of information in any form. It could be a website. It could be a blog. It could be your mother’s 1953 Betty Crocker Cook Book. It could even be this post you are reading now. A resource does NOT have to be related to computers.

There are two types of Uniform Resource Identifier (URI): URLs and URNs.
The first type I’ll cover is the easy one: the URL. We all know that URLs are used to point to a location on the internet. What you may not also realize is that as they are telling you where on the interenet something is, they also tell your computer the method that must be used to reach that location. That’s the “http://” or “ftp://” part of an URL. It’s the part of the URL called a “scheme”.

Here are some examples of URLS with schemes:

ftp://ftp.idsoftware.com/idstuff/quake3/source/Q3A_TA_GameSource_132.exe
gopher://marvel.loc.gov/11/locis
http://www.TheCodeCave.com
mailto:Brian@thecodecave.com
news:alt.caving
telnet://melvyl.ucop.edu/

The Uniform Resource Name (URN) is the second, less common type of URI. Basically a URN is a unique code that identifies a resource. That code will ALWAYS identify the resource even after that resource no longer is available. It does not tell you where you can find that resource. It doesn’t mean that there is only one of that resource available. But if a URI is identified in a document, the reader will know EXACTLY what the author was discussing. Specification documents often have a URN. If I refer to RFC 2648, that has specific meaning. It refers to a specific “Request For Comment” held by “The Internet Society” (I’m sure I have their card in my Illuminati card deck…). If I want to put that reference in the form of an URN, that would be: urn:ietf:rfc:2648

There is a very short list of official URNs. They are:
URNs: Official (according to the RFCs):

‘ietf’, defined by [RFC 2648], URN Namespace for IETF Documents
‘pin’, defined by [RFC 3043], The Network Solutions Personal Internet Name (PIN): A URN Namespace for People and Organizations
‘issn’ defined by [RFC 3043], Using The ISSN as URN within an ISSN-URN Namespace
‘oid’ defined by [RFC 3061], A URN Namespace of Object Identifiers
‘newsml’ defined by [RFC 3085], URN Namespace for NewsML Resources
‘oasis’ defined by [RFC 3121], A URN Namespace for OASIS
‘xmlorg’ defined by [RFC 3120], A URN Namespace for XML.org
‘publicid’ defined by [RFC 3151], A URN Namespace for Public Identifiers

You may not have heard of any of those. However, there are a large number of unofficial or pending URNs that you will have heard of.

ISBN – The International Standard Book Number (http://en.wikipedia.org/wiki/ISBN) allows you to identify a book with an URN. I’ll show the URN first and then a url to get information about that resource.

Here are some example ISBN:

URN:ISBN: 1-5562-2637-3 identifies this book (not the website) Advanced Graphics and Game Programming in Delphi
URN:ISBN:1-5920-0733-3 identifies this book (not the site): Advanced 3d Game programming All in One

Digital Object Identifier (DOI) Read about this one here: http://www.doi.org/ and here: http://en.wikipedia.org/wiki/Digital_object_identifier

ALEXA’s ASIN: Amazon has its own code that will probably never become an officially adopted URN, however it is common on the internet as it is now used to rate websites through Alexa. ASIN stands for Amazon Standard Identification Number. Almost every product on our site has its own ASIN–a unique code we use to identify it. For books, the ASIN is the same as the ISBN number, but for all other products a new ASIN is created when the item is uploaded to our catalogue. Read more: http://en.wikipedia.org/wiki/ASIN &
What is an ASIN?

Here are some example ASIN:

URN:ASIN:B000F2CVYG
URI that is an the URL containing the URN: in this link
URN:ASIN:B000F1J35C
URI that is an the URL containing the URN: in this link

Did you know that songs also have unofficial URNs:

ISRC International Standard Recording Code
ISRC:USPR37300012 – The song “Love’s Theme”, from US’s “The Love Unlimited Orchestra”.
ISRC:BRBMG0300729 – The song “Enquanto Houver Sol”, from the Brazilian group “TitĂŁs”

I think that should make it all clear, but feel free to ask any question you might in the comments. And if you use this info anywhere, please refer back to The Code Cave.


So, back to WordPress and it’s prompt for a URI. It should be clear at this point that when it is asking for the “WordPress address (URI):”. It will not and DOES not accept any old URI. In fact, it will ONLY accept an URL. And THAT’S what it should ask for. But then we wouldn’t have thousands of people blogging about the differences between a URL and a URI would we?

The other Code Cave

Greetz!

This is a support article for my (soon-to-be) new About page. It explains one meaning of a “Code Cave”. It also shows you how to use a Code Cave that was left in Notepad to hack in some new functionality.

You can (soon EDIT: OK, I guess I lied -b) see the about page for an even better description of a Code Cave. I’ll summarize here by saying that taking advantage of a code cave is just one method commonly used by gamers to get past anti-cheat/PunkBuster measures in multiplayer games like Quake I-IV, Return to Castle Wolfenstein, Call of Duty and others.

This site is not going to get into hacking very much. I’ll probably just explain a few website vulnerabilities, just because they are cool and the fact that other sites published them has taught me how to write good code – and that IS a subject covered by this site. So, here is the OTHER meaning of a Code Cave and why I get some stray hits from people searching Google for hacking tools!

NOTE: if you do look for original versions of this article, be aware that:

  • it is full of MS html spam
  • the files it links to are infected with a virus
  • I also censored the language so I could keep my General Audience/Safe for kids rating on my site.
  • the files some how download from the link even though you hit cancel. I wouldn’t have believed it if I hadn’t seen it myself. I am CERTAIN I hit cancel because I didn’t get a save as dialog even though the infected file appeared in my internet cache.

That’s just a BIT bothersome. So, you might want to avoid it all together.

Continue reading The other Code Cave

The Islamic Muslim rational for web censorship

I’m making this a different post from Web censorship in Saudi Arabia because it more has to deal with differences in the Qur’an and the Bible than SA’s take on censorship.

Usefulness of Filtering:

God Almighty directed humanity in the Nobel Qur’an in the words of His prophet Joseph: “He said: My Lord, prison is more beloved to me than that to which they entice me, and were you not to divert their plot away from me I will be drawn towards them and be of the ignorant. So his Lord answered him and diverted their plot away from him, truly, He is the All-Hearer, the All-Knower” Yusuf(12):33-34

This reasoning Seems to be the basic “If your eye offends you, pluck it out” logic extended to include “If your neighbor’s eye might offend him, pluck it out.” That may sound harsh, but there is a certain logic to it. If it is certainly better for you yourself to get to heaven with 1 eye than with none at all, wouldn’t the choice be the same for a loved neighbor? It takes a first party statement and moves it to third party. The side effect however is that with this specific verse as the example, it specifically has the state of Saudi Arabia taking on the place Allah in its people’s lives. In the Bible, though Christians are told to give unto Czar what is Czar’s, the government taking on the role of God is not supported. In fact the protestent and anabaptists movements were both started in part because the Church was taking on the role of God.

Though Saudi Arabia’s internet service also provides secular reasoning based upon scientific research done in the United States, their actions are based, religiously, upon two verses of the 12th chapter of the Qur’an. That Chapter/Book is called Yusuf.

Yusuf largely parallels the story of Joseph from Genesis 37 & 39 with, from my perspective, a few twists, details, motivations and editorials added in. Christian and agnostics alike will probably recognize the story as that of “Joseph and the coat of many colors” (or the Joseph and Technicolor dream coat if you only know of the Bible through Broadway Musicals).
Continue reading The Islamic Muslim rational for web censorship

Web censorship in Saudi Arabia

An exausting but good day…Yeesh… just got a chance to breath. was supposed to make some phone calls when I got home tonight but after getting the kids in bed it was too late.

I just checked the logs at on my wife’s site Knitchat.com and she’s had another incredible day. four days ago, she shot up from an average of 850 unique hits (using the most generous of three unique hit log analyzers) to 5995. The past couple days she’s been up at 1300. So, whatever happenned, it seems to have stuck.

A large number of the hits are from Saudi Arabia. That, to me, at first screamed “anonimizer proxy”. There are many services that will give you fake IPs from all around the world, but I can find no trace, so far, that these are not legit people. I guess I need to get the actually times and IPs of the visitors and see if they are at regular intervals or something, but without digging straight into the logs, this all looks legit.

Anyway, I went over to the website that the various SA addresses resoved to and it was this www.ISU.NET.SA the main internet service provider for Saudi Arabia.

I thought I would share some of their views on the internet with you:
http://www.isu.net.sa/saudi-internet/contenet-filtring/filtring.htm

Introduction to Content Filtering
What is this service?:

The Internet Services Unit oversees and implements the filtration of web pages in order to block those pages of an offensive or harmful nature to the society, and which violate the tenants of the Islamic religion or societal norms. This service is offered in fulfillment of the directions of the government of Saudi Arabia and under the direction of the Permanent Security Committee chaired by the Ministry of the Interior.

Types of Materials Blocked:

The types of materials which the ISU is directed to block are few, most noteworthy among them are pornographic web pages which consist of 95% of all blocked web pages. As for the other categories, they consist mainly of pages related to drugs, bombs, alcohol, gambling and pages insulting the Islamic religion or the Saudi laws and regulations.

How are they filtered?:

KACST maintains a central log and specialized proxy equipment, which processes all page requests from within the country and compares them to a black list of banned sites. If the requested page is included in the black list then it is dropped, otherwise it is executed, then the request is archived. These black lists are purchased from commercial companies and renewed on a continuous basis throughout the year. This commercial list is then enhanced with various sites added locally by trained staff.

Performance:
The difference between filtered and unfiltered web page retrieval reaches on average no more than half a second, which is too miniscule a timeframe for most humans to perceive.

Usefulness of Filtering:

God Almighty directed humanity in the Nobel Qur’an in the words of His prophet Joseph: “He said: My Lord, prison is more beloved to me than that to which they entice me, and were you not to divert their plot away from me I will be drawn towards them and be of the ignorant. So his Lord answered him and diverted their plot away from him, truly, He is the All-Hearer, the All-Knower” Yusuf(12):33-34

Confirmation from modern scientific studies:

In a study by Cass Sunstein in the Duke Law Journal it was found that countries which impose strict laws relating to prevention of pornography enjoy a reduction in the rate of rape and murder and vice versa. Similarly, in a study conducted by the Attorney General’s Commission on Pornography and another conducted by the University of New Hampshire it was found that those states trafficking most heavily in pornography saw a similar increase in the rate of rape. Specifically, Alaska and Nevada were the two states with the highest rates of pornographic materials (five times that of other states), accompanied by a similar increase in rape activity (eight times that of other states).

Interesting…
You may now discuss the aspects ethics of National Internet Censorship…