Posts filed under 'Blog News'

A workaround for an error with the WordPress Blix 0.9.1 theme under PHP 5.5

At this point in time, this blog is running a theme which it has been running since I first moved it to a WordPress installation in 2005. I have modified the theme a little bit over the years to make the colours more suit tastes and adjust a few functions to work a bit better for my needs. All that said, it is an ancient set of PHP scripts designed to work under an equally ancient version of PHP, and given how much has changed in PHP over the years it could be considered a miracle that the Blix theme still works at all.

Recently I came across a problem which I couldn’t make heads or tails of. Out of the blue, errors started appearing on this blog about failed login attempts where a script on this blog had tried to login to the database as the chief administrative user without a password:

Warning: mysql_query(): Access denied for user ‘root’@’localhost’ (using password: NO) in /home/samuelgo/wp-content/themes/blix/BX_functions.php on line 44
Warning: mysql_query(): A link to the server could not be established in /home/samuelgo/public_html/wp-content/themes/blix/BX_functions.php on line 44
Warning: mysql_num_rows() expects parameter 1 to be resource, boolean given in /home/samuelgo/public_html/wp-content/themes/blix/BX_functions.php on line 45

I first noticed this problem just after I fixed an issue where the WordPress installation couldn’t login to MySQL and thought it was related and possibly a sign of a very poorly implemented hacking of this blog, but it turned out to be unrelated. The reason WordPress was unable to login to the database was that this site was moved from one server to another and a file with login details was slightly corrupted in the process, and this was easily corrected.

The above errors are related to a function which, on the Archives page, shows the number of comments on each post. Previously the “mysql_query” function in the BX_functions file used the login details which WordPress uses, but the “mysql” function has been deprecated as of PHP 5.5 and, while it still works, now seems to need to be explicitly told which login details to use, or it just assumes it should login as “root” without a password (which is possibly the dumbest login details I can think of as it has almost no chance of working on anything but the most insecure of servers). This error, consequently, appears next to each and every post on the archives page, often multiple times. I was able to suppress these errors from displaying until I could get around to figuring out what the problem was, but this still caused the error to be dumped in to an error log many thousands of times per day, causing the error log to grow by hundreds of megabytes each day until I would delete it before it could use up all of the disk space available to this website.

A Google search for the error message shows a lot of blogs running the Blix theme and related themes, but no solution to the problem, so now that I have figured out a workaround, I’ll post it here for the benefit of everyone.

The solution is a tad cumbersome in that it requires the WordPress database username and password to be added to the BX_functions.php file. In reality it is only a workaround as the “mysql” function has been deprecated in favour of other functions and, as such, it will probably exhibit increasingly bizarre behaviour in future version of PHP until support for it is completely removed. This solution works for now, but the only long-term solution is to change to a more modern WordPress theme…I’m still trying to find one that I like as much as Blix.

The solution is to edit your Blix theme’s BX_functions.php file. I would recommend making a backup copy of the file first. This file can usually be found in the /wp-content/themes/blix directory of your website, but if you have a version of Blix which is installed in a different location, then you’ll need to find BX_functions.php in whatever directory the theme is installed in.

You should see a section which looks like this, starting around line 43 (again this may vary if you have a customised version of Blix):

echo "<li>".get_archives_link($url, $text, '');
$comments = mysql_query("SELECT * FROM " . $wpdb->comments . " WHERE comment_post_ID=" . $arcresult2->ID);
$comments_count = mysql_num_rows($comments);
if ($arcresult2->comment_status == "open" OR $comments_count > 0) echo ' ('.$comments_count.')';
echo "</li>\n";

You will need to add a couple lines as follows below the line starting with “echo” and above the line starting with “$comments = mysql_query”.

mysql_connect("server", "username", "password");
mysql_select_db("databasename");

Naturally you need to change these details so that
“server” is the address of your MySQL server (this is often “localhost”)
“username” is the username of your MySQL user
“password” is the password of your MySQL user
“databasename” is the name of the MySQL database used for your WordPress installation.
Do not remove the quotation marks from around these details.

If you’re not sure of any of these details, you should be able to find them in the wp-config.php file in the root directory of your WordPress installation.

Once you’re done, the above section of the BX_functions.php should look something like this:


