Tag Archives: HTML

100Feed: Beware of Sites Offering Online Certification

12 Sep

ABOUT W3SCHOOLS

Before I tell you about my personal experience with W3Schools (a company based in Norway), you should know that W3Schools.com is not affiliated with the W3C in any way. Members of the W3C have asked W3Schools to cut off any connection with their name, and they have refused to do so.

W3Schools offers courses and certificates for web development; the value of those certificates is highly debatable. No employer recognizes or respects W3Schools certificates. W3Schools has absolutely no authority over the technologies for which they claim to provide certification.

At first I believed this website would provide completely accurate information; and who would offer a certificate for $95.00 if their exams and quizzes weren’t completely accurate? The truth is, this site is completely inaccurate. Their exams are flawed. On some exams, correct answers are counted as incorrect! You can read more about this at http://w3fools.com/ where they provide proof to the above claims.

W3Schools robs you of your time and money. They do not allow their viewers to submit corrections anywhere on their site (most websites do, even my blog has this option). The truth is, if they don’t give you any type of schedule, they make you pay more than $50 for a certificate, and they don’t allow you to submit corrections, chances are they’re bad news.

MY EXPERIENCE

On January 28, 2012 I paid $95.00 for an exam that, if passed, would grant me a CSS certificate from W3Schools. W3Schools allows two attempts; if you fail the first, you have another chance to pass it. In their Terms of Service they state that only the best of the two attempts counts. One has to receive a score of at least 75% to pass. On the first attempt (January 28), I earned a failing grade of 49 correct answers out of a possible 70. Next to this on the results page was 58%, which is clearly inaccurate. On the second attempt (September 7), I earned a passing grade of 58 correct answers out of a possible 70. The percentage was again incorrect (this does not equal 78%). The results page, however, indicated I had failed the exam.

The next morning, on September 8, 2012, I sent an email to exam@w3schools.com stating this:

Dear Mr. Kai Jim Refsnes,

On September, 7, 2012, I took my second attempt at the CSS Certification exam. At the end of the seventy-question exam, it alerted me that I had “failed”. However, it says that the score required is 75%. My results showed that I earned 78% on the second attempt, which would be a passing grade if “the best of the two attempts counts”. Despite this, the results page indicates that I have failed. I paid $95.00 (USD) for the exam on January 28, 2012. Thank you for your time.

Sincerely,
Samantha R. Selman

He responded to my father on September 12, 2012:

Hello

I have looked into the matter of your concern, and I appreciate you contacting me regarding this matter. Your daughter participated in our CSS Certification exam on both January 28, 2012 and September 8, 2012. Her first exam attempt shows a score of 35 correct answers of a total 70. Her second attempt however; 48 of 70. Unfortunately, she only earned 68,5% on her second attempt. And a 75% score was required to pass.. The attached file you sent me has clearly been manipulted.

My reply was this:

Mr. Refsnes,

In an email you sent to my father, you accused me of manipulating the attached file. My family and I do not appreciate your false accusations or the multiple mistakes in your website’s code that apparently have not been fixed. I witnessed the final score with my own eyes and took a snapshot of my results immediately after the exam. It showed a failed grade of 49 of a possible 70 on attempt one (the percentage is also incorrect) and a passing grade of 58 of a possible 70 on attempt two (the percentage is incorrect though). I do not blame this error on you, but I do blame it on an error in your code. I did not manipulate this snapshot; if you can access my results, I would appreciate a snapshot being emailed to me, because I can no longer access my account on your website. I look forward to your response so I can prevent my father from contacting the FTC; I do not want any problems with your company, I simply want the error in your code fixed and my truthful results emailed to me. Thank you for your time and hopefully this problem can be resolved quickly.

Sincerely,
Samantha R. Selman

I am not upset because they claim I failed. I am infuriated because they accused me of lying after I provided proof that their system says I passed! The error in the percentages make me question if the results provided are correct; but if they submit results to their customers and present their site as being completely accurate, and the results page claims I passed the test, I should receive a certificate. If it is revealed that their code is to blame for this error, I hope they will review their code and fix the problem. If it is not their code, I would at least like a refund and an apology. For me to pay $95 for an inaccurate exam and an insult is ridiculous!

WHAT TO DO AND WHERE TO GO INSTEAD

