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.

Comments are closed.