echo "<li>".get_archives_link($url, $text, '');
mysql_connect("server", "username", "password");
mysql_select_db("databasename");
$comments = mysql_query("SELECT * FROM " . $wpdb->comments . " WHERE comment_post_ID=" . $arcresult2->ID);
$comments_count = mysql_num_rows($comments);
if ($arcresult2->comment_status == "open" OR $comments_count > 0) echo ' ('.$comments_count.')';
echo "</li>\n";

And the errors should go away.

It’s an annoying issue, but it’s nice to have a solution, even if it is only really a temporary workaround in lieu of upgrading to a theme designed for a modern version of PHP.

Samuel

January 1st, 2015 at 08:38pm

Sightseeing in Petaluma

One of the things I had planned to do prior to my visit to the US was get a photo gallery up and running again. My old photo gallery was running on old and discontinued software which was starting to not work properly with modern server software, and so some time ago I archived the whole thing, turning it in to a basic website which doesn’t require ancient and insecure versions of PHP. Unfortunately that meant I can not add to that gallery and had to start a new one. There are times on this blog (this holiday being one of them) where I will want to share a lot of photos with you, but posting a gazillion photos in a blog post on a regular basis is time consuming and ultimately an inefficient way to publish photos…and I don’t think you should be forced to scroll through every photo I ever take. The benefit of the photo gallery is that I can upload all of the photos I would like to share, and present you with the highlights here so that if you are interested, you can see the rest on the photo gallery. It also saves me a bit of time as I don’t have to go through and manually make resized versions of photos etc. If you’ve ever visited the /wp-content folder of this blog, you’ll know just how much manual work I do to get photos online.

So, I am pleased to present my new photo gallery at http://samuelgordonstewart.com/photogallery/. It’s a work in progress at the moment with a few empty galleries as placeholders which I will soon fill, as I really just needed to get it up and running for this blog post.

With that out of the way, on with the Petaluma sightseeing.

I took a couple hours this afternoon to go for a wander around the older downtown section of Petaluma and found quite a few nice grand old buildings, with two churches being particular standouts.

St. Vincent De Paul Catholic Church:
St. Vincent De Paul Catholic Church of Petaluma

And the Open Door Church on Fifth St which you might recognise from the movie Flubber:
The Open Door Church of Petaluma

TWiT.tv’s former headquarters (the TWiT Cottage) at 8 Keller St is only a couple blocks away from TWiT’s new headquarters. It has reverted to its old name of “Cavanagh Cottage” after John W. Cavanagh who built it in 1912.
Old TWiT Cottage (aka Cavanagh Cottage) at 8 Keller St, Petaluma

The building is almost completely surrounded by car parking, which would have been useful when TWiT grew to the point that it needed a larger space down the street.

This lovely old wooden bridge (The John Balshaw River Walk Bridge) crosses the Petaluma River at a bend in the river in the downtown district
John Balshaw River Crossing Bridge, Petaluma

And has some nice views of Downtown
Downtown Petaluma as seen from the Balshaw Bridge

The traffic lights of Petaluma are also all wizz-bang-and-fancy. Some of them talk to you; many of them count down how long you have left to cross the road; most acknowledge when you press the button which helps to discourage one of the things I really dislike, and that is people who stand at the traffic lights and press the button a thousand times thinking it will make the lights change sooner; and they even have pedestrian crossings with button-activated flashing lights along the sides of the pedestrian crossing so as to make it easier for drivers to work out if somebody intends to cross the road.
Pedestrian crossing in Petaluma counting down the remaining time to cross the road

I had six seconds left to cross the road there…thankfully I was already done.

And finally, I had to take a photo of this. I think there is no doubt who is in change of the household from which this truck hails.

Cute little dog protects large truck in Petaluma

Clicking on any of the photos in the post will take you to that photo’s page in the photo gallery, from which you are able to view a larger version of the photo if you wish. Alternatively, to browse through all of the photos, you can get to the “Some of the sights of Petaluma” gallery by clicking here.

Samuel

2 comments February 14th, 2014 at 09:24pm

Quick note about comments

Update: It’s funny how a lightbulb appears above one’s head just after one makes an announcement like this. The problem has now been found and worked around, but not fixed. It’s not as serious as I feared, but I’m not pleased about the workaround…but it’s OK for now. The comment system is now back to normal. End Update