As far as certification goes, certification is not required in most cases. Facebook, Google, and Twitter do not require certification from their employees. They do, however, test them (and no, they don’t use W3Schools as their testing platform). If you have a job interview with Google and they ask you to prove that you can “code”, they won’t give you a multiple choice exam. They’ll place you in front of a computer or in front of a drawing tablet and ask you to write the code – actual code that works. W3Schools does not teach you how to do this – they teach you how to answer multiple choice questions.

If they have manipulated your results, or your results are inaccurate, you can always contact the Internet Crime Complaint Center (IC3) and file a complaint at http://www.ic3.gov/complaint/default.aspx . If you have a story similar to mine, feel free to share in the comment section below. If W3Schools is scamming its customers, people need to know about it. No one else needs to be victimized by this company.

If you think W3Schools is the only website where you can become certified after completing courses and an exam, think again. There are many more online sources that are accurate and free. These are a few alternate sources to W3Schools that are free. Their information seems accurate, plus they don’t have sites setting up campaigns against them (which is always a good sign.)

Open Source Tutorials http://www.opensourcetutorials.com/tutorials/Client-Side-Coding/

Better Programmer (Java Certification) provides a free test and a certificate if you pass their exam. Their test is based on real code. http://www.betterprogrammer.com/

E-Learning Center (oh, did I mention it is Better Business Bureau accredited?)
http://www.e-learningcenter.com/free.htm

Opera Web Standard Curriculum
http://dev.opera.com/articles/view/1-introduction-to-the-web-standards-cur/#toc

Google Code University http://code.google.com/edu/submissions/html-css-javascript/

Sitepoint http://reference.sitepoint.com/css

The actual W3C http://www.w3.org/wiki/HTML/Elements

Mozilla’s developer network https://developer.mozilla.org/en-US/docs

100Feed: 100 Tips and Tricks for CSS Coding

25 Apr

CSS logo

1 It’s critical when working with CSS to be aware of the various properties at your disposal and how to use them correctly.

2 Using a good editor can increase productivity. Syntax highlighting and auto-complete functionality (plus validation and code references) make life easy. Check out Notepad++, Coda, and don’t discount Dreamweaver CS’s code view until you try it.

3 In many ways, experimentation is the mother of innovation. Give yourself time to play; trial and error will help you learn and memorize techniques quickly. Check out these CSS3 experiments, for inspiration: How to Create Inset Typography with CSS3, Semantic CSS3 Lightboxes, and 10 Interesting CSS3 Experiments and Demos.

4 Enable Gzip compression server-side whenever possible; it shrinks the size of files such as CSS and JavaScript without removing any of the content.

5 Caching will conserve bandwidth for visitors and account for much faster speeds. Take advantage of it whenever you can. Learn about optimizing browser caching.

6 Whitespace is important for CSS readability. Using whitespace to format your stylesheet adds bytes to the file size, but it’s made up for in increased readability.

7 Avoid using inline code (in either elements using the style attribute or in the HTML document within tags), and put them instead in your external stylesheets. It’ll be easier to maintain and also takes advantage of browser caching.

8 Whatever method you use to lay code out, be consistent. You’ll avoid potential problems such as misinterpretation.

9 Conditional comments can help you target versions of Internet Explorer for style. Filtering vendor-specific code isn’t ideal, and comments are safer than ugly hacks.

10 This tip is slightly controversial, but I recommend using a single stylesheet rather than multiple ones. It reduces the number of HTTP requests and improves maintainability, giving your site a performance gain. This is a tip supported by Google Page Speed guidelines.

11 When there are conflicting style rules, style rules that are later down the stylesheet supersedes the ones that come before it. Thus, put mission-critical declarations at the end, where they won’t be in danger of being overridden by other styles.

12 If you encounter a bug and can’t determine its cause, disable CSS (using something like Firebug or the Web Developer add-on) or simply comment out all of the styles, and then bring selectors back one by one until the fault is replicated (and thus identified).

13 Make sure your code works in various browsers. Check it against the latest versions of the top five: Internet Explorer, Firefox, Chrome, Safari and Opera.

14 Additionally, ensure that your code will degrade gracefully when CSS is disabled in the user’s browser. To test this, either turn styles off in every browser or use a text browser such as Lynx.

15 Ensuring that your code degrades gracefully is obviously important, but many people forget that some visitors will have a dodgy browser or have styles turned off, so check that your fallbacks work.

