All the meat, and Age UK Leeds Abbey Dash 10k

I travelled up to Leeds with Gaz to see my brother at the weekend, figuring I should probably make the effort as we’re getting close to C.. Chr… nope, can’t say it.

We celebrated our mutual awesomeness by booking a meal at Fazenda, a Brazillian Rodízio style restaurant. In case you have no idea what that is (I didn’t) it’s basically an all you can eat buffet where you pay a set amount and the waiters constantly bring food to your table. I basically ate my weight in ALL THE MEATS and haven’t felt hungry since.

Given the sheer amount of meat hulked around on big skewers, Fazenda would be a vegan’s worst nightmare, but they do offer non-meat options and an all you can eat salad bar (which included sushi, grains, and the typical leafy salad stuff) is included.

fazenda_salad_bar

(image Fazenda’s own)

The food was amazeballs, the staff were attentive and friendly, and I can’t wait for an excuse to go back. Unfortunately they only have locations in Leeds, Liverpool and Manchester so it’ll probably be some time before I get to repeat the experience.

The following day (Sunday) we completed the weekend with the only logical follow-up to a night of gluttony: we ran. A lot. Having pre-arranged to run the Age UK Leeds Abbey Dash 10k (and as per usual, with me doing no training whatsoever) we lined up with over 10,000(!) other people in the freezing rain for an opportunity to run up and down the roads of Leeds.

The course was mostly flat, which meant that despite intense DOMS from an ill-timed Friday workout and feet numb with the cold, I managed to complete in 1:04:20 – faster than my last 10k but not close enough to beat my 10k PB of 1:01:32. Of course, I know the answer is to RUN MORE, but time and bla bla excuses.

To be fair, the only reason I managed to complete in 1:04 is because I set myself the goal of keeping ahead of the 65 minute pacer. Towards the end I was run-walk-running and every time he caught up I’d surge on, but it did the trick (just about). The guy was a huge motivation and a much needed voice of enthusiasm towards the end and I completed the race and gave him a hug.

That said, it’s a good job I wasn’t following the 60 minute pacer, as she shot off way ahead of our ‘ability’ grouping and was nowhere to be seen. Even my brother (who did finish just under an hour) said he couldn’t find her. I get that it’s a voluntary thing but if you’re going to carry a pacer flag, it helps if you actually stick to that pace.

Pacer complaint aside, it was a good route and I’d definitely do it again next year, if only to give me the excuse of another night out at Fazenda.

Best Chips in Shropshire: The Bell Inn, Cross Houses

I don’t often blog about my experiences eating out, but there are times when I’m so surprised (either positively or otherwise) by what I’m eating I can’t help but give it a mention. This is one of those times.

I have recently had the pleasure of dining — twice, in fact — with Gaz at The Bell Inn, in Cross Houses, Shrewsbury. The Bell is not one of those pubs that looks ridiculously pretentious from the outside — although it has recently had new signage — it’s just a typical “friendly local” type pub. This ‘theme’ continues inside where the decor is cosy and clean.

The pub is split in two halves as you enter, with the main bar through a door on the left and the dining room on the right. I’ve not been in the bar, but I imagine it’s probably full of local gentlemen nursing their pints and talking about how things were back when they were a lad. (Isn’t that normally what happens in local pubs?) The dining room is quite small, but there has been room for Gaz and I on both occasions we’ve visited.

I am fairly predictable in that, when I go out to eat, I generally always order sirloin steak (rare). I am generally always disappointed because very few pubs and restaurants manage to deliver a truly rare steak. In fact, having eaten in upwards of 15 pubs and restaurants in Shrewsbury and Telford I can only count two who have actually delivered what I’ve asked for. Some pubs seem to think it’s OK to slip a rump steak onto your plate (and assume the diner won’t notice) and some just can’t seem to grasp the concept of what rare actually is.