Further Update 29/1: The cause of the original issue has now been fixed, which pleases me greatly as it was a bug in a spam filtering system, and without that spam filtering in place I was being bombarded by emails due to robots registering for the site in the hope that they could post spam messages for you to see. My thanks to Filidor Wiese for his excellent spam filtering system and his extremely fast fix to the problem. End Update

My attention has been drawn to the fact that the comment moderation system on this blog is currently not functioning correctly. I was made aware of this by a handful of comments slipping through in recent days which should have required my intervention and approval before appearing (some of those have since been removed as I would not have let them through).

Unfortunately the obvious solutions to this problem have not fixed it, so as an interim measure until I have a bit more time to find and fix the problem, I have turned on the function which requires all comments to go through the moderation process. I apologise for the inconvenience this causes. Hopefully it will be fixed within the next few days.

Samuel

January 28th, 2014 at 10:19am

Technical problems with logging in to this blog

It has come to my attention that some people may be seeing a page which simply says “not acceptable” when they attempt to log in to this blog. This, unfortunately, is a necessary (and hopefully temporary) security measure which has been put in place by my web host VentraIP in order to combat an ongoing worldwide attack against WordPress installations. This security measure is outside of my control and I can not prevent this error message from appearing, however I can provide some help to overcome it.

The message should only appear if you load the login page a certain number times in a short period of time (as my web host has not made the exact number of page loads and the exact period of time available publicly, I will not disclose it at this time), and it should be noted that displaying the login page and submitting your username and password count as two separate loads of the login page.

If you see this message, your best option is to wait a couple minutes and try again. If that doesn’t help, try clearing your browser’s cache before trying again. Although the “not acceptable” page should not be cached by your browser, in my testing I found that my browser did cache it and was displaying it even when the server was trying to accept or decline a log in or log out attempt and serve up the appropriate page.

The attack against WordPress installations has been going on for quite some time now, so this security measure could be around for a while. As much of a nuisance as the security measure may be, it is far better than the alternative of having servers overloaded by automated attempts to break in to administrative accounts of WordPress installations; and even though I would like to see a greater number of loads of the login page permitted before the “not acceptable” message is displayed, I trust that my web host has not picked an arbitrary number and has instead picked a number which accurately reflects the necessary measures to limit the impact of the ongoing attack.

If problems persist, let me know and I’ll do what I can to help you log in.

Samuel

4 comments May 23rd, 2013 at 07:45am

I hope you have had a wonderful and blessed Easter

I have been working across the entire Easter weekend, have enjoyed Easter and have found time to reflect upon the reason for Easter. It is a very important time of the year and one which I fear is treated as a meaningless holiday by far too many.

Over the course of the weekend, I have found Mark 9:31 to be quite meaningful and uplifting.

For He was teaching His disciples and telling them, “The Son of Man is to be [a]delivered into the hands of men, and they will kill Him; and when He has been killed, He will rise three days later.”

Of course Easter is a time to celebrate, and a time which excites Nattie and Pebbles due to the deliveries of the Easter Bunny.

With Pebbles, Easter eggs have to be kept out of reach, lest they get carted away.

Pebbles investigating the Easter eggs

Pebbles investigating the Easter eggs

Pebbles investigating the Easter eggs

Pebbles investigating the Easter eggs

Nattie, on the other hand, has seen enough Easters to be more mature about the arrival of the eggs.

Nattie checks out some Easter eggs

Nattie checks out some Easter eggs

Nattie checks out some Easter eggs

One thing which I do not understand about Easter is the public holiday structure. Obviously Good Friday is very important, but the Saturday and Monday do not make as much sense, as the Sunday is the day of the resurrection.

I suppose that, back when the Easter public holidays were enshrined in law, people worked on Saturday but not Sunday, so making the Saturday a public holiday made sense, and in the interests of observing the Sunday holiday for those who did not work on Saturdays, the Monday was also made a public holiday. Alas now, in the age of a 38-hour standard working week where “normal” is considered Monday to Friday work, but with a large portion of the population doing shift work at all times of the day and all days of the week, I think it would make more sense for the public holidays to be on the significant holy dates (Good Friday and Easter Sunday) with the Monday retained as a public holiday as an observance of the Sunday for the benefit of those who do not normally work on a Sunday, as well as those who are required to work on such an important day.

In my view, rearranging the public holidays in such a way would, in a small way, help to reassert the importance of Easter in the minds of the population-at-large.