16 Every browser has a built-in debugger. In IE and Firefox you can get to the inspector by hitting F12; for Chrome, Safari and Opera, press Ctrl + Shift + I.

17 Browser emulators can’t replace the real thing, so use a real or virtualized edition of a browser or device.

18 Did you know that PHP code can create dynamic CSS files? Here’s a tutorial on that. Just give the file a .php extension and ensure that the file declares the document header with a text/css content type.

19 Naming CSS files can be tricky. One of the best ways to approach the task is to keep file names short and descriptive, like screen.css, styles.css or print.css.

20 Any code or process you create is valuable, and recycling what you’ve produced for other projects is not a bad thing: pre-existing code is a great timesaver, and this is how JavaScript and CSS frameworks are born.

21 While comments in CSS files can assist other people who read or maintain them, avoid writing comments unless they are required. Comments consume bandwidth. Write CSS in a self-explanatory manner by organizing them intuitively and using good naming conventions.

22 If you’re struggling to remember what’s available in CSS (or even CSS3), get some cheat sheets. They’re simple and can help you get used to the syntax. Here are some excellent CSS cheat sheets: CSS Cheat Sheet (Added Bytes), CSS Shorthand Cheat Sheet (Michael Leigeber), CSS 2.1 and CSS 3 Help Cheat Sheets (PDF) (Smashing Magazine).

23 Bad code breaks more websites than anything else. Validate your code by using the free, web-based W3C CSS Validation Service to reduce potential faults.

24 Vendor-specific CSS won’t validate under the current W3C specifications (CSS2.1), but could give your design some useful enhancements. Plus, if you’d like to use some CSS3 for progressive enhancement, there’s no way around using them in some instances. For example, the -webkit-transform and -moz-transform property was used to progressively enhance these CSS3-animated cards for users using Safari, Chrome, and Mozilla Firefox.

25 Keep multiple CSS files in a single directory, with an intuitive name such as css/. If your website has hundreds of pages, maintainability and information architecture are vital.

26 Be careful when using the media attribute in your HTML declaration for an external CSS file. You might be unable to use media queries to better provide pre-cached alternative visuals.