The Bell is an exception. On both occasions eating there my steak has been deliciously, perfectly rare. Seasoned “just right”, those steaks melt in the mouth and are full of flavour. What’s more, they are served alongside the best chips in Shropshire. Yep! I’m making the extraordinary claim that The Bell Inn serves the best chips in Shropshire (but I’m happy to be proved wrong if anyone knows of better!) Alongside the steak and chips is a nicely dressed crisp salad complete with croutons, which are a nice (and often over-looked) touch and fab onion rings.

I think we’ve definitely found a well kept secret in The Bell, but I can’t keep this one to myself. If you’re local to Shropshire I definitely recommend checking it out.

The Bell Inn is located in Cross Houses, Shrewsbury, Shropshire SY5 6JJ and has a large car park, bed & breakfast facilities, as well as space for caravans and campers.

HostPapa? More like HostCrapper*

hostpapa-logo* sorry, I couldn’t help myself.

Yesterday I opened my work inbox first thing to a panicked email from a client (Sutton Community Farm) labelled “URGENT” – their website had gone down (again) with a Resource Limit Reached error. I quickly shot off a reply to let them know that this was usually caused by hitting a resource limit (e.g. server CPU usage) imposed by their host — HostPapa — and then I began investigating.

It only took a few moments to narrow it down to a massive stream of traffic to /wp-login.php which clearly indicated an attempted brute force attack on the WordPress login system. Common, but annoying. Coincidentally at the same time I noticed my own site (this one) was being hit by a similar attack though with less force – enough to slow the site down but not enough to push it beyond allowed resource usage levels like my client.

I e-mailed the client to let them know the cause of their issues so that they could update their support ticket with HostPapa, and a short time later emailed my host (Clook Internet) to notify them of the issue I was having.

Within 4 minutes Clook had not only dealt with my issue but had responded to my support ticket to let me know. Problem solved, top notch service as always.

HostPapa on the other hand, despite having been told exactly what the issue was, took hours to reply before finally suggesting:

Enable Gzip compression form cPanel:
login to Cpanel and then go to Software/Services.Click “Optimize Website”. For the best results,select “Compress the specified MIME types”, ascompressing all of your content can sometimescause problems in your hosting configuration. Makesure all MIME types on your website are compressedto get the most benefits out of the compression

Seriously! GZIP compression, while nifty for optimising page load times by serving compressed versions of files to your browser, is not going to mitigate a massive brute force attack.

I provided my client with an excerpt of the visitor logs so that they could show HostPapa exactly what was going on (because at this point I assumed HostPapa were too incompetent to do this themselves) and set about trying to find a way to attempt to block the traffic myself with the limited tools available through the basic HostPapa shared hosting cpanel. This was not only necessary but urgent – Sutton Farm’s veg box system hinges upon an export generated by the website on a Monday which they could not get to while the website was down.

By early afternoon I was able to curb the effects of the massive traffic load using the deny all directive to throw up an error 403 for all IPs except for my own:

<Files ~ "^wp-login.php">
Order deny,allow
Deny from all
Allow from 82.##.##.##

Satisfy All
</Files>
ErrorDocument 403 "Not acceptable"

which allowed me to download the export and get the farm the data they needed to process their customer’s orders for the week.

At 16:53 yesterday, a full working day since the issue was initially noticed, the wp-login.php page was still being absolutely pelted by malicious traffic attempting to brute force a login to WordPress, and HostPapa had still made absolutely no attempt to help sort the issue which not only affected the uptime and stability of Sutton Farm’s site (potentially causing them to lose business) but, as is the very nature of shared hosting, will have affected other users on the server their site is on.

HostPapa finally responded again late last night (far too late to actually achieve anything) pointing out that the site was now back up but we’d probably want to install a WordPress security plugin. Oh, and they suggested optimising the site again.

HostPapa’s response to my client’s urgent enquiry was absolutely terrible. Not only did they take far too long to respond (ironic, given the tagline on their site Real help – from real people – is here when you need it) to a business critical issue, but had absolutely no solutions to the actual problem even when they were directly informed of the issue and provided with proof of what was happening.