Samuel

4 comments March 31st, 2013 at 11:47pm

Harry Reid linking the death of Marines to the spending sequester

An email to the quite excellent Tom Marr of WCBM 680AM in Baltimore, Maryland. Tom will be filling in for Mark Levin on his nationally syndicated show next week.

Hi Tom,

I couldn’t agree more with you about Harry Reid. What happened to those Marines is a tragedy, but Harry Reid’s attempt to link it to the sequester is disgusting.

As an Australian, I can put up with hearing Harry Reid when I tune in to American radio, but I nearly took an axe to the radio when Harry Reid turned up on an Australian radio newscast yesterday.

I’m looking forward to hearing you on The Great One’s show on Monday.

Kind regards,
Samuel Gordon-Stewart
Canberra, Australia

March 21st, 2013 at 02:01am

If you didn’t see Mary Kissel’s speech and want a better understanding of the current state of American politics, watch it!

It is somewhat unfortunate but true that the majority of the Australian media, either for lack of room or interest, does not provide a complete picture when it covers American political and economic news.

It is understandable, as most US news outlets do the same for Australian news, but it is also frustrating at times when basic facts about American politics are relatively unknown in Australia and vice-versa. This is why I sought out US talk radio back in 2008, and why I was so impressed today with Mary Kissel’s address to the National Press Club.

Mary Kissel at the Australian National Press Club
Mary Kissel moments before her address

Mary eloquently explained the current state of affairs in the US and how it differs from the version of events which is generally reported outside the US. It was fascinating and reassuring to hear from an American journalist that most of the things which I know to be true about the current state of US politics (as I take an active interest and do not rely entirely on Australian media reports) are in fact the truth. It was also very exciting to hear such information being espoused on as mainstream a stage as the National Press Club.

I expect that Mary’s address will be on ABC iView or YouTube soon. As I’m writing this on my phone it is a little hard to check, but I will post a link at the first available opportunity.
Update: Or not. It doesn’t appear to be online anywhere. I did record the ABC News 24 feed so maybe I’ll have to put it online myself. End Update

Samuel

1 comment March 5th, 2013 at 02:02pm

Some good news for a Friday evening

It is always nice to be able to end a Friday with some good news, and as I received two bits of good news today, I thought I’d share them and an extra bit of good news, just for good measure.

Firstly, I received confirmation today that some things I ordered some weeks ago have just been shipped from the US. As anyone who knows me well would know, I have a bit of a collection of NYPD merchandise. To complete (well, mostly, I’m sure I could buy more stuff if I wanted to) this collection, I placed a sizeable order a few weeks back. I was excited when payment was taken a couple weeks later as this confirmed that the items were all available, and today I received an email confirming that the order has shipped. Even more excitingly, the order has been shipped through a faster service than I expected, and is expected to arrive early next week.

The second bit of good news is that when I checked my post office box today, there was a very flattering and interesting invitation to an event in Melbourne. Alas I don’t think I’ll be able to go, and I’m not sure if the event’s details are public yet so I won’t divulge them, but it was exciting anyway and I will keep the invitation regardless of whether I choose to go or not.

Finally, some good news for all and sundry. The Bolt Report returns to Channel Ten this weekend on Sunday at 10am. For those of us in regional areas, some even better news in that Southern Cross Ten will be taking the show live. No more waiting tensely all day for the 4:30pm replay. Alas, the afternoon replay has been dumped in favour of a condensed replay of the revamped Meet The Press, but that’s understandable seeing as Ten and News Limited have put quite some effort in to making Meet The Press a more interesting and useful program than it was in recent years.

I wish you a good weekend, and hope you will join me in enjoying seeing Andrew Bolt’s insightful program on Sunday morning.

I suppose I might have to share some photos of some of the NYPD stuff when it arrives too…now that’s something to look forward to!

Samuel

March 1st, 2013 at 07:45pm

Twitter problems

Something seems to be irreparably wrong with the Twitter integration on this blog. Is it a coincidence that it all broke just as an update (which I have not installed) to the Twitter Tools plugin was released which drops support for a few of the functions which broke? I don’t think so.

I probably won’t have time to fix or replace it before ACT election day, but I’ll see about replacing the twitter feed in the sidebar with one that actually works. As for how I get some of the integration functions back, I don’t know right now. That’s one for next week.