27 If you find elements that use the same properties and values, group them together by using a comma (,) to separate each selector. This will save you from repetition. For example, if you have the following:
h1 { color:#000; }
h2 { color:#000; }
Combine them as such: h1, h2 { color:#000; }

28 Printer-friendly stylesheets are very important if you want to save your visitors’ ink and paper. Use the @media print at-rule, and remove anything that isn’t necessary on the printed page.

29 Accessibility also has to do with how the written word is spoken. The aural (now deprecated in CSS) and speech media queries can improve usability for screen readers.

30 Unfortunately, the handheld media query in CSS isn’t widely supported. If you want your website to work on mobile devices, don’t depend on it to serve the correct visuals to mobile devices.

31 Take the time to eliminate duplicate references and conflicts in your CSS. It will take some time, but you’ll get a more streamlined render and fewer bytes in your files.

32 When working with mouse hover events, deal with the (1) :link pseudo-class, then (2) :visited, then (3) :hover and finally (4) :active — in that order. This is necessary because of the cascade.

33 Making a website work well on Apple iOS devices is straightforward: to scale your design, just use CSS3 media queries with the appropriate min-width and max-width values. Here’s a tutorial for that.

34 Make the most of CSS inheritance by applying required styles to parent elements before applying them to the children. You could hit several birds with one stone.

35 You can apply multiple classes to an element with space separation, which is great if you want to share properties with numerous elements without overwriting other styles.

36 If you don’t want to deal with IE6′s conditional comment quirks–they require a separate CSS file–then you can use the star hack (* html) selector, which is clean and validates.

37 HTML tooltips are fine for plain text, but the :hover pseudo-class for CSS tooltips gives you more options for showing styled content. Check out this tutorial on how to create CSS-only tooltips.

38 Using attribute selectors, you can add icons or unique styles depending on the file type you link to in an anchor. Here’s an example with which you can add style to a PDF link: a[href$=’.pdf].

39 You can also use attribute selectors to target a specific pseudo-protocol such as mailto or skype: [href^=”skype:”].

40 Rendering CSS takes time, and listing selectors adds bytes. Reduce the workload of a renderer by using only the selectors you require (an id is better than many child references).

41 Not everyone will agree with this, but I recommend writing every “custom” selector down as a class (before making it an id) to help eliminate duplicate entries.

42 When structuring your CSS file by selectors, the convention is to list elements, then classes (for common components) and finally any ids (for specific, unique styles).

43 Naming conventions for selectors are important. Never use names that describe physical attributes (such as redLink), because changing the value later could render the name inappropriate.

44 Case sensitivity relates to naming conventions. Some people use dashes (e.g. content wrapper) or underscores (i.e. content_wrapper), but I highly recommend using camel case (e.g. contentWrapper) for simplicity.

45 The universal selector (*) is used widely in CSS reset mechanisms to apply specific properties to everything. Avoid it if you can; it increases the rendering load.

46 With CSS3 media queries, you can easily target the orientation of a viewport with portrait or landscape mode. This way, handheld devices make the most of their display area.

47 Apple’s devices are unique in that they support a tag, which has stylistic value attached to it. You can use this to force the screen to zoom at a fixed rate of 100%.

48 The two CSS3 pseudo-elements, :target and :checked have great potential. They apply their designated style only to certain events and can be useful as hover event alternatives.

49 Embedding content in CSS is a unique way to give anchor links some description in printer-friendly stylesheets. Try them with the ::before or ::after pseudo-elements.

50 IDs can serve a dual purpose in CSS. They can be used to apply styling to a single element and to act as an anchoring fragment identifier to a particular point on the page.

51 Many designs are focused on grids and the rectangular regions of the viewport. Instead, create the illusion of breaking out of the box for added effect.

52 If margin: auto; on the left and right sides isn’t getting you the central point you desire, try using left: 50%; position: absolute; and a negative margin half the width of the item.

53 Remember that the width of an item constitutes the specified width as well as the border width and any padding and margins.

54 Don’t use CSS resets. They are generally not needed if you take the time to code well.

55 A CSS framework such as Blueprint or YUI Grids CSS might assist you speed up development time. It’s a bit of extra code for the user to download, but it can save you time.

56 Remember that Internet Explorer 6 does not support fixed positioning. If you want a menu (or something else) to be sticky, it will require some hacks or hasLayout trickery.

57 Whitespace in web designs is amazing; don’t forget it. Use margins and padding to give your layout and its content some breathing room. You’ll create a better user experience.

58 If one thing over-complicates the task of scaling a design the way you want, it’s using inconsistent measurements. Standardize the way you style.

59 Different browsers have different implementations; visually impaired users may want to zoom in, for example. Give your layout a quick zoom-test in web browsers to ensure the style doesn’t break! 60 Most browsers can use box-shadow without extra HTML. IE can do the same with filter:
progid:DXImageTransform.Microsoft.Shadow(color=’#CCCCCC’, Direction=135, Strength=5);

61 Rounded corners aren’t as difficult to make as they used to be. CSS3 lets you use the border-radius property to declare the curvature of each corner without surplus mark-up and the use of images.

62 One disadvantage of liquid layouts is that viewing on a large screen makes content spill across the viewport. Retain your desired layout and its limits by using min-width and max-width.

63 WebKit animations and transitions might work only in Safari and Chrome, but they do add a few extra unique, graceful flourishes worthy of inclusion in interactive content.

64 If you want to layer certain elements over one another, use the z-index property; the index you assign will pull an element to the front or push it behind an item with a higher value.

65 Viewport sizes aren’t a matter of resolution. Your visitors may have any number of toolbars, sidebars or window sizes (e.g. they don’t use their browsers maximized) that alter the amount of available space.

66 Removing clutter from an interface using display:none might seem like a good idea, but screen-reader users won’t be able to read the content at all.

67 Be careful with the overflow CSS property when catering to touch-screen mobile devices. The iPhone, for example, requires two fingers (not one) to scroll an overflowed region, which can be tricky.

68 Have you ever come across CSS expressions? They were Microsoft’s proprietary method of inserting DOM scripts into CSS. Don’t bother with them now; they’re totally deprecated.

69 While the CSS cursor property can be useful in certain circumstances, don’t manipulate it in such a way as to make finding the cursor on the screen more difficult.

70 Horizontal scrolling might seem like a unique way to position and style content, but most people aren’t used to it. Decide carefully when such conventions should be used.

71 Until Internet Explorer 9 is final, CSS3 will have some critical compatibility issues. Don’t rely too heavily on it for stable layouts. Use progressive enhancement concepts.

72 CSS makes it possible to provide information on demand. If you can give people information in small chunks, they’ll be more likely to read it.

73 When showcasing a menu in CSS, be consistent in implementation. People want to know about the relationship between objects, and it’s important to avoid dissonance.

74 CSS isn’t a solution to all of your layout woes–it’s a tool to aid your visual journey. Whatever you produce should be usable and logically designed for users (not search engines).

75 Once your layout is marked up with CSS, get feedback on how usable it really is; ask friends, family, co-workers, visitors or strangers for their opinions.

76 Squeezing content too close together can decrease overall readability. Use the line-height property to space lines of text appropriately.

77 Be cautious about letter-spacing: too much space and words will become illegible, too little and the letters will overlap.

78 Unless you have good reason, don’t uppercase (i.e. text-transform:uppercase; ) long passages of text. People hate reading what comes off as shouting.

79 Accessible websites have good contrasting colors. Tools exist to measure foreground colors against background colors and give you a contrast ratio. Check out this list of tools for checking your design’s colors. Be sure your text is legible.

80 Remember that default styles might differ greatly from browser to browser. If you want stylistic flourish, reinforce the behavior in the stylesheet.

81 In the old days, the number of colors that a screen could display was rather limited. Some people still use old monitors, but the need for web-safe colors has drastically reduced.

82 Building a font stack is essential when making a design degrade gracefully. Make sure that fallback typefaces exist in case the one you request isn’t available.

83 With Vista, Windows 7 and MS Office 07–10 (and their free viewers), a number of cool new web-safe fonts have become available, such as Candara, Calibri and Constantina. Read about Windows fonts.

84 Plenty of smartphone apps can boost your ability to build a stylesheet, but Typefaces for the iPhone and other iOS4 devices is particularly useful because it shows you every font installed.

85 Web-safe fonts are no guarantee; people could quite possibly uninstall a font even as ubiquitous as Arial (or Comic Sans!). Then their browsers wouldn’t be able to render it.

86 Avoid underlining content with the text-decoration property unless it’s a real link. People associate underlined text with hyperlinks, and an underlined word could give the impression that a link is broken.

87 Avoid the temptation to use symbolic typefaces like Wingdings or Webdings in the layout. It might save KBs on imagery, but it’ll serve nonsensical letters to screen-reader users.

88 Remember that @font-face has different file format requirements depending on which browser the user is on, such as EOT, WOFF, TTF and OTF (as you would find on a PC). Serve the appropriate format to each browser.

89 The outline property is seriously underused as an aid to web accessibility. Rather than leaving it set to the default value, use border styles to enhance an active event’s visibility.

90 Smartphones do not have the same level of core support for web typography that desktop browsers do, which means fewer web-safe fonts and no conventional @font-face embedding.

91 Cross-browser opacity that degrades gracefully can be applied using the -ms-, -moz-, -khtml- vendor prefixes and the filter: alpha(opacity=75); property for Internet Explorer.

92 You can make background-image bullets by using list-style-type:none;, adding a padding-left indent and positioning the background-image to the left (with the required pixel offset).

93 Helping users identify an input box is easy; just add a background image of the name (like “Search” or “Password”) and set it so that the image disappears when the box is clicked on by using the :focus pseudo-class and then setting the background property to none.

94 Large and visible click regions enhance the usefulness and usability of anchor links, which in turn guide people among pages. Be attentive when you style these.

95 Remember that background images do not replace textual content. If a negative indent is applied, for example, and images are disabled, then the title will be invisible.

96 Navigation items need to be labeled appropriately. If you use a call-to-action button or an image-based toolbar, make sure a textual description is available for screen readers.

97 If the idea of applying opacity with a bunch of proprietary elements doesn’t appeal to you, try RGBA transparency (in CSS3) instead of background-color: rgba(0,0,0,0.5);.

98 If your visitors use IE6, avoid using px as the unit of measurement for text. IE6 users have no zoom functionality; they rely on text resizing, which doesn’t work with px. Use a relative unit instead, such as em.

99 Providing alternative stylesheets for supported browsers such as Firefox and Opera can enhance readability, as in the case of high-contrast alternatives.

100 If you find choosing colors difficult, web-based tools like Adobe Kuler, desktop tools like ColorSchemer Studio and mobile apps like Palettes Pro might help.