I’ll be migrating my client to an alternative hosting provider this week and in no uncertain terms recommend against using HostPapa’s web hosting services.

Quick Product Mention: B&Q Mega Playmat

We nipped to B&Q yesterday to get some bits to finish boarding the animal shed for winter and, as is the nature of any shopping trip, ended up buying things we didn’t plan on. One of the things we bought was the B&Q mega playmat to replace the aging and unravelling (thanks to a certain bunny) IKEA one I bought when Izz was a baby:

mega-playmat

I’m mentioning it because it is a) the biggest playmat I’ve seen for that money (£12) and b) the kids not only played on it together but did so for a good couple of hours which is basically unheard of in this house. Unfortunately it looks like you can’t buy it online but it’s worth keeping an eye out for (with Christmas coming?) if you’ve got a local B&Q. :)

Exclusive Preview of WP Email Capture Premium

One of the benefits of being super awesome cool like me is the things I get to see and do before everyone else. Today I am playing with (cough.. ‘testing’) WP Email Capture Premium before it’s official launch.

WP Email Capture is an e-mail subscription plugin for WordPress. Install it, activate, and watch as the masses add their e-mail address to your marketing list. Or just your mum, whatever. We can’t all have thousands of fans.

The plugin, rated 4 out of 5 on wordpress.org, is CAN-SPAM compliant, works in a widget or post or page and exports to CSV ready for import into your e-mailing software of choice. And if that isn’t cool enough for you, WP Email Capture Premium has extra good stuff, like the ability to build and maintain multiple e-mail subscription lists:

add-list

Ideal if you want to maintain more than one mailing list, e.g. a “thought of the day” or “special offers” as well as a monthly newsletter.

Or, perhaps you want to take out the middle-man altogether, and have WordPress & WP Email Capture Premium integrate directly into an e-mail suite such as MailChimp? It can do that too using the Add / Edit External List feature:

external-list

And, perhaps the feature that I’m most stoked about because of it’s potential to boost the effectiveness of newsletter sign-ups by telling the webmaster what’s working, where referrals are coming from, landing page hits and tracking conversions: the stats centre. Filter stats by date, by individual list or look at the whole picture… it’s a data whore’s wet dream!

statistics

If you’re interested in getting your grubby hands on a copy of WP Email Capture Premium, register your interest at the official plugin site to be notified of the details of release.

Unrequested review of nothingbutsong.org/tutorials

Reviewed: No idea
Site URL: nothingbutsong.org/tutorials

I make no secret of the fact that I really don’t like poor quality tutorial sites. I make no secret of the fact that I aim to ‘out’ those with bad tutorials on their personal websites. Consider yourself blessed to be the first in a (hopefully) long series of correcting the mistakes that others so frequently make.

This is going to be all about the tutorials, so I’ll step right in. Slightly different to my normal style of reviewing, they have been clearly marked with headers based on the category, then tutorial name. Any I don’t mention aren’t worth mentioning or aren’t ‘faulty’. This makes it nice and easy for you to skip through and cuts out the unnecessary word-filler crap.

WordPress Tutorials

Fast Installation

You point out that the tutorial is “For those of you who have installed similar scripts or have a lot of knowledge about these types of things“: surely someone who has a lot of knowledge on these types of things would not need to visit an amateur tutorial site to figure out how to install WordPress? I mean, it hardly takes a genius to install the script. That said, following the instructions I ended up at www.yoursite.com/wp-admin/install.php which is a site advertising whitelist solutions for my inbox and is of no relevance to WordPress. Of course I’m being pedantic, but you may wish to point out that “yoursite.com” refers to the URL of the person’s site.

Detailed Installation

The first sentence of this tutorial contains too many ‘and’s as well as inaccurately calling the WordPress install a “file”. If only the script was a singular file, eh?! Reword it to something like: “Download the latest version of WordPress from the official website. Using [WinZip/7-Zip/WinRAR/insert as appropriate] extract the folder to your hard drive; I would suggest using your Desktop as it will make it easier to find later on.”