Samuel

October 18th, 2012 at 09:51am

Video of Tony Abbott’s speech about freedom of speech

On Monday, as noted on this blog, Tony Abbott addressed the Institute of Public Affairs about the subject of freedom of speech. I consider myself privileged to have been there to see it, and found myself hoping that somebody would post the full video of the speech online for everyone to see as the grabs used by the media in their news reports, while capturing the bare point of the speech, did not seem to capture the full reasoning or argument behind the speech. Various media outlets have clearly noted and understood the reasoning, and echoed it in their own statements since Monday, but I don’t believe that the general public has been given the opportunity to date to hear Tony Abbott’s full thought process on the matter.

Today, I am pleased to be able to say, The Institute of Public Affairs have done just that.

The video runs just under 30 minutes. The IPA’s Chris Berg delivers introductory remarks for the first seven of those minutes, with Tony Abbott’s speech taking up the remaining 23 minutes. It’s well worth watching, or even just listening to. I think even those who disagree with Tony Abbott on this one will find this enlightening, even if it merely gives them a better understanding of where their own arguments fit in to the debate.

Samuel

1 comment August 9th, 2012 at 10:10am

RIP Chris Stanley, US radio news icon

Some sad news from the US today in that Chris Stanley, an icon of the radio news industry, has passed away at the age of 64 from a heart attack.

Chris Stanley of Fox News Radio and CBS Radio NewsChris most recently worked for Fox News Radio, often reading night time news bulletins which aired during the daylight hours over here in Australia. Chris’ work at Fox was the first time I had heard his work, and I was immediately drawn to his natural radio voice, and his crisp and clear delivery. I heard many an international story explained in concise but thorough detail by Chris.

Chris worked for Fox News Radio for four years prior to his retirement at the end of April. Before that Chris worked in a few places, including CBS Radio News for an impressive twenty years which included work for their national service based in New York and their Los Angeles station KNX 1070. Chris’ other work included stints as the news director at stations WPIX New York, KPFT Houston and WBAY Green Bay.

I’ve had a look through my archives as I did have some recordings of Fox News Radio’s hourly newscasts going back in April, but it looks like I didn’t have them going on Chris’ final day. The last of Chris’ work I have is the last bulletin he presented on his second-last day on the air. As a tribute to Chris, here is that newscast, his 11pm Eastern Time newscast from Friday the 27th of April, 2012.

Audio clip: Adobe Flash Player (version 9 or above) is required to play this audio clip. Download the latest version here. You also need to have JavaScript enabled in your browser.


Download MP3

I extend my condolences to Chris’ family and his former colleagues at Fox, CBS and across the radio industry. Rest In Peace Chris, another great voice on the great radio in the sky.

Samuel

Image credit: All Access Music Group
Audio credit: FOX News Radio

June 10th, 2012 at 09:03am

Happy Easter!

I would like to take a moment to wish everyone reading this blog a very happy and safe Easter, regardless of whether you are observing the religious significance of the weekend or simply treating it as an extended set of public holidays.

I hope that the weekend is pleasant for you.

Samuel

April 6th, 2012 at 07:20pm

I’m back on Twitter

Those of you who have been reading this blog for a long time may recall that in 2008 I briefly experimented with Twitter and, after a few days, closed my account as I deemed it to be a waste of my time. At the time, this was true…Twitter held no value for me. Of course, at the same time, neither did Facebook, and yet now I don’t think I would be able to function without Facebook (or at the very least, the withdrawal symptoms would be difficult for a while).

For Facebook, this changed for me in either late 2008 or early 2009, I don’t really recall which of those times it was, when a growing number of overseas friends meant that it was easier to stay in touch that way. Since then, Facebook has grown for me in to both a news source and a limited creative outlet. Unfortunately it also causes me to stretch myself a bit too thin. I am much busier now than I was in 2009 and, as much as I might try to write something of substance here on a regular basis, it just doesn’t happen as much as it should…frankly, I don’t have the time, so I opt for the easier option of writing a quick opinion on Facebook and then neglecting the blog.

