How To Swap Caps Lock, Alt, Control Keys On Windows

Perm url with updates: http://xahlee.org/mswin/autohotkey_swap_capslock.html

How to Swap Caps Lock, Alt, Control Keys On Windows

Xah Lee, 2010-02-27

This page is a little Windows utility that lets you swap the Alt and Control keys, or make the Caps Lock into a Control key, for Microsoft Windows.

Use the Paypal button below and pay $3. In the Paypal description field, put “swap Alt and Ctrl”. And i'll pass you the location to download as soon as i got your email. Please be sure to include your correct email address.

I can be contacted at xah@xahlee.org.

The code is licensed by GNU General Public License.

Web Browser Market Share 2010-02

Perm url with updates: http://xahlee.org/js/browser_market_share.html

Web Browser Market Share 2010-02

Xah Lee, 2010-03-13

This page is a report on web browser market share, based on traffic of xahlee.org in the past 30 days. (of 240k visits, 683k page views). Stat source is Google Analytics.

web browser market share 2010-03

web browser market share 2010-03.

Basically, Firefox and IE together eat 73% of the pie. Firefox has slight lead over IE.

Chrome and Safari competes head to head, each taking about 10%. Opera remains the ugly duck in the 2% range. Opera has been like that in the past decade. (Opera's marketing people are rather idiots.)

Here's a similar stat from w3schools.com:


For historical trends and future trends with more comprehensive report, see: Browser war and Usage share of web browsers..

Internet Explorer Market Share by IE Versions

It's interesting to look at what versions is IE.

web browser market share IE 2010-03

Market share of IE versions.

We see that majority (52%) has switched to IE 8 (released in 2009). A 30% are still with IE 7 (released in 2006). Most interesting, is that a whopping 17% is stuck with IE 6, released in 2001!

Who Are Using IE 6?

So, who are using IE 6?? Looks like IE 6 is the top browser in China and Korea:

Though, my xahlee.org's visitors are mostly from English speaking countries, mostly US, then Euro, India. So, this must mean that there are still lots people using IE 6 in US.

Note that Google recently announced stopping support for IE 6, see: googleenterprise.blogspot.com.

Firefox Version Breakdown

92%3.5 or 3.6

OS Breakdown


Here's the stat from w3schools.com:


Apparently, my website has twice the number of Mac users, and also twice the number of Linux users, than visitors of w3schools.com. This makes sense because half of my site's content is dedicated to programing on unix/linux, and i use mac in the past 20 years.

According to more generic stat sites, e.g. statcounter.com or w3counter.com, Linux use is less than 2%, Mac is 5% to 8%.

Javascript, Flash, Java


Here's the percent people who has javascript off, from w3schools.com:

DateJavaScript Off

Note that don't have info for 2009 or 2010. Some web search indicates that 2% don't have js on today.


Wikipedia quote:

... General web stat estimates 95%, while Adobe claims 98% to 99.3%...

Here's stats from statowl.com:

PluginPast 6 Month Average
(2009-09 to 2001-02)
Flash Support96.43%
Java Support81.17%
Windows Media Player Support72.02%
Quicktime Support62.92%
SilverLight Support39.02%


From xahlee.org, 86.27% has Java (13.73% doesn't).

Server Stats

For stat report on servers and hosting services, see: netcraft.com.


CSS Tag Matching Tutorial

Perm url with updates: http://xahlee.org/js/css_tag_matching.html

CSS Tag Matching (Selector) Syntax

Xah Lee, 2010-03-12

This page is a basic tutorial on CSS tag matching syntax.

Common Examples

Matching Standard Tags

Some common examples of setting appearance for common tags.

body {font-family:sans-serif}
h1,h2,h3,h4,h5,h6 {font-family:serif}

p {line-height:130%}
blockquote {color:#00007b}
img {margin-bottom:1px; margin-right:1px}
hr {clear:both}

Matching A Class

/* matches any div of class “xyz”*/
div.xyz {color:red}

/* matches any span of class “b”*/
span.b {font-weight:bold}

Matching a Tag's ID

/* matches any div with id of “xyz”*/
div#xyz {color:red}

Note: a tag's id should be unique on a page. A page cannot have two tags having the same id.

Change Link Rendering

Example of taking out the standard underline in links.

a:link:active {text-decoration:none}
a:link:hover {text-decoration:none}
a:visited:hover {text-decoration:none}
a:visited {text-decoration:none}
a:link {text-decoration:none}

Possible value for “text-decoration” are:


Multiple Tags A, B, C

If you have multiple tags and want them all to have the same rendering, you can comma to save space. For example, this:

span.x {font-weight:bold}
span.y {font-weight:bold}
span.z {font-weight:bold}

can be written like this:

span.x, span.y, span.z {font-weight:bold}

Parent > Child

Sometimes you want to match a tag only if they are inside other tag. You can use the “>” to specify a parent-child relationship.

Here's a example:

/* computer language source code coloring */
pre > span.comment {color:#b22222}
pre > span.string {color:#bc8f8f}
pre > span.keyword {color:#a020f0}
pre > span.type {color:#228b22}
pre > span.variable-name {color:#b8860b}

In the above example, those “span” tags will match only if they are inside a “pre” tag.

General Syntax

*Matches any element.
EMatches any E element.
E FMatches any F element that is a descendant of an E element
E > FMatches any F element that is a (immediate) child of an element E.
E:first-childMatches element E when E is the first child of its parent.
Matches links, visited links, or mouse hovers etc..
E:lang(c)Matches element of type E if it is in (human) language c (the document language specifies how language is determined).
E + FMatches any F element immediately preceded by an element E. Adjacent selectors
E[foo]Matches any E element with the “foo” attribute set (whatever the value).
E[foo="warning"]Matches any E element whose “foo” attribute value is exactly equal to “warning”.
E[foo~="warning"]Matches any E element whose “foo” attribute value is a list of space-separated values, one of which is exactly equal to “warning”.
E[lang|="en"]Matches any E element whose “lang” attribute has a hyphen-separated list of values beginning (from the left) with “en”.
DIV.warningHTML only. The same as DIV[class~="warning"].
E#myidMatches any E element whose value of ID attribute equal to “myid”.


Mac OS X Resource Fork and Command Line Tips

Perm url with updates: http://xahlee.org/UnixResource_dir/macosx.html

Mac OS X Resource Fork and Command Line Tips

Xah Lee, 2003, 2007, 2010-03-07, 2010-04-25

This document contains some tips and info related to Mac OS X's command line tools on things specific to the Mac. For example, those dealing with file type/creator, resource forks, launching GUI apps, put system to sleep, etc.

The info on this page is tested on Mac OS X 10.4.x and OS X 10.6.x.

Resource Fork

What's a resource fork?

Resource fork is a feature of the Mac's file system HFS Plus, and older file systems used by Mac such as HFS and “Macintosh file system”. A file's main data has 2 parts: data fork, and resource fork. The data fork is the file's main content, the resource fork stores some extra data such as icon, version number, embedded images, and much more. Sometimes data in resource fork contains main content of the file. For example, Quick Time movie files used to store main movie data in the resource fork. Some image application still store thumbnail of jpg files in resource fork.

In Mac OS X, data files is not suppose to use resource forks, so that Mac's files is compatible with other OS, however, program executable files such as those “.app” may still need the resource fork intact to work, and many programs including Apple's still creates resource fork as of 2010-07. (for example, see: Safari “.webloc” File)

For detail, see: Resource fork, HFS Plus file system.

How to use the command line to find out if a file has resource fork?

Use the “ls -l” command with “/rsrc” suffixed to the file name. For example, if “27.png” is your file, and you want to know if it has resource fork, do ls -l 27.png/rsrc. If the reported file size is 0, then it has no resource fork. Here's a command line log as a example:

$ ls -l 27.png 
-rwxrwxrwx    1 xah      staff     3184339 Jun 26  2001 27.png
$ ls -l 27.png/rsrc
-rwxrwxrwx    1 xah      staff       87410 Jun 26  2001 27.png/rsrc

The file size reported by the unix command “ls”, does it count resource fork?

No. (but if you append your file name with “/rsrc”, then “ls” will report the resource fork's file size.)

How to delete a file's resource fork using command line?

You can overwrite it with a empty file. Suppose you want to delete resource fork in “27.png”. Do like this:

cp /dev/null 27.jpg/rsrc

See also: Perl Script for Removing Mac Resource Fork.

How to delete a file properly (including resource fork) using the command line?

Using “/bin/rm” is probably doing the right thing. To be safe, one can delete the resource fork first than rm the file. Example:

cp /dev/null myhouse.jpg/rsrc && rm myhouse.jpg

When using get info in Finder, it reports file size by two numbers, e.g. “592KB on disk (601,189 bytes)”. What's these two figures exactly? and does KB mean 1024 bytes or 1000 bytes? Does either count the resource fork?

The one in parenthesis is the actual file size (counting the resource fork). The one not in paren is the disk space it occupies, and the M and K abbreviations are multiples of 1024.

alice.jpg (has resource fork)584 KB on disk, (595,041 bytes)484995
alice2.jpg (no resource fork)476 KB on disk, (484,995 bytes)484995

Does “cp” command copy resource fork?

Yes, as of Mac OS X 10.4

How to view resource?

Look at “/Developer/Tools/DeRez”. As of OS X 10.6, most of it is now in “/usr/bin/”. Read “man DeRez”.

File Type/Creator

File Type and Creator

What's a File Type/Creator code?

In Windows, file names has a suffix , such as “.txt”, “.jpg”, “.bat”, “.dll”, that indicates what types is the file, and what application is used when user tries to open them. (see: filename extension)

In Mac, the type of file and the application associated with the file is stored with the file in the file system. This is the file type and creator code. (See: Type code and Creator code. )

In Mac OS X, the use of file type and creator code is discouraged and is no longer supported starting with Mac OS X 10.6 Snow Leopard (2009).

Is file type and creator stored in resource fork?

No. File type/creator info is stored in the metadata that HFS/HFS+ (file systems) support, along with lock/unlock status, the flag that says whether there's a custom icon, date/time created/modified, etc.

The file type/creator info, and any resource fork, are both lost when transferring the file to other OS without care. When using unix command line utils (cp, tar, gz, ...), whether these data are kept depends on which command you are using. Also, each version of OS X, Apple updates some command line tools so that they preserve these data.

How to find out a file's type and creator code using the command line?

Use “/Developer/Tools/GetFileInfo”. e.g.

/Developer/Tools/GetFileInfo -c file.jpg
/Developer/Tools/GetFileInfo -t file.jpg

The “-c” is for creator code, the “-t” is for file type code.

This tool is available on the Developers tools CD that came with Mac OS X at least 10.1 up to 10.4. Later version of OS X may have it installed by default.

GetFileInfo man page

How to change a file's type and creator code using the command line?

Use the tool “/Developer/Tools/SetFile”. Like this:

/Developer/Tools/SetFile -type 'GSPb' -creator 'GSP+' myFile.gsp

SetFile man page

If you want to set it to a bunch of files in dir, you can do it like this:

find . -name "*\.gsp" -print0 | xargs -0 -l -i /Developer/Tools/SetFile -type 'GSPb' -creator 'GSP+' "{}"

In the above example, all file in the current dir and all sub dir, whose name ends in “.gsp”, will now have a creator code of “GSP+” and file type code of “GSPb”.

File Compression with Meta data

How to create a zip file that preserves Mac meta data?

For 10.6.x, in Finder, right click on a file and pull the menu “Compress ‹name›”. This will create a zip file with all meta data preserved.

In 10.4.x, the menu is “Create Archive of ‹folder name›”. The command line equivalent is: ditto -ck --sequesterRsrc --keepParent myFolder myFolder.zip.

The above method puts the resource forks and HFS meta-data into a subdirectory “__MACOSX__”. You may just want to use this instead: ditto -ck --rsrc --keepParent myFolder myFolder.zip.

ditto man page

Note: Mac OS X 10.5 changed the tool it uses for dealing with zip files. Its new compression tool is The Unarchiver. For detail, seeArchive Utility (aka BOMArchiveHelper).

How to unpack a zip file that has Mac meta data?

In Finder, double click on a file. The command line equivalent is ditto -xk myFolder.zip myFolder.

Does the command line program “zip” and “unzip” understand metadata?

No, as of Mac OS X 10.6.2. The command line tools at “/usr/bin/zip” and “/usr/bin/unzip” do not understand Mac meta data.

Using command line zip will simply create a archive without Mac metadata. Using unzip to unzip a zipped folder that has Mac metadata, will create a extraneous directory “__MACOSX__” and or extraneous files with names prefixed by “.”.

zip man page

Does tar, gzip, gunzip understand Mac metadata?

On OS X 10.6.3, tar, gzip, gunzip, will preserve resource fork. On OS X 10.4, no. I haven't tested whether 10.6 preserves file creater and type code, but probably yes.

Note that if you want to preserve resource fork, you must use the version supplied with the Mac 10.6.x, at “/usr/bin”. This means if you have installed GNU's version, remeber to start you command with full path if you still want resource fork.

Also, if you unzip and untar using a version that does not understand resources, your resources will be lost.

For example, you can do “tar cvf myfolder.tar myfolder”. This will result a new file named “tar cvf myfolder.tar”. This file itself will have no resource fork. All the resources are embedded in the file. Now, move the tar file to a new dir, untar it by “tar xvf myfolder.tar”. The result dir's files will still have resource fork.

Also, it appears that, whether tar, gzip, gzip understand resource fork depends on a undocumented environment variable. For OS X 10.4, this variable is COPY_EXTENDED_ATTRIBUTES_DISABLE. It can be set to “true” or “false”, but in OS X 10.5, this variable changed name to COPYFILE_DISABLE. This info is from: Resource forks and tar (2008-02), by Norman Walsh at Source. I have not verified it.

Do you have a folder with Mac metadata i can download and test?

Yes. download this file: macosx_metadata_test.zip. After download, do not use “/usr/bin/unzip” to decompress it, because that would lose the meta data. Use this instead:

ditto -xk macosx_metadata_test.zip  macosx_metadata_test

What's “.dmg” File? How to creat it with command line?


Thanks to Mark Reed, Kris Gybels, for some corrections on the zip utility.


How To Be A Online Ad Publisher (Learning Notes)

Perm url with updates: http://xahlee.org/js/online_advertising.html

How To Be A Online Ad Publisher (Monetize Your Website)

Xah Lee, 2010-03-08

My website xahlee.org is reported to have some $44 ad revenue per day. That's $1.3k per month, or 16k a year. A reasonable income. So, in the past few days i started looking into the online advertising business, in hope to generate income to pay rent.

Here's some random learning notes about going into the ad publishing business.

Ad Services For Publishers

Here's some of services for publishers who wishes to make money thru ads. Some i've applied, some i'm using now, most i haven't tried.

Here's some advice and list of ad services from a blogger Darren Rowse who became wealthy by blogging:

  • How I Make Money from Blogs – My Top Earners (2007-02-08) Source
  • How To Make Money Blogging, Darren. Source

Here's a more that i've found. Though, becareful of scams. Most of these i haven't much verified.

What's the Difference between AdWords and AdSense

Google's AdWords is for advertisers. AdSense is for ad publishers. So, if you have something to advertise, you can use the AdWords service. You pay. If you run a website, you can use AdSense. You get paid.

What's Affiliate Program?

A affiliate program is is a relation between you and a company, where both benefits. In essence, you two are affiliates, associates, a type of partnership. You earn money by advertising products or services for that particular company.

A company has a need to advertise, for selling their products or services. They can work with publisher in 2 ways: (1) Pay publisher to advertise. (2) have the publisher sale items for them.

You as a blog writer, is a publisher. You can for example put links on your page to Amazon's products. So, when readers read your blog and ends up buying stuff on Amazon, Amazon makes money, and you earn a percentage of the sale (called commission). The connection between you, and the company Amazon, is called a affiliate program.

Here's another example. There are web hosting companies who sell the services of web hosting. If you write web development articles, your reader are probably interested in web hosting themselves. So, you can apply for a affiliate program with your web hosting company, so that you can put links to them on your site. When the web hosting company gets a new customer thru your link, you make money.

Selling advertising space, and being a Affiliate to sell something on a website, are similar. Which to use depends. When selling advertising space, you usually don't have any connection with the company who advertises. When being in a affiliate program, you are like a salesman for that company.

Amazon.com is the most well known example of having a affiliate program. Amazon doesn't have much need to advertise, because they are well known already. What they need is to sell things. That's where you come in.

How is Ad Pricing Calculated

Cost Per Impression (CPI and CPM)

The most simple and common is Cost Per Impression, usually as a dollar amount given in unit of Cost per mille (mille is latin for Thousand).

It means, how much the advertiser pay to place a ad on your page is dependant on how many times your page is viewed.

Usually, the pricing is quoted by dollar per 1k page impression. For example, “$5 per 1000 impression” means, for each 1000 times your page is viewed, they pay you $5. If a page that has page view of 1k per month, then they pay you $5 per month. If that page has 1k views per day, then the rate is $5 per day.

Note, there are some confusions on the web about CPI vs CPM. The basic idea is that, the ad pricing is simply based on how many time the ad is shown. If you go by cost per “impression”, the amount is a fraction of a cent, and hard to read. So, they usually multiply it by one thousand, and have Cost Per “Mille”. The use of the latin word “Mille” for Thousand is unfortunate, because it could mean million. Also, some quotes about CPM is really CPI, and CPI is really CPM. Pretty bad. One easy way to tell is that, if the amount is something like USD $0.0005, then it's really CPI. If it's 50 cents, or 1 dollar, or 5 dollars, it's CPM. Multiply CPI figure by 1000 to get CPM.

What's A Impression?

Page view, or sometimes called Page Impression, is the number of times your page is being viewed. Note that this is different from Hit, which in general counts all the images or other stuff on that page. So, if a user visit your page, you got 1 page view. However, there might be 10 page hits, because that page may have 10 images on it, or style sheets files, javascript files, etc.

The word “hit” as in “hit counter” was popular in the late 1990s, due to primitive web tech of the time. At those times, Web server has simple web logs, that can tell you how many times each file is accessed. File includes all images files. It is simple, and common, back then, to sum all the access count for all files in a site. So, they might say, site example.com has one million hits. Also, a html file may be refreshed many times, or accessed by bots. So, that bloats up the dumb hit count. Today, a more proper count is Page View. When you mean Page View, don't say “hit”.

Cost Per Click Thru (CPC) ...

There are quite a few other schemes. One common charge model is Cost Per Click, meaning, the advertiser pays you depending on how many times viewer actually clicked their ad.

The technology for calculating these alternative model's count gets complicated. Note there's Click fraud, which is hard to battle unless you have sophisticated tracking tech, which may need to be installed on both your web server and the advertiser's web server.

A interesting tidbit is the Click Through Rate. It is the frequency a ad is being clicked. The figure today is roughly 0.2% to 0.3%. Meaning, 2 or 3 clicks per thousand times the ad is shown. howstuffworks notes that a typical side banner CTR is 1%.

Of course, click thru rate depends on quite a few things and can vary a lot. Size and position of banner ads matters. Flash ads, floating ads, or other more novel and intrusive ads also tend to get higher click thru rate. Relevance of the ad to the page's content is also important.

Effective CPM (eCPM)

There is a term called eCPM, which is abbreviation for Effective CPM. When the advertising cost scheme requires complicatded technology, such as Cost Per Click, usually advertisers likes to know how that rate translates to CPM (cost per thousand impression). So, that is what eCPM is.

For example, Google's AdWords uses Cost Per Click to charge advertisers. If you are a advertiser, you would like to know, how that rate translates to CPM. You like to know that because CPM is simple, and lots other publisher sites uses that. So, knowing CPM, you can compare how much Google is charging you.

How Much To Charge

Here's a graph of CPM rate in 2009.


A graph from a study published by Adify Vertical Gauge Report, Q3 2009 Source

Why Rates Are So Different?

Note that it varies a lot. Different advertising markets has different rates. For example, the market rate of for real estate ad prices would be high, while for food is low.

Also, CPM varies a lot within a market too, because the effectiveness of a ad depends on the placement, and whether it is text link or banner ad or more fancy and intrusive Flash ad or floating ad or pop up ad.

Also, the relation of a ad and the site content matters too. If a site's audience is college professors, then ad for computer games there will not be very effective. If you place a college teacher jobs board ad in a gaming site, likewise it'd be useless. So, contextual ads tends to have higher price tag.

Another reason for the big difference of CPM is the market. If there are far more advertisers and little publishers, that'd drive the ad rate high. Likewise, if there's too many publishers, and much fewer advertisers, the ad prices would be low.

The big ad service sites such as Google's AdWords, all based their rates on some automatically computed bid system.

I don't think here's a magic formula for your site on how much to charge. It depends on lots of factors, but also, depends a lot on negotiation between you and the advertiser. Put it differently, part of it depends on your sales skill. Negotiation is big part of any business.

Rates For xahlee.org

The daily ad revenue for my site is reported by various site worth reporting sites. The figure reported by them vary quite a bit. Some says $16, some say $30, some say $45.

My site has 671k page views last month. (see: XahLee.org Web Traffic Report) Looking back on stat in the past month and year, my site roughly get anywhere from 400k to 1700k page views. Let's assume 500k page view per month. Then, charging $5 per 1k page view gets $5k per month. That seems too optimistic. Let's say $2 per 1k page view, then that's $1k per month income, or ~$33 per day. That seems realistic.

Standard Banner Sizes

The banner sizes seems to have gravitated into some standard sizes. For detail, see: File:Standard web banner ad sizes.svg.

References and Further Readings

If you are completely new to this area, you might want to first check out Darren Rowse's page: http://www.problogger.net/.

Darren was a random joe blog writer, but is makes more than $100k a year thru his blogs by advertising. One of his primary blog, the problogger.net, is dedicated to the subject of making money from blogs. I learned tremendously from his writings.

There are huge number of Search engine optimization (SEO) sites today. I thought SEO is a fad, but apparently, the online advertising is a huge business, and consequently, important part of economy. The bottom line of all these so called SEOs, is about money. Basically, the more traffic, the more ad revenue, the more money. Many of these, or most, are questionable. For example, quality content of a site usually isn't the focus of SEOs. Most of these concerns about SEO is too much marketing, too little substance. (my website, xahlee.org, is too much substance, no marketing.)

So, to learn stuff about marketing of sites, you need to be careful where you read. Many search results on online advertising is also old, like from 10 years ago.

A People's History of American Empire by Howard Zinn

Perm url with updates: http://xahlee.org/Periodic_dosage_dir/history_of_american_empire_Howard_Zinn.html

A People's History of American Empire by Howard Zinn

Xah Lee, 2010-03-08

A People's History of American Empire by Howard Zinn

Howard Zinn (1922-2010) was an American historian. He wrote more than 20 books, which included his best-selling and influential A People's History of the United States. He started life in the army air force as a bomber in World War 2.

The vid poster has this editorial info about the film:

Empire or Humanity?
What the Classroom Didn't Teach Me about the American Empire
by Howard Zinn
Narrated by Viggo Mortensen
Art by Mike Konopacki
Video editing by Eric Wold


I Met the Walrus (John Lennon)

Perm url with updates: http://xahlee.org/arts/i_met_the_walrus_John_Lennon.html

I Met the Walrus (John Lennon)

Xah Recommends:
Amazon Kindle. Read books under the sun. Review

Xah Lee, 2010-03-08

I Met the Walrus

Quote from Wikipedia I Met the Walrus:

I Met the Walrus is an animated film directed by Josh Raskin and produced by Jerry Levitan. The film stars Levitan and John Lennon. The film's pen illustration is by James Braithwaite and computer illustration is by Alex Kurina.[1]

The film is based on an interview of John Lennon by Jerry Levitan in 1969. Levitan, then 14 years old, tracked Lennon to his hotel room at Toronto's King Edward Hotel after hearing a rumour that Lennon had been sighted at the Toronto Airport. Jerry inveigled his way into John Lennon's suite and conducted an interview. The animation is based on Levitan's recording of the interview, which was edited down to 5 minutes. Josh Raskin's focus was on the interview itself. "I just wanted to literally animate the words, unfurling in the way I imagined they would appear inside the head of a baffled 14-year-old boy interviewing his idol."[2]

The film was created in 2006-2007 at the Electric Company, a Toronto animation company. The film premiered March 22nd, 2007 at This is London, a Toronto nightclub. Since then, the film has appeared at numerous film festivals. The film has won several awards including a 2009 Daytime Emmy in the New Approaches, Daytime Entertainment category[3], Best Animated Short awards for the American Film Institute[4] and the Middle East International Film Festival. The film was nominated for an Oscar by the Academy of Motion Picture Arts and Sciences.[5]

About John Lennon


While annotating David Bowie's song lyrics Life on Mars, i read Wikipedia on John Lennon (1940-1980), i learned that in his time he had a decade-long, widely publicized, major conflict with the US government regarding his deportation as means to silence his anti-war activities in US, and that he is murdered. Here's some selected quotes from Wikipedia:

In 1976, Lennon's U.S. immigration status was finally resolved favourably, after a years-long battle with the Nixon administration that included an FBI investigation — a full-scale effort involving surveillance, wiretaps, and agents following Lennon around as he travelled. Lennon insisted that the investigation was politically motivated, a claim that was later proven true.

Nixon left the White House after the Watergate scandal, and Lennon won his green card in 1975. After Lennon’s murder, historian Jon Wiener filed a Freedom of Information request for FBI files on Lennon. The FBI admitted it had 281 pages of files on Lennon, but refused to release most of them, claiming they were national security documents. In 1983, Wiener sued the FBI with the help of the American Civil Liberties Union of Southern California. The case went to the Supreme Court before the FBI settled in 1997 — releasing all but ten of the contested documents.[125][126] The story is told in the documentary The U.S. vs. John Lennon, by David Leaf and John Scheinfeld, released in theatres in September 2006 and on DVD in February 2007. The final ten documents in Lennon's FBI file were finally released in December 2006.[127] and are available on the web.[128]

US vs John Lennon

〈The U.S. vs. John Lennon〉 DVD amazon

Lennon is a true folk hero of humanity.

Was this page useful? If so, please do donate $3, thank you donors!