It might be worth mentioning that not all hosts have cpanel. Godaddy customers may find themselves confused as Godaddy uses a custom management system.

There are some other wording issues: “Return to the folder where your extracted WordPress.” -> “Return to the folder where you extracted WordPress” (or “Return to the location that you extracted the WordPress zip download to.”) “The hostname of your server (usually always ‘localhost’)” -> the word ‘always’ is redundant there (particularly as some of the larger hosts do not use localhost).

Common Installation Problems

..lists only one problem. It may be worth renaming the tutorial to something more relevant to the content, such as “WP Install: Headers Already Sent Error”. This will give your visitors a more specific idea of what the tutorial contains as well as improving your chances of being listed in the search engines results for “omg I’m getting a headers already send error!!!” (for example).

Add Clickable Smilies To Your WordPress

Two things that immediately struck me about this tutorial:

  1. Your note at the top “This hack works on WordPress 1.2” would have immediately made me browse away if I was using anything above that version, despite you offering tips for the newer ones. The page is split up with headers, the note is therefore irrelevant.
  2. At the bottom of the tutorial it states “[…] or read the instructions located in the wp-grins.zip file” — if there instructions available with the ‘hack’, why the need for a tutorial?

Change Your WordPress Smilies

The first link (”jaunty.nu”) doesn’t seem to contain any smilies but did have a picture of the owner’s panty-wearing ‘lady bits’ on the front page. If you’re going to keep the link up you may wish to warn of inappropriate content so that minors don’t get a blast of a random camwhore’s twat. The line “Upload the smilies (in Binary format)” is likely to confuse anyone who has no idea about the differences between ASCII and binary mode and needs to be removed (most FTP clients default to ‘auto’) or explained further.

You stress the importance of following the ‘format’ set in vars.php but fail to explain what it means. While it may be obvious to me that the ‘:heart:’ => ‘heart.gif’, means that using “:heart:” gives the smiley “heart.gif”, a WordPress n00b won’t know that.

Add The Most Recent Posts To Your WordPress

Because of your permalink structure, the link to the tutorial on creating my-hacks.php (so very helpfully named “click here”) is broken. “You can edit the following lines in the above tag:” ..that PHP function is not a tag.

Change Admin Username

So in this case, we go to trust phpmyadmin” -> “So in this case, we resort to trusty phpMyAdmin”. “Databses” -> “Databases”.

Integrate Ask&Answer Into WordPress

This tutorial doesn’t specify which script you’re trying to integrate into WordPress. I assume you mean that piece of crap “Waks Ask&Answer”. In which case I’d suggest a more appropriate tutorial would be advising people how to get rid of the script.

PHP Tutorials

These all seem to be nicked from elsewhere and re-written, but I’ll add my thoughts anyway…

Blog Crew Code in PHP

I have no idea what a “blog crew” is but I’ll be honest with you, it was this tutorial that irritated me enough to start the review. Specifically this line: “PHP is the next gen of web design“. WHAT? PHP is absolutely nothing to do with web design. Nothing. At all. Ever. PHP is a scripting/programming language, web design is the art of creating designs for the web.

Regarding the actual tutorial: NL-Random was removed from CodeGrrl for a reason. I don’t know the reason, but nonetheless it doesn’t mean people like yourself should start replicating the content just because it’s not available anymore. What’s more, by the sound of what you’re trying to say a simple include of the link list would be more efficient.

Browser-Dependent Stylesheets

This code is lengthy and inefficient. If your code is semantic and standards-compliant, validates and looks good in Firefox then there’s no reason why it won’t work in Opera and Netscape. This only leaves MSIE which a conditional comment would suit better (and doesn’t need PHP support).

Display Current Date

I fail to see the point of this tutorial. You’ve just taken a few chunks from php.net/date and re-worded it in a crappy half-handed manner. You don’t even mention that echoing date() will show the servers date, not the date of the person looking at the page.

PHP Includes