It is not ideal, but it would be safe to say that Facebook has become a mini-blog for me, with a limited audience. There are some benefits to this as not everything that I write on Facebook is intended for a public audience, but there is a downside too. Despite the fact that I am not paid to blog (not even by “Big Oil”, despite my views on mythical man-made global warming…but if anyone from “Big Oil” wants to send me a cheque, I’ll gladly accept it), and despite the fact that I am busy enough as it is, whenever I let this blog sit silently for a few days, I feel guilty, and I feel guilty because I feel that I am letting you, my handful of loyal readers, down. I feel worse about this because I know that I’ve posted some thoughts on Facebook which I would have liked to blog about, but I never got around to expanding the Facebook thought bubbles in to meaningful blog posts.

This, for me, is where Twitter comes in…or at least, might come in. I have a small following on Facebook, a slightly larger following here, and potentially some people I would like to follow on Twitter. I can integrate Twitter with this blog, and Twitter with Facebook, whereas I can not easily integrate selected posts from Facebook with this blog…and given the way facebook like to mess with settings on a regular basis, I don’t really think that will ever be viable. So, to me, it stands to reason that if I can share my small thought bubbles both on Facebook and on this blog by sharing them on Twitter, and I can gain a new stream of information in the process, it may very well be the right thing to do.

That said, I am still a wee bit skeptical of the whole thing. It annoyed me last time, and it didn’t get off to a good start this time when my name was one character too long to fit properly and I had to drop a space to make it fit. I’m also not convinced that I can make my thoughts fit in to 140 character bursts (I used to struggle with the character limit on Facebook when that existed, and that was much larger than Twitter’s limit), but I’m going to give it a go and see what happens. If it works out, then it will solve a few problems, and bring this blog back to life in the process.

I still intend on maintaining this blog…that won’t change…and I won’t be letting Russian guests write more blog posts than me (you should see the column she submitted this week…if there’s a sentence structure in there, I can’t find it, so I’ve sent it back for clarification and hopefully I’ll receive a publishable version for next week), but I will also be sharing my little thought bubbles here as daily digests of my Twitter activities. If all goes to plan, that should auto-publish at about 9pm Canberra time, or 9pm UTC if the Twitter Tools plugin is as insane as it was the last time around. You can also follow me on Twitter @Samuel_SGS and I’ll see about adding one of those sidebar doohickey-thingamabobs.

At the very least, this should be an interesting ride. Hopefully a valuable one, but only time will tell on that one.

Samuel

3 comments March 13th, 2012 at 03:37am

Labor leadership spill 11:19am: Official: Julia Gillard convincingly retains control of the circus 71-31

It is now official. Julia Gillard has won the Labor leadership ballot by a margin of 71 to 31. It’s a convincing victory and should be enough to shut down the Kevin Rudd party-damaging machine for a while.

This gives Julia the comfort of knowing that she has the support of the majority of her party, and the ability to quash concerns among the independents that she might not be able to have a stable government.

The questions now though are twofold:

1. What will Kevin Rudd do. He promised to move to the backbench quietly, but will he? That’s not exciting or important enough for his liking…I expect to either see him bide his time on the expectation that he will challenge again next year, or he will go to the crossbenches and hold some sort of influence with one of the deciding votes of the parliament.

2. What will happen to the Kevin Rudd supporters, especially the ones who walked in to the caucus room with him? If Kevin stays in Labor, then I expect his supporters to be shuffled out of important positions. A cabinet reshuffle might not be a bad idea anyway.

An exciting day, that’s for sure, but did it achieve anything useful? Probably not.

Samuel

February 27th, 2012 at 11:20am

Labor leadership spill 10:28am

The media are all gathered outside the caucus room. I’ve been flicking between TV stations and was watching Nine for a while. During that time, they had a shot of the media gathered outside the caucus room with a Seven reporter (update: it was Alex Hart) prominently in the foreground of the shot, on the phone to someone.

Whoever he was on the phone with must have told him that he was on the rival network as he stopped, turned to the Channel Nine camera, smiled, and waved.

Samuel

February 27th, 2012 at 10:32am

Previous Posts


Calendar

March 2017
S M T W T F S
« May    
 1234
567891011
12131415161718
19202122232425
262728293031  

Posts by Month

Posts by Category

Search Blog or Web

Login/Logout

Ads By Google


Blix Theme by Sebastian Schmieg and modified for Samuel's Blog by Samuel Gordon-Stewart.
Printing CSS with the help of Martin Pot's guide to Web Page Printability With CSS.
Icons by Kevin Potts.
Powered by WordPress.
Log in