time = time(); $this->startSession(); } /** * startSession - Performs all the actions necessary to * initialize this session object. Tries to determine if the * the user has logged in already, and sets the variables * accordingly. Also takes advantage of this page load to * update the active visitors tables. */ function startSession(){ global $database; //The database connection session_start(); //Tell PHP to start the session /* Determine if user is logged in */ $this->logged_in = $this->checkLogin(); /** * Set guest value to users not logged in, and update * active guests table accordingly. */ if(!$this->logged_in){ $this->username = $_SESSION['username'] = GUEST_NAME; $this->userlevel = GUEST_LEVEL; $database->addActiveGuest($_SERVER['REMOTE_ADDR'], $this->time); } /* Update users last active timestamp */ else{ $database->addActiveUser($this->username, $this->time); } /* Remove inactive visitors from database */ $database->removeInactiveUsers(); $database->removeInactiveGuests(); /* Set referrer page */ if(isset($_SESSION['url'])){ $this->referrer = $_SESSION['url']; }else{ $this->referrer = "/"; } /* Set current url */ $this->url = $_SESSION['url'] = $_SERVER['PHP_SELF']; } /** * checkLogin - Checks if the user has already previously * logged in, and a session with the user has already been * established. Also checks to see if user has been remembered. * If so, the database is queried to make sure of the user's * authenticity. Returns true if the user has logged in. */ function checkLogin(){ global $database; //The database connection /* Check if user has been remembered */ if(isset($_COOKIE['cookname']) && isset($_COOKIE['cookid'])){ $this->username = $_SESSION['username'] = $_COOKIE['cookname']; $this->userid = $_SESSION['userid'] = $_COOKIE['cookid']; } /* Username and userid have been set and not guest */ if(isset($_SESSION['username']) && isset($_SESSION['userid']) && $_SESSION['username'] != GUEST_NAME){ /* Confirm that username and userid are valid */ if($database->confirmUserID($_SESSION['username'], $_SESSION['userid']) != 0){ /* Variables are incorrect, user not logged in */ unset($_SESSION['username']); unset($_SESSION['userid']); return false; } /* User is logged in, set class variables */ $this->userinfo = $database->getUserInfo($_SESSION['username']); $this->username = $this->userinfo['username']; $this->userid = $this->userinfo['userid']; $this->userlevel = $this->userinfo['userlevel']; return true; } /* User not logged in */ else{ return false; } } /** * login - The user has submitted his username and password * through the login form, this function checks the authenticity * of that information in the database and creates the session. * Effectively logging in the user if all goes well. */ function login($subuser, $subpass, $subremember){ global $database, $form; //The database and form object /* Username error checking */ $field = "user"; //Use field name for username if(!$subuser || strlen($subuser = trim($subuser)) == 0){ $form->setError($field, "* Username not entered"); } else{ /* Check if username is not alphanumeric */ if(!eregi("^([0-9a-z])*$", $subuser)){ $form->setError($field, "* only letters and numbers allowed and no spaces"); } } /* Password error checking */ $field = "pass"; //Use field name for password if(!$subpass){ $form->setError($field, "* Password not entered"); } /* Return if form errors exist */ if($form->num_errors > 0){ return false; } /* Checks that username is in database and password is correct */ $subuser = stripslashes($subuser); $result = $database->confirmUserPass($subuser, md5($subpass)); /* Check error codes */ if($result == 1){ $field = "user"; $form->setError($field, "* Username not found"); } else if($result == 2){ $field = "pass"; $form->setError($field, "* Invalid password"); } /* Return if form errors exist */ if($form->num_errors > 0){ return false; } /* Username and password correct, register session variables */ $this->userinfo = $database->getUserInfo($subuser); $this->username = $_SESSION['username'] = $this->userinfo['username']; $this->userid = $_SESSION['userid'] = $this->generateRandID(); $this->userlevel = $this->userinfo['userlevel']; /* Insert userid into database and update active users table */ $database->updateUserField($this->username, "userid", $this->userid); $database->addActiveUser($this->username, $this->time); $database->removeActiveGuest($_SERVER['REMOTE_ADDR']); /** * This is the cool part: the user has requested that we remember that * he's logged in, so we set two cookies. One to hold his username, * and one to hold his random value userid. It expires by the time * specified in constants.php. Now, next time he comes to our site, we will * log him in automatically, but only if he didn't log out before he left. */ if($subremember){ setcookie("cookname", $this->username, time()+COOKIE_EXPIRE, COOKIE_PATH); setcookie("cookid", $this->userid, time()+COOKIE_EXPIRE, COOKIE_PATH); } /* Login completed successfully */ return true; } /** * logout - Gets called when the user wants to be logged out of the * website. It deletes any cookies that were stored on the users * computer as a result of him wanting to be remembered, and also * unsets session variables and demotes his user level to guest. */ function logout(){ global $database; //The database connection /** * Delete cookies - the time must be in the past, * so just negate what you added when creating the * cookie. */ if(isset($_COOKIE['cookname']) && isset($_COOKIE['cookid'])){ setcookie("cookname", "", time()-COOKIE_EXPIRE, COOKIE_PATH); setcookie("cookid", "", time()-COOKIE_EXPIRE, COOKIE_PATH); } /* Unset PHP session variables */ unset($_SESSION['username']); unset($_SESSION['userid']); /* Reflect fact that user has logged out */ $this->logged_in = false; /** * Remove from active users table and add to * active guests tables. */ $database->removeActiveUser($this->username); $database->addActiveGuest($_SERVER['REMOTE_ADDR'], $this->time); /* Set user level to guest */ $this->username = GUEST_NAME; $this->userlevel = GUEST_LEVEL; } /** * register - Gets called when the user has just submitted the * registration form. Determines if there were any errors with * the entry fields, if so, it records the errors and returns * 1. If no errors were found, it registers the new user and * returns 0. Returns 2 if registration failed. */ function register($subuser, $subpass, $subemail){ global $database, $form, $mailer; //The database, form and mailer object /* Username error checking */ $field = "user"; //Use field name for username if(!$subuser || strlen($subuser = trim($subuser)) == 0){ $form->setError($field, "* Username not entered"); } else{ /* Spruce up username, check length */ $subuser = stripslashes($subuser); if(strlen($subuser) < 5){ $form->setError($field, "* Username below 5 characters"); } else if(strlen($subuser) > 30){ $form->setError($field, "* Username above 30 characters"); } /* Check if username is not alphanumeric */ else if(!eregi("^([0-9a-z])+$", $subuser)){ $form->setError($field, "* * only letters and numbers allowed and no spaces"); } /* Check if username is reserved */ else if(strcasecmp($subuser, GUEST_NAME) == 0){ $form->setError($field, "* Username reserved word"); } /* Check if username is already in use */ else if($database->usernameTaken($subuser)){ $form->setError($field, "* Username already in use"); } /* Check if username is banned */ else if($database->usernameBanned($subuser)){ $form->setError($field, "* Username banned"); } } /* Password error checking */ $field = "pass"; //Use field name for password if(!$subpass){ $form->setError($field, "* Password not entered"); } else{ /* Spruce up password and check length*/ $subpass = stripslashes($subpass); if(strlen($subpass) < 4){ $form->setError($field, "* Password too short"); } /* Check if password is not alphanumeric */ else if(!eregi("^([0-9a-z])+$", ($subpass = trim($subpass)))){ $form->setError($field, "* * only letters and numbers allowed and no spaces"); } /** * Note: I trimmed the password only after I checked the length * because if you fill the password field up with spaces * it looks like a lot more characters than 4, so it looks * kind of stupid to report "password too short". */ } /* Email error checking */ $field = "email"; //Use field name for email if(!$subemail || strlen($subemail = trim($subemail)) == 0){ $form->setError($field, "* Email not entered"); } else{ /* Check if valid email address */ $regex = "^[_+a-z0-9-]+(\.[_+a-z0-9-]+)*" ."@[a-z0-9-]+(\.[a-z0-9-]{1,})*" ."\.([a-z]{2,}){1}$"; if(!eregi($regex,$subemail)){ $form->setError($field, "* Email invalid"); } $subemail = stripslashes($subemail); } /* Errors exist, have user correct them */ if($form->num_errors > 0){ return 1; //Errors with form } /* No errors, add the new account to the */ else{ if($database->addNewUser($subuser, md5($subpass), $subemail)){ if(EMAIL_WELCOME){ $mailer->sendWelcome($subuser,$subemail,$subpass); } return 0; //New user added succesfully }else{ return 2; //Registration attempt failed } } } /** * editAccount - Attempts to edit the user's account information * including the password, which it first makes sure is correct * if entered, if so and the new password is in the right * format, the change is made. All other fields are changed * automatically. */ function editAccount($subcurpass, $subnewpass, $subemail){ global $database, $form; //The database and form object /* New password entered */ if($subnewpass){ /* Current Password error checking */ $field = "curpass"; //Use field name for current password if(!$subcurpass){ $form->setError($field, "* Current Password not entered"); } else{ /* Check if password too short or is not alphanumeric */ $subcurpass = stripslashes($subcurpass); if(strlen($subcurpass) < 4 || !eregi("^([0-9a-z])+$", ($subcurpass = trim($subcurpass)))){ $form->setError($field, "* Current Password incorrect"); } /* Password entered is incorrect */ if($database->confirmUserPass($this->username,md5($subcurpass)) != 0){ $form->setError($field, "* Current Password incorrect"); } } /* New Password error checking */ $field = "newpass"; //Use field name for new password /* Spruce up password and check length*/ $subpass = stripslashes($subnewpass); if(strlen($subnewpass) < 4){ $form->setError($field, "* New Password too short"); } /* Check if password is not alphanumeric */ else if(!eregi("^([0-9a-z])+$", ($subnewpass = trim($subnewpass)))){ $form->setError($field, "* New Password not alphanumeric"); } } /* Change password attempted */ else if($subcurpass){ /* New Password error reporting */ $field = "newpass"; //Use field name for new password $form->setError($field, "* New Password not entered"); } /* Email error checking */ $field = "email"; //Use field name for email if($subemail && strlen($subemail = trim($subemail)) > 0){ /* Check if valid email address */ $regex = "^[_+a-z0-9-]+(\.[_+a-z0-9-]+)*" ."@[a-z0-9-]+(\.[a-z0-9-]{1,})*" ."\.([a-z]{2,}){1}$"; if(!eregi($regex,$subemail)){ $form->setError($field, "* Email invalid"); } $subemail = stripslashes($subemail); } /* Errors exist, have user correct them */ if($form->num_errors > 0){ return false; //Errors with form } /* Update password since there were no errors */ if($subcurpass && $subnewpass){ $database->updateUserField($this->username,"password",md5($subnewpass)); } /* Change Email */ if($subemail){ $database->updateUserField($this->username,"email",$subemail); } /* Success! */ return true; } /** * isAdmin - Returns true if currently logged in user is * an administrator, false otherwise. */ function isAdmin(){ return ($this->userlevel == ADMIN_LEVEL || $this->username == ADMIN_NAME); } /** * generateRandID - Generates a string made up of randomized * letters (lower and upper case) and digits and returns * the md5 hash of it to be used as a userid. */ function generateRandID(){ return md5($this->generateRandStr(16)); } /** * generateRandStr - Generates a string made up of randomized * letters (lower and upper case) and digits, the length * is a specified parameter. */ function generateRandStr($length){ $randstr = ""; for($i=0; $i<$length; $i++){ $randnum = mt_rand(0,61); if($randnum < 10){ $randstr .= chr($randnum+48); }else if($randnum < 36){ $randstr .= chr($randnum+55); }else{ $randstr .= chr($randnum+61); } } return $randstr; } }; /** * Initialize session object - This must be initialized before * the form object because the form uses session variables, * which cannot be accessed unless the session has started. */ $session = new Session; /* Initialize form object */ $form = new Form; ?> Ricky Gervais... Obviously. " ."" .""; $forminput = "" ."" ."" . ""; if($session->logged_in){ $toptagline ="" ."" .""; $forminput = ""; } else{ /** * User not logged in, display the login form. * If user has already tried to login, but errors were * found, display the total number of errors. * If errors occurred, they will be displayed. */ if($form->num_errors > 0){ $errorline = ""; } } $membersline = "There are ".$database->getNumMembers()." members signed up to Ricky Gervais.Com - ". $database->num_active_users ." are signed in now and there are " . $database->num_active_guests. " people just visiting"; ?>

  Last Christmas I wrote a little essay entitled: "A Holiday Message from Ricky Gervais: Why I'm an atheist."
The Wall Street Journal ran it, and it caused quite a stir. I was even asked to answer some of the comments.
So for Easter I thought I'd do another one. Here it is.

A Holiday Message from Ricky Gervais: Why I'm a good Christian.

The title of this one is a little misleading, or at least cryptic. I am of course not a good Christian in the sense that I believe that Jesus was half man, half God, but I do believe I am a good Christian compared to a lot of Christians.

It's not that I don't believe that the teachings of Jesus wouldn't make this a better world if they were followed. It's just that they are rarely followed.

Gandhi summed it up really. He said, "I like your Christ, I do not like your Christians. Your Christians are so unlike your Christ."

I have always felt this way, even when I believed in God, and in a weird way I feel I am still a pretty good "Christian" who doesn't believe in God.

So many Christians think that because they believe in the right God, they are automatically good and have a one-way ticket to everlasting life. Dare I say it but I suspect this is their main reason for believing. I've heard so many "believers" say, "Well, since there is no way of being sure whether there is a God or not, it's better to believe in God than not, because that way, if you're wrong it doesn't matter and if you're right you get everlasting life." Win:win.

This is of course Pascal's Wager, which assumes that God if he exists would reward blind faith above logic and living a good life as an atheist.

To the Christians' God by the way, it's just as bad to believe in the wrong God as no God at all. The idea of other Gods is of course ridiculous to Christians. Supernatural poppycock. As if there was ever a Zeus; stupid, ancient, unenlightened superstition. And even if there are other Gods (which of course there aren't) then the Christians' God is the best. Hardest, smartest... just better. He would laugh at Zeus and call him a Greek bender. (I doubt that God is racist and homophobic but the Bible isn't clear. Some bits go on about love and equality and others say you shouldn't trust certain types and that laying down with a man as you would with a woman is punishable by death and is a bit sick and evil.)

So remember. If you are gay you are "Bumming for Satan" basically. (That would make quite a good T-shirt.)

Jesus was a man. (And if you forget all that rubbish about being half God, and believe the non-supernatural acts accredited to him, he was a man whose wise words many other men would still follow.) His message was usually one of forgiveness and kindness. These are wonderful virtues but I have seen them discarded by many so-called God-fearers when it suits them. They cherry pick from their "rulebook" basically. I have seen such cruelty and prejudice performed in the name of Christianity (and many other religions for that matter) that it makes me wonder if there has been a bit too much selective reading and reinterpretation of the doctrines.

God or not, if I could change one thing for a better world, it would be for all mankind to adhere to this little gem: "Let he who is without sin cast the first stone." I assure you, no more stones would ever be thrown.

So maybe we should go back to basics to find out where it all got confused.


The Ten Commandments

The 10 Commandments are found in the Bible's Old Testament; Exodus, Chapter 20.
They were given directly by God to the people of Israel at Mount Sinai after He had delivered them from slavery in Egypt:

"And God spoke all these words, saying: 'I am the LORD your God.'"

So let's take the test.
How many of these have you broken?
ONE
'You shall have no other gods before Me.'

I definitely do not. Excellent. I get one point.
TWO
'You shall not make for yourself a carved image - any likeness of anything that is in heaven above, or that is in the earth beneath, or that is in the water under the earth.'

This basically means don't make or worship a religious statue or bow to it thinking that it's holy. Tick. Another point to me.
THREE
'You shall not take the name of the LORD your God in vain.'

I never do. But let me explain something. Most people think that The Third Commandment means that they shouldn't use his name as a swear word, e.g. shouting, "Oh God!" when they stub their toe instead of, "Oh Fuck!"
This is not the case (although I love the idea that God would rather them shout "Fuck" than "God". That makes him cool in my book. But no.)
The commandment could equally be, You shall not take the name of the LORD your God in "vanity" e.g. when your enemy is hurt or defeated saying, "that's God's wrath," or when you win an award saying, "thank God." This is using his name in vanity. It's suggesting that you KNOW that God helped you win that award because you deserved it more, or because he was on your side. It's always tickled me that God would have a favourite actor at The Golden Globes.

Anyway I get another point. I think most non-atheists will lose a point here.
FOUR
'Remember the Sabbath day, to keep it holy.'

Before we score this we need to discover what it really means when God commands us to keep the Sabbath day holy. In understanding our answer, and the true intent of God's word, it doesn't matter what day of the week we celebrate the Sabbath. There were no calendars when God created the heavens and the earth so we don't know what day he stated and ended. Don't let the 'day' become more important than the 'intent'.

If we look at the portion of The Ten Commandments which refers to this, Exodus 20:8-11, it seems to be very specific;
8 "Remember the sabbath day, to keep it holy. 9 "Six days you shall labour and do all your work, but the seventh day is a sabbath of the Lord your God; in it you shall not do any work, you or your son or your daughter, your male or your female servant or your cattle or your sojourner who stays with you. 10 "For in six days the Lord made the heavens and the earth, the sea and all that is in them, and rested on the seventh day; therefore the Lord blessed the sabbath day and made it holy. 11 "The Lord blessed the Sabbath day and made it holy.

According to the Bible, God commanded us to keep it holy. But what does that really mean? Work is basically referring to that which we do to earn a living, or in working around the house, or any labour we participate in daily. So, if we never worked at all would that mean every day was holy? No. This absolutely is not being holy. In various places in the Bible we are told of our need to work, for in our work we honor God. So... basically you have to work for the equivalent of six days a week with a day off.

I do this. I get another point.
FIVE
'Honour your father and your mother.'

I think I get a point if anyone does with this one.
SIX
'You shall not murder.'

Nope. Tick.
SEVEN
'You shall not commit adultery.'

Nope. Tick.
EIGHT
'You shall not steal.'

Nope. Tick.
NINE
'You shall not bear false witness against your neighbour.'

Nope. Tick.
TEN
'You shall not covet your neighbour's house; you shall not covet your neighbour's wife, nor his male servant, nor his female servant, nor his ox, nor his donkey, nor anything that is your neighbour's.'

Nope. Tick. Another point for me.

Not bad for an atheist.

I make that 10 out of 10.

How did you do?

Even if this doesn't prove I am a good Christian it does prove that the Bible is a bit inconsistent, open to interpretation, and a little intolerant.

This is not peculiar to Christianity to be fair. And I like to be fair. Because unlike ALL religions, as an atheist, I treat ALL religions equally.
 




Sign up now and you'll have full access to the site and get the odd email from Ricky when he's got something to tell you.

" ."sign up | forgotten your password?

Already signed up? Sign in here...

username:value("user")."\">".$form->error("user")."
password:value("pass")."\">".$form->error("pass")."

Hello, " .$session->username .". You're signed in.

" ."username\">my details | " ."edit details"; if($session->isAdmin()){ $toptagline = $toptagline." | admin"; } $toptagline = $toptagline." | sign off
".$form->num_errors." error(s) found



'Special Correspondents' Cast Revealed
Get the low-down on the principal cast for Ricky's new movie along with a group photo for you to match the host of household names and well-known faces.
Read more here.



'Special Correspondents' First Cast Photo
The Wrap has an exclusive look at the cast of Ricky's new movie.
Read more here.



Brent Movie to be released in 2016
'Life On The Road' is set for a summer 2016 release.
Read more here.



Brent Movie gets funding
The lights are green for The Office's David Brent to return in 'Life On The Road'
Read more here.



Netflix buy 'Special Correspondents'
In a characteristically maverick move by Netflix, Ricky's next movie 'Special Correspondents' will make its debut on the game-changing streaming entertainment service.
Read more here.



News Vlog
Hear about Ricky's latest goings on - straight from the man himself.
Watch here on YouTube.



Ricky talks fame, philosophers and following a career in TV.
Details magazine has a Q and A with Ricky
Read here.



9 Questions with Ricky
Backstage chats with Ricky as 'Derek' is nominated for a Golden Globe.
Read here.



Vote For Derek
Wherever you are in the world you can vote for Derek in the National TV Awards
Vote here.



The Improbable Success of Ricky Gervais
A marketeer's perspective on Ricky in the limelight.
Read here.



Ricky on his 21st Emmy Nomination
The Hollywood Reporter quizzes Ricky on his career to date.
Read here.



Ricky's Facebook Q and A
Ricky answers readers' questions via facebook.
Read here on Gervaisaholics.com.



Letterman No.26
See a bit of Ricky's 26th appearance on the Late Show .
Watch here.



TV Choice Awards
Derek has been nominated for a TV Choice Award.
Vote here.





Life Lessons
Buzzfeed collates a selection of adages drawn from Derek
Read here.



On The Daily Show...
Ricky tells Jon Stewart that he's still a fat guy at heart.
Watch here.



On The Tonight Show...
Ricky Plays "Word Sneak" with Jimmy Fallon.
Watch here.



Brent Gets Standing Ovation
A run of sell-out gigs ended at Hammersmith's Apollo on Satuday. Read the reviews...
Daily Telegraph
Radio Times
London Evening Standard



Ricky Talks To Q Magazine
He submits to a probing via Q's regular 'cash for questions' feature which relies on its readers to come up with the questions. And great questions they are too.
Read here.



Ricky's Nine Commandments
ShortList magazine asks Ricky for his tenets of kindness.
Read here.



The Office remembered
The Guardian TV blog reassesses The Office and its impact...
Read here.




Read the Sunday Times interview.


Vanity Fair Interview
Ricky gets quizzed about Muppets Most Wanted and more.
Read here.




Read the Daily News's one page biography.


Brand New Clip
Here's a new clip from Ricky's new movie, Muppets Most Wanted.
Watch here.



Ricky on Jimmy Kimmel
Ricky chats about his new Muppets movie on ABC's Jimmy Kimmel Live.
Watch part 1, part 2 and part 3.



WSJ talks Muppets, Celebs and more
Ricky meets the Wall Street Journal for a chat heralding his new movie, Muppets Most Wanted. Read here




Ricky starts filming Night At The Museum 3
Read more here at Mail Online


Ricky on the Radio
Watch Ricky guest on the Opie and Anthony Show.
Here on YouTube.



On-Set Interiew
Den of Geek chat with Ricky on the set of Muppets Most Wanted...
Read here.



New Trailer
Ricky's latest trailer for the new Muppets Movie takes the piss out of Twitter gorps.
Watch here.



Ricky chats about Derek with Charlie Rose
With Derek coming to Netflix UK on Jan 30th, Ricky talks to Bloomburg TV about his latest creation.
Watch here.



Ricky meets David Blaine
The well-known illusionist shows Ricky another use for a skewer.
Watch here.



Person of the Year
PETA, the animal charity, has named Ricky as its person of the year 2013.
Read here.



£1,000 Cub Cake
Ricky buys bear-shaped treat at a charity auction.
Read here.



Ricky In Time
Ricky writes about success and styles himself a "cocky little nobody".
Read here.



Derek reviewed
Ricky hailed as the 'Tarantino of nice'
Read here.



David Blaine 'Real or Magic' Stumps Ricky Gervais with Amazing Knife

39 Feline Gervaisalikes
A number of cats that look like Ricky
See here.


New International Trailer for 'Muppets Most Wanted'

Top 50 News Pics
Ricky & Barney the dog makes the list of the 50 most powerful news images of 2013.
Read here at ITV.com.



David Brent - Live
Brent wows fans and critics at first ever gig.
Read the first reviews here...
The Guardian
Metro
The Mirror
The Independent
The Evening Standard




Ricky Talks Charity
The donations website Just Giving talks to Ricky about charity.
Read here.



Ricky on Derek in Sydney
Ricky chats to the Sydney Morning Herald.
Read here.








Derek Review Roundup
Here're some more Derek-related reviews and articles...
Fast Company.
Rolling Stone.
Newsday.
Montreal Gazette.
Toronto Sun.
Buzz Feed.




Vote For Derek
The National Television Awards have opened voting for the January 2014 awards.
You can give your support to Derek in the poll here.



Ricky Chats With Charlie
Ricky sits down with the great Charlie Rose...
Watch here.



Writing Credit
Ricky tells Fast Company about the biggest single influence on his writing...
Watch here.



Letterman No. 25
Ricky's made his 25th appearance on The Late Show with David Letterman
Watch here.



Ricky's Times Talk
An audience with Ricky in New York hosted by the New York Times.
Watch in full here.



Derek In Review
Entertainment Weekly calls #Derek "marked by grace."
Read the full article here .



Ricky On The Red Carpet
Ricky talks to Brad Blanks on the red carpet of The New York Premiere of Derek.
Watch here on YouTube.



Ricky's Reddit "Ask Me Anything"
Ricky answers readers' questions.
Read the results here at reddit.



Derek Hits The Airwaves
Listen to Ricky's interview on Black Sky Radio.
Here on YouTube.



Hollywood Reporter's Video Report
Watch the footage from the Hollywood Reporter's interview with Ricky.
Here on YouTube.



Hollywood Reports on Derek
God-hating, Dinners with Seinfeld and Derek on Netflix...
Read here.



Slough Makes International Impression
David Brent's ode to his favourite town has been covered by Toro Y Moi...
Listen here.
And refresh your memory of the seminal original here



Derek Is Big Down Under
The Sydney Morning Herald looks at Derek, which has just started showing in Australia...
Read here.



Brent - The Album
The NME makes a strong case for David Brent to release an album as a follow-up to his YouTube series of guitar tutorials.
Read here.



Ricky talks about godless tweets
Ricky guests with his heathen Twitter pals @MrOzAtheist & @GSpellchecker on @AdamReakes's Herd Mentality Podcast
Listen via ITunes or directly.



2 Million and counting
Ricky breaks the 2 Million barrier for Learn Guitar with David Brent
Read more here.



Brent on Jimmy Fallon
David Brent pops up on Late Night with Jimmy Fallon.
Watch here.



International Acclaim For The Office
The Office takes 14th position in US magazine Entertainment Weekly's All-Time Top 100 TV Shows - by far the highest raked UK show on the list.
See the full list here.



Opie & Anthony
Ricky's favourite appearance on The Opie & Anthony Show in New York. It's a shame Opie & Anthony couldn't be there.
Listen here.



Ricky in GQ
Ricky gets probed on the return of Brent amongst other things...
Read here and Watch here.



Meanwhile in America...
Ricky's been on TV & Radio and watching a game called basketball...
Here's Ricky on The Daily Show. (US only)
On Opie and Anthony's radio show.
On Late Night with Jimmy Fallon.
And courtside at the Knicks game.



Robot monkey butlers
Ricky looks into the future and has some surprising predictions...
Read here.



Ricky's Muppets role
The producer of the new Muppet movie, The Muppets...Again!, says Ricky's role was tailor-made for him.
Read here.



Ricky explains the return of Brent
Shortlist has a piece by Ricky explaining why the time was right to revisit The Office.
Read here.



New and Exclusive
Ricky has made a deal with YouTube to bring new, exclusive content to his own YouTube Channel.
Read about the deal here and subscribe to Ricky's channel here.