PHP Includes is a great time saver” -> are, not is. “Using the PHP include() function you can call any .php or .html file to display anywhere within a PHP file.” -> using include() you can call ANY file: it does not need to end in .php or .html. You forgot to mention that allow_url_fopen(), and in PHP 5.2.0+ allow_url_include() need to be on for including via URL to work.

Random Quotes

$quotes isn’t initialised before you start adding data to it, and you don’t mention the need for escaping quotation marks should a person want to put a quotation mark in the array as it stands.

Shoutbox

“Your” shoutbox tutorial relies on register_globals which no sane host leaves turned on anymore, and is sending unsanitised “dirty” data straight to a database. You should rename this tutorial “How to get hacked in 30 seconds”. If you have no idea about PHP security, don’t publish/re-publish attempts at scripts.

Users Online

This is another insecure, easily-hackable tutorial. Again, it relies on register_globals being turned on. It would also be incredibly resource-intensive for anyone with more than a few hits a day because of it’s lack of optimisation and untidy coding: constantly inserting, selecting and deleting from a database for the sake of this shitty script is a bad idea.

Find Your Absolute Path

Stealing from CodeGrrl is probably not a good idea: it has a loyal user base. That said, the code is outdated and unnecessary anyway and can be replaced with <?php echo $_SERVER['PATH_TRANSLATED']; ?>.

Simple Navigation System

Another replicated tutorial, another inefficient method. You know, it amazes me how people seem to steal the bad tutorials but tend to leave the good, quality ones. Anyway, if you’re relying on numbers to identify your pages there’s no reason why you need to use a switch statement and multiple includes — simply check that the data in $_GET['id'] is a number and you can include it directly. E.g:

<?php if ((int)$_GET['id']) {
    include("page".$_GET['id'].".php");
} ?>

Add an else and you’ve got a failsafe.

CSS Tutorials

Introduction

Alongside more poor English is: “CSS is surely becoming the new generation in web page design” -> hold on, I thought PHP was the new generation?! C’mon, get it right! “CSS alongside with XHTML 1.0 can create a web page that views almost identically on most web browsers” -> a bit of HTML 4.01 and a page can look the same across all browsers, it’s not necessary to add CSS to achieve that. Your next line suggests that the former line (re: identicality in browsers) is only true if the CSS is valid. On the contrary, perfectly valid code can have different affects in modern browsers because of the browser manufacturer’s choice not to follow web standards.

People should learn how to code correctly now that there are web standards.” -> yes, perhaps you should.

An Example Of How CSS Works

Demonstrating how sleek CSS is by customising text in a table is like a blunt pencil: pointless. Firstly, the table in your example is not necessarily demonstrating tabular data and is therefore being inappropriately used. Secondly you’re assigning each table cell a class when you could customise the entire lot of table cells in one go:

table td {
properties here
}

How To Create A CSS?

It’s also a good idea to place sans-serif or serif at the end of the list so if someone’s PC doesn’t have any of the fonts you listed” -> you don’t explain which to use in which circumstance and what the difference is between a sans-serif/serif font. You also incorrectly state that a person must use one of the ‘colour words’ you have supplied or a hex value; an rgb value would suffice (color: rgb(123, 213, 244);).

In your example .html file you add an XHTML Strict doctype but don’t include the forward slash to close the link tag at the end (<link />).

What Are ID Selectors?

“IDS” is incorrect terminology. If you must capitalise it, the ’s’ should remain lowercase. Your example — using <div id="header"> — is promoting divitis. There’s no reason why you couldn’t have used the appropriate tag to demonstrate customising a header: h1-h6. Again you repeat the incorrect statement about the necessity of hex colours (when rgb values can be used).

What Is The Span Tag?

This whole tutorial is bollocks. <span> isn’t “to take over any other code that it ’spans’“, it is used to semantically define a section in a document that can then later be styled. “It’s used with the class selector” -> it doesn’t have to be used with a class, it can be used with an id or even without any attributes at all.

How Do I Import Style Sheets?

Importing Stylesheet’s” -> no need for that apostrophe. Re: the first method, “This is the most common way of linking to your CSS file, and probably what you will use unless you know CSS well enough to know the difference.” -> you don’t need to “know CSS well” to be interested in the different way of referencing a CSS file. The second method: “This is for layouts that need a different stylesheet for individual pages” -> I fail to see why you’d rely on inefficient inline styling for differing layouts when you could easily reference different stylesheets on each page with <link />. Alternatively you could create a ‘main’ stylesheet with all of your general coding: font sizes, margins, paddings etc and then simply override it with a second external stylesheet. Lastly, the third method: “If you aren’t a CSS wiz, you shouldn’t attempt to use this code.” -> why not? If you teach someone how to use something properly, there’s no reason why even a newbie couldn’t attempt it. That said, I don’t know why a “CSS wiz” would want to read this tutorial…

How Do I Center My Layout?

You fail to explain why/how this tutorial works. You incorrectly state that everything must be placed within a div named ‘content’ to be centered when in fact, any id would work. The correct margin setting is margin: 0 auto; and you forget to mention that text-align: left; must also be added to counter the text-align: center; in the body.

Remove/Add Custom Bullets

There are many things you can do with the bullets that appear when you have an unordered list” -> there are many things you can do with an ordered list. Custom bullets is not a limited approach to design. Talking of which, under “Custom Bullets” you have the crappiest, most bloated piece of code for assigning images to a list I’ve seen this year. Your 9 line example can (and should) be replaced with: ul { list-style-image: url(bullet.gif); }. I think my example wins.

Cell Rollovers

As well as being a fairly useless tutorial, your example at the bottom of the page doesn’t work.

JavaScript Tutorials

I would like to sum up all four of these tutorials with one word: pointless.

Miscellaneous Tutorials

Browser Redirect

Nobody likes meta refresh redirects. For people who have moved their website, I would suggest setting up a redirect with PHP using the header() function as this would allow them to set a status code, marking the page as permanently deleted: this is friendlier to search engine robots.

Custom 404 Error Page

There are two things missing from this tutorial:

  1. An explanation on what to do if you cannot rename a file to “.htaccess” which anyone using Windows will find.
  2. Brief instructions on how to make this work for all error message pages, which would make it ‘complete’.

Document Type

XHTML 1.0 Strict is used when everything in your document is valid code.” -> all code should be valid as per the doctype, stating that you must have valid code for a particular doctype is silly. The explanations here are poor, you should go further in depth on what the difference is between the doctypes and perhaps give advice on which a person should use.

Make a MySQL Database

Again, only works for people with cpanel. Cater for other options.

Stop Spam

If only it was as simple as following this tutorial. You don’t mention what the code is doing, or the fact that people using it need to create a page called “X.html” or their logs will be filled with 404s caused by these bots being redirected.

Host Subdomains with their Own cPanel

it’s prolly true” -> wtf? Apart from that irritating English “mistake” this is probably the most useful tutorial you’ve got. Unfortunately it doesn’t compensate for the lack of quality throughout the rest of the site.

And now that we’re done with the tutorials…

Your code is of a similar standard to your tutorials (i.e. pants). <meta name="Revisit-After" content="1 day"> appears twice in the head of the document and is missing the closing ‘/’. You’re using the deprecated <font> tag as well as <br> instead of <br /> undearneath the tacky advertising banner. The & in “Subdomains & cPanel” is unescaped and should be &amp; and your (hiss) <iframe> contains attributes that are invalid under the XHTML Strict doctype (align, vspace, hspace).

In summary, the overall quality and accuracy of your tutorials is generally poor and the level of English even more so. I can only assume you’re not from an English-speaking country; if this is the case you may wish to get a more fluent friend to look over your tutorials before you make them live. If you’re going to offer tutorials, make sure you fully understand what you’re saying before undertaking the task and please stop distributing outdated code that has been “acquired” from elsewhere. One final suggestion is to ditch the advertising and thus the code that’s failing the